博客網(wǎng)站系統(tǒng)實(shí)訓(xùn)報(bào)告_第1頁(yè)
博客網(wǎng)站系統(tǒng)實(shí)訓(xùn)報(bào)告_第2頁(yè)
博客網(wǎng)站系統(tǒng)實(shí)訓(xùn)報(bào)告_第3頁(yè)
博客網(wǎng)站系統(tǒng)實(shí)訓(xùn)報(bào)告_第4頁(yè)
博客網(wǎng)站系統(tǒng)實(shí)訓(xùn)報(bào)告_第5頁(yè)
已閱讀5頁(yè),還剩13頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

.項(xiàng)目實(shí)訓(xùn)的目的與要求1.1項(xiàng)目實(shí)訓(xùn)目的課程設(shè)計(jì)總的目的在于加深對(duì)網(wǎng)頁(yè)設(shè)計(jì)與制作的基本知識(shí)的理解,網(wǎng)頁(yè)設(shè)計(jì)與制作技能綜合運(yùn)用和提高,通過(guò)真實(shí)工作任務(wù),使我們能設(shè)計(jì)出有一定水平的網(wǎng)頁(yè)并解決培養(yǎng)解決實(shí)際問(wèn)題的能力,掌握實(shí)際網(wǎng)頁(yè)設(shè)計(jì)與制作開(kāi)發(fā)流程和開(kāi)發(fā)方法。具體的課程設(shè)計(jì)應(yīng)達(dá)到以下目的:1.提高我們?cè)趯?shí)際操作中收集信息,對(duì)信息進(jìn)行價(jià)值判斷,信息整理、加工的能力。2.在實(shí)際的項(xiàng)目任務(wù)中培養(yǎng)網(wǎng)頁(yè)設(shè)計(jì)方面的素養(yǎng)。3.在實(shí)際的項(xiàng)目任務(wù)中使我們網(wǎng)頁(yè)編程和制作的能力得到提高。4.培養(yǎng)相關(guān)知識(shí)和技能的綜合應(yīng)用能力。5.掌握運(yùn)用JAVAEE語(yǔ)言及數(shù)據(jù)庫(kù)原理知識(shí)進(jìn)行系統(tǒng)分析和設(shè)計(jì)的方法課程的要求在于:考驗(yàn)我們上課所學(xué)知識(shí),我們能否獨(dú)自完成一個(gè)網(wǎng)頁(yè)系統(tǒng)的開(kāi)發(fā)。我們要熟練應(yīng)用JAVAEE所學(xué)的知識(shí),與數(shù)據(jù)庫(kù)相結(jié)合,制作一個(gè)具有實(shí)用和美觀雙重功能的網(wǎng)頁(yè)系統(tǒng)。2.課題說(shuō)明2.1需求分析博客是Blog的中文譯名,隨著網(wǎng)絡(luò)的發(fā)展,博客成為網(wǎng)民不可缺少的一部分。目前主流門(mén)戶網(wǎng)站,例如網(wǎng)易、新浪都開(kāi)通了自己的博客頻道。除此之外,還出現(xiàn)了博客網(wǎng)站,也就是說(shuō)在博客網(wǎng)站中僅能寫(xiě)博客和看別人的博客,例如IT技術(shù)最有名的博客園。在本章中我們就來(lái)開(kāi)發(fā)一個(gè)類似的網(wǎng)站系統(tǒng)。求賢人才網(wǎng)是一家專業(yè)于IT方向招聘的網(wǎng)站,為了更好的招聘到合適的人才,推出博客業(yè)務(wù)。求賢人才網(wǎng)通過(guò)博客用戶的技術(shù)水平來(lái)判斷他是否能夠勝任相應(yīng)的工作,公司用戶也可以通過(guò)看博客用戶的文章看到相應(yīng)的技術(shù)水平。求賢人才網(wǎng)將通過(guò)這種方式,招攬更多的人才,從而增加自己的招聘業(yè)務(wù)量。對(duì)于求賢人才網(wǎng)來(lái)說(shuō),最大的需求就是讓更多的用戶瀏覽和注冊(cè),并且發(fā)表自己的博客文章。對(duì)于用戶而言,首先要能瀏覽其他用戶發(fā)表的文章,并且這項(xiàng)操作是應(yīng)該不需要登錄的。用戶注冊(cè)并登錄后,要能夠發(fā)表自己的信息,從而能夠提供給別人查看。2.2開(kāi)發(fā)工具與技術(shù)介紹硬件平臺(tái):CPU:P41.8GHz;內(nèi)存:256MB以上。軟件平臺(tái):操作系統(tǒng):Windows7Server;數(shù)據(jù)庫(kù):MySQL;開(kāi)發(fā)工具包:DreamweaverCS4,PhotoshopCS4,Eclipse;服務(wù)器:IIS5.1;瀏覽器:IE5.0及以上版本,推薦使用IE6.0;分辨率:最佳效果1024×768。3.總體設(shè)計(jì)3.1系統(tǒng)項(xiàng)目規(guī)劃該博客網(wǎng)站的功能主要是為了博客用戶設(shè)計(jì)開(kāi)發(fā)的,用戶進(jìn)入博客網(wǎng)站后,有三種選擇,注冊(cè)新用戶,登錄和瀏覽博客。通過(guò)注冊(cè)和登錄用戶可以獲取自己博客空間,如果不進(jìn)行這些操作,用戶也可以瀏覽其他用戶的博客內(nèi)容。進(jìn)入自己博客中,用戶要能夠完成如下功能● 對(duì)自己的博客進(jìn)行個(gè)性化設(shè)計(jì)● 發(fā)表日志● 上傳圖片和對(duì)圖片進(jìn)行瀏覽在博客首頁(yè)中,是不區(qū)分用戶是否登錄的,用戶用能夠完成如下功能:● 瀏覽博客網(wǎng)站的所有文章● 瀏覽某一博客用戶發(fā)表的所有文章● 瀏覽某一博客用戶上傳的圖片● 對(duì)文章進(jìn)行評(píng)論● 查看文章的點(diǎn)擊率● 查看文章的評(píng)論量3.2系統(tǒng)功能結(jié)構(gòu)圖本系統(tǒng)首先需要對(duì)用戶進(jìn)行身份驗(yàn)證,驗(yàn)證時(shí)判斷用戶是以注冊(cè)用戶還是普通游客。如果已是注冊(cè)用戶,則跳轉(zhuǎn)到對(duì)應(yīng)的個(gè)人博客的頁(yè)面;如果是游客,則直接進(jìn)入到博客網(wǎng)站首頁(yè)。下面是博客網(wǎng)站的功能結(jié)構(gòu)圖。身份身份識(shí)別是否為注冊(cè)用戶是否為注冊(cè)用戶是否個(gè)人博客頁(yè)面?zhèn)€人博客頁(yè)面博客網(wǎng)站首頁(yè)博客網(wǎng)站首頁(yè)瀏覽所有文章進(jìn)入他人博客發(fā)表文章個(gè)性化設(shè)置上傳圖片瀏覽所有文章進(jìn)入他人博客發(fā)表文章個(gè)性化設(shè)置上傳圖片查看用戶圖片發(fā)表評(píng)論查看文章信息查看用戶圖片發(fā)表評(píng)論查看文章信息圖3.1模塊結(jié)構(gòu)圖3.3數(shù)據(jù)庫(kù)設(shè)計(jì)本系統(tǒng)一共設(shè)計(jì)出5個(gè)實(shí)體,分別是用戶實(shí)體、文章實(shí)體、個(gè)性化實(shí)體、評(píng)論實(shí)體以及點(diǎn)擊量實(shí)體。用戶表用來(lái)存儲(chǔ)博客系統(tǒng)中建立自己的博客,并進(jìn)行博客操作的客戶,包括用戶名、密碼、昵稱、密碼保護(hù)問(wèn)題和密碼保護(hù)回答字段。表3.1用戶表字段名數(shù)據(jù)類型是否主鍵描述username文本(varchar)是用戶名password文本(varchar)否登錄密碼nickname文本(varchar)否昵稱question文本(varchar)否密碼保護(hù)問(wèn)題answer文本(varchar)否密碼保護(hù)回答個(gè)性設(shè)置表用來(lái)儲(chǔ)存用戶對(duì)個(gè)人博客進(jìn)行個(gè)性化設(shè)置的基本信息,包括用戶名、博客標(biāo)題和個(gè)性簽名。表3.1個(gè)性設(shè)置表字段名數(shù)據(jù)類型是否主鍵描述username文本(varchar)是用戶名blogtitle文本(varchar)否博客標(biāo)題idiograph文本(varchar)否個(gè)性簽名文章表用來(lái)存儲(chǔ)博客系統(tǒng)中博客文章的基本信息,包括文章的Id、文章標(biāo)題、文章內(nèi)容、發(fā)表用戶名、發(fā)表時(shí)間和評(píng)論數(shù)。表3.1文章表字段名數(shù)據(jù)類型是否主鍵描述Id整數(shù)(int)是文章Idtitle文本(varchar)否文章標(biāo)題content文本(text)否文章內(nèi)容username文本(varchar)否發(fā)表用戶名date日期否發(fā)表時(shí)間hasread整數(shù)(int)否評(píng)論數(shù)評(píng)論表用來(lái)存儲(chǔ)博客系統(tǒng)中所有評(píng)論的基本信息,包括評(píng)論Id、評(píng)論文章、評(píng)論內(nèi)容和評(píng)論用戶。表3.1評(píng)論表字段名數(shù)據(jù)類型是否主鍵描述Id整數(shù)(int)是評(píng)論IdAid整數(shù)(int)否所屬文章IDcontent文本(text)否評(píng)論內(nèi)容username文本(varchar)否評(píng)論用戶點(diǎn)擊量表用來(lái)存儲(chǔ)博客系統(tǒng)中點(diǎn)擊文章的基本信息,包括ID,文章ID,點(diǎn)擊者IP和點(diǎn)擊時(shí)間。表3.1點(diǎn)擊量表字段名數(shù)據(jù)類型是否主鍵描述Id整數(shù)(int)是點(diǎn)擊IDAid整數(shù)(int)否所屬文章IDip文本(varchar)否點(diǎn)擊者IPtime日期否點(diǎn)擊時(shí)間系統(tǒng)實(shí)現(xiàn)4.1博客系統(tǒng)登錄界面如下圖所示圖4.1博客系統(tǒng)登錄界面登錄界面關(guān)鍵代碼如下:publicStringexecute()throwsException{ Useruser=newUser(); user.setUsername(username); user.setPassword(password); //獲得request HttpServletRequestrequest=ServletActionContext.getRequest(); if(userService.loginUser(user)){ request.setAttribute("url","user/getBlogInfo.action"); request.setAttribute("info","登陸成功"); //將username保存到session范圍中// HttpSessionsession=request.getSession(); Mapsession=ActionContext.getContext().getSession();// session.setAttribute("username",username); session.put("username",username); returnSUCCESS; }else{ request.setAttribute("url","login.jsp"); request.setAttribute("info","登陸失敗"); returnERROR; } }4.2博客網(wǎng)站首頁(yè)進(jìn)入登錄界面后,可以選擇不登錄,而是直接單擊“博客首頁(yè)”,從而進(jìn)入博客系統(tǒng)首頁(yè),在博客系統(tǒng)首頁(yè)中可以查看到該博客的網(wǎng)站中已經(jīng)發(fā)表的博客文章,在博客網(wǎng)站的右半部分還可以看到文章的發(fā)表時(shí)間、點(diǎn)擊量、評(píng)論和發(fā)表用戶。圖4.2博客網(wǎng)站首頁(yè)下面是博客網(wǎng)站頁(yè)面的關(guān)鍵代碼:publicStringexecute()throwsException{ Pagepage=newPage(); //分頁(yè)信息 page.setCurrentPage(0); //設(shè)置當(dāng)前頁(yè)為第一頁(yè) page.setEveryPage(10); //每頁(yè)顯示10條記錄 Resultresult=articleService. showArticleByPage(page);//通過(guò)調(diào)用業(yè)務(wù)邏輯組件來(lái)完成查詢 page=result.getPage(); List<Article>all=result.getList();//獲得文章結(jié)果集 StringfilePath=ServletActionContext. getServletContext().getRealPath("/rss.xml");//設(shè)置訂閱文件地址 CreateRss.publishRss(all,filePath);//寫(xiě)入訂閱文件 returnthis.SUCCESS; }4.3新博客注冊(cè)界面游客可以點(diǎn)擊新用戶注冊(cè)來(lái)注冊(cè)屬于自己的用戶。點(diǎn)擊新用戶注冊(cè)就可以進(jìn)行新用戶注冊(cè)。圖4.3新博客注冊(cè)界面下面是新博客注冊(cè)頁(yè)面的關(guān)鍵代碼:publicStringexecute()throwsException{ //封裝一個(gè)user對(duì)象 Useruser=newUser(); user.setUsername(username); user.setPassword(password); user.setNickname(nickname); user.setQuestion(question); user.setAnswer(answer); //獲得request HttpServletRequestrequest=ServletActionContext.getRequest(); if(userService.registerUser(user)){ request.setAttribute("url","login.jsp"); request.setAttribute("info","注冊(cè)成功"); returnSUCCESS; }else{ request.setAttribute("url","register.jsp"); request.setAttribute("info","注冊(cè)失敗"); returnERROR; } }4.4個(gè)性化設(shè)置界面登陸博客成功后,這是將進(jìn)入到自己的博客頁(yè)面,首先是讓用戶進(jìn)行個(gè)性化設(shè)置。圖4.4個(gè)性化設(shè)置界面下面是個(gè)性化設(shè)計(jì)界面的關(guān)鍵代碼:publicStringexecute()throwsException{// //獲得request// HttpServletRequestrequest=ServletActionContext.getRequest();// //獲得session// HttpSessionsession=request.getSession();// //獲得username// Stringusername=(String)session.getAttribute("username"); Mapsession=ActionContext.getContext().getSession(); Stringusername=(String)session.get("username"); BlogInfoblogInfo=newBlogInfo(); //設(shè)置用戶名 blogInfo.setUsername(username); //設(shè)置博客標(biāo)題 blogInfo.setBlogtitle(blogtitle); //設(shè)置個(gè)性簽名 blogInfo.setIdiograph(idiograph); //調(diào)用業(yè)務(wù)邏輯組件來(lái)完成設(shè)置 blogInfoService.setBlogInfo(blogInfo); returnthis.SUCCESS; }4.5寫(xiě)日志頁(yè)面單擊“用戶首頁(yè)”超鏈接,可以查看自己已寫(xiě)完的所有博客文章,這是和游客相同的操作,單擊“寫(xiě)日記”超鏈接,就會(huì)進(jìn)入寫(xiě)日記頁(yè)面。圖4.5寫(xiě)日志頁(yè)面下面是寫(xiě)日記界面的關(guān)鍵代碼:publicStringexecute()throwsException{ Mapsession=ActionContext.getContext().getSession(); Stringusername=(String)session.get("username"); //封裝一個(gè)PO類的對(duì)象 Articlearticle=newArticle(); article.setTitle(title); article.setContent(content); article.setUsername(username); article.setDate(newDate()); article.setHasread(0); articleService.addArticle(article); returnthis.SUCCESS; }}4.6相冊(cè)頁(yè)面在個(gè)人博客中,單擊“相冊(cè)”超鏈接,就會(huì)進(jìn)入到相冊(cè)頁(yè)面。圖4.6相冊(cè)頁(yè)面下面是相冊(cè)頁(yè)面的關(guān)鍵代碼:publicStringexecute()throwsException{//獲得username Mapsession=ServletActionContext.getContext().getSession(); Stringusername=(String)session.get("username");//創(chuàng)建一個(gè)輸入流 InputStreamis=newFileInputStream(myFile);//設(shè)置文件保存目錄 Filetofile=newFile(photoPath,filename);//使用輸出流來(lái)包裝目標(biāo)文件 OutputStreamos=newFileOutputStream(tofile); byte[]buffer=newbyte[1024]; intlength=0; while((length=is.read(buffer))>0){ os.write(buffer,0,length); }//關(guān)閉輸入流 is.close();//關(guān)閉輸出流 os.close(); returnthis.SUCCESS;}開(kāi)發(fā)技巧與實(shí)現(xiàn)方法5.1在Struts中使用攔截器進(jìn)行用戶登錄的實(shí)現(xiàn)在網(wǎng)站中有些功能是需要用戶必須登錄才能操作的,例如博客網(wǎng)站中的發(fā)布文章,因?yàn)樵摬僮魇遣欢ㄎ恢玫模灾苯釉谠摴δ苌霞由弦粋€(gè)控制層是不合適的。如果要完成該功能,在Struts2中就是采用攔截器的概念,在操作前先經(jīng)過(guò)攔截器,通過(guò)攔截器判斷用戶是否登錄。如果已經(jīng)登錄,則可以通過(guò);如果沒(méi)有登錄,則返回讓用戶進(jìn)行登錄。packageerceptor;importjava.util.Map;importcom.opensymphony.xwork2.Action;importcom.opensymphony.xwork2.ActionContext;importcom.opensymphony.xwork2.ActionInvocation;importerceptor.AbstractInterceptor;publicclassUserInterceptorextendsAbstractInterceptor{publicStringintercept(ActionInvocationinvocation)throwsException{ ActionContextcontext=invocation.getInvocationContext(); Mapsession=context.getContext().getSession(); Stringusername=(String)session.get("username"); if(username==null||"".equals(username)){ returnAction.LOGIN; }else{ returninvocation.invoke(); } }}5.2在攔截器中進(jìn)行配置攔截器開(kāi)發(fā)完成后,還是不能起到效果的,還需要在Struts配置文件struts.xml中進(jìn)行配置。<interceptors> <interceptorname="userInterceptor"class="erceptor.UserInterceptor"></interceptor> </interceptors>5.3利用Hibernate技術(shù)進(jìn)行個(gè)人博客操作當(dāng)進(jìn)行個(gè)人博客操作時(shí),是要將用戶輸入的信息保存到數(shù)據(jù)庫(kù)中的。在本系統(tǒng)項(xiàng)目中,進(jìn)行數(shù)據(jù)庫(kù)操作是通過(guò)Hibernate技術(shù)完成的,從而使DAO方法應(yīng)用也更加簡(jiǎn)單。importcom.sanqing.po.User;publicclassUserDAOImplextendsHibernateDaoSupportimplementsUserDAO{publicvoidadd(Useruser){ this.getHibernateTemplate().save(user); }publicvoiddelete(Useruser){}publicListqueryAll(){ returnnull; }publicUserqueryByID(Stringusername){ Listlist=this.getHibernateTemplate().find("selectuserfromUseruserwhereuser.username='"+username+"'"); if(list.size()==0){ returnnull; }else{ return(User)list.get(0); } }}5.4進(jìn)行個(gè)人博客操作后,進(jìn)行配置修改因?yàn)楸卷?xiàng)目是采用Spring進(jìn)行處理,所以需要配置文件中對(duì)DAO進(jìn)行配置。<beanid="userDAO"class="com.sanqing.dao.UserDAOImpl"> <propertyname="hibernateTemplate"> <refbean="hibernateTemplate"/> </property> </bean>5.5在Action中進(jìn)行超鏈接的調(diào)用在顯示所有文章頁(yè)面中,每一個(gè)文章標(biāo)題都是超鏈接,單擊文章標(biāo)題就會(huì)顯示該文章的所有信息,包括內(nèi)容、評(píng)論和點(diǎn)擊數(shù)。這些都將在查看文章Action中進(jìn)行調(diào)用。packagecom.sanqing.dao;publicclassArticleDAOImplextendsHibernateDaoSupportimplementsArticleDAO{publicArticlequeryById(intid){ Listfind=this.getHibernateTemplate().find("selectartfromArticleartwhereart.id=?",id); return(Article)find.get(0); }}項(xiàng)目實(shí)訓(xùn)總結(jié)通過(guò)本次課程設(shè)計(jì),我感受頗多,盡管上課時(shí)也認(rèn)真聽(tīng)了老師的講課,但是已開(kāi)始面對(duì)自己的題目時(shí),還是有些不知所措,都不知道如何下手,后來(lái)去圖書(shū)館借了幾本相關(guān)的書(shū)籍,心里在感覺(jué)有了一些底。經(jīng)過(guò)這差不多四個(gè)星期來(lái)的學(xué)習(xí)與編碼,總算還是收獲不少,對(duì)JavaEE的認(rèn)識(shí)也更加的深刻了。JSP是一門(mén)新技術(shù),他基于JavaServlet以及整個(gè)JavaEE框架體系的Web開(kāi)發(fā)技術(shù)。從網(wǎng)上得知JavaEE的中文問(wèn)題歷史悠久,連綿不絕,至今也

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論