




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
.項目實訓的目的與要求1.1項目實訓目的課程設計總的目的在于加深對網頁設計與制作的基本知識的理解,網頁設計與制作技能綜合運用和提高,通過真實工作任務,使我們能設計出有一定水平的網頁并解決培養解決實際問題的能力,掌握實際網頁設計與制作開發流程和開發方法。具體的課程設計應達到以下目的:1.提高我們在實際操作中收集信息,對信息進行價值判斷,信息整理、加工的能力。2.在實際的項目任務中培養網頁設計方面的素養。3.在實際的項目任務中使我們網頁編程和制作的能力得到提高。4.培養相關知識和技能的綜合應用能力。5.掌握運用JAVAEE語言及數據庫原理知識進行系統分析和設計的方法課程的要求在于:考驗我們上課所學知識,我們能否獨自完成一個網頁系統的開發。我們要熟練應用JAVAEE所學的知識,與數據庫相結合,制作一個具有實用和美觀雙重功能的網頁系統。2.課題說明2.1需求分析博客是Blog的中文譯名,隨著網絡的發展,博客成為網民不可缺少的一部分。目前主流門戶網站,例如網易、新浪都開通了自己的博客頻道。除此之外,還出現了博客網站,也就是說在博客網站中僅能寫博客和看別人的博客,例如IT技術最有名的博客園。在本章中我們就來開發一個類似的網站系統。求賢人才網是一家專業于IT方向招聘的網站,為了更好的招聘到合適的人才,推出博客業務。求賢人才網通過博客用戶的技術水平來判斷他是否能夠勝任相應的工作,公司用戶也可以通過看博客用戶的文章看到相應的技術水平。求賢人才網將通過這種方式,招攬更多的人才,從而增加自己的招聘業務量。對于求賢人才網來說,最大的需求就是讓更多的用戶瀏覽和注冊,并且發表自己的博客文章。對于用戶而言,首先要能瀏覽其他用戶發表的文章,并且這項操作是應該不需要登錄的。用戶注冊并登錄后,要能夠發表自己的信息,從而能夠提供給別人查看。2.2開發工具與技術介紹硬件平臺:CPU:P41.8GHz;內存:256MB以上。軟件平臺:操作系統:Windows7Server;數據庫:MySQL;開發工具包:DreamweaverCS4,PhotoshopCS4,Eclipse;服務器:IIS5.1;瀏覽器:IE5.0及以上版本,推薦使用IE6.0;分辨率:最佳效果1024×768。3.總體設計3.1系統項目規劃該博客網站的功能主要是為了博客用戶設計開發的,用戶進入博客網站后,有三種選擇,注冊新用戶,登錄和瀏覽博客。通過注冊和登錄用戶可以獲取自己博客空間,如果不進行這些操作,用戶也可以瀏覽其他用戶的博客內容。進入自己博客中,用戶要能夠完成如下功能● 對自己的博客進行個性化設計● 發表日志● 上傳圖片和對圖片進行瀏覽在博客首頁中,是不區分用戶是否登錄的,用戶用能夠完成如下功能:● 瀏覽博客網站的所有文章● 瀏覽某一博客用戶發表的所有文章● 瀏覽某一博客用戶上傳的圖片● 對文章進行評論● 查看文章的點擊率● 查看文章的評論量3.2系統功能結構圖本系統首先需要對用戶進行身份驗證,驗證時判斷用戶是以注冊用戶還是普通游客。如果已是注冊用戶,則跳轉到對應的個人博客的頁面;如果是游客,則直接進入到博客網站首頁。下面是博客網站的功能結構圖。身份身份識別是否為注冊用戶是否為注冊用戶是否個人博客頁面個人博客頁面博客網站首頁博客網站首頁瀏覽所有文章進入他人博客發表文章個性化設置上傳圖片瀏覽所有文章進入他人博客發表文章個性化設置上傳圖片查看用戶圖片發表評論查看文章信息查看用戶圖片發表評論查看文章信息圖3.1模塊結構圖3.3數據庫設計本系統一共設計出5個實體,分別是用戶實體、文章實體、個性化實體、評論實體以及點擊量實體。用戶表用來存儲博客系統中建立自己的博客,并進行博客操作的客戶,包括用戶名、密碼、昵稱、密碼保護問題和密碼保護回答字段。表3.1用戶表字段名數據類型是否主鍵描述username文本(varchar)是用戶名password文本(varchar)否登錄密碼nickname文本(varchar)否昵稱question文本(varchar)否密碼保護問題answer文本(varchar)否密碼保護回答個性設置表用來儲存用戶對個人博客進行個性化設置的基本信息,包括用戶名、博客標題和個性簽名。表3.1個性設置表字段名數據類型是否主鍵描述username文本(varchar)是用戶名blogtitle文本(varchar)否博客標題idiograph文本(varchar)否個性簽名文章表用來存儲博客系統中博客文章的基本信息,包括文章的Id、文章標題、文章內容、發表用戶名、發表時間和評論數。表3.1文章表字段名數據類型是否主鍵描述Id整數(int)是文章Idtitle文本(varchar)否文章標題content文本(text)否文章內容username文本(varchar)否發表用戶名date日期否發表時間hasread整數(int)否評論數評論表用來存儲博客系統中所有評論的基本信息,包括評論Id、評論文章、評論內容和評論用戶。表3.1評論表字段名數據類型是否主鍵描述Id整數(int)是評論IdAid整數(int)否所屬文章IDcontent文本(text)否評論內容username文本(varchar)否評論用戶點擊量表用來存儲博客系統中點擊文章的基本信息,包括ID,文章ID,點擊者IP和點擊時間。表3.1點擊量表字段名數據類型是否主鍵描述Id整數(int)是點擊IDAid整數(int)否所屬文章IDip文本(varchar)否點擊者IPtime日期否點擊時間系統實現4.1博客系統登錄界面如下圖所示圖4.1博客系統登錄界面登錄界面關鍵代碼如下: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博客網站首頁進入登錄界面后,可以選擇不登錄,而是直接單擊“博客首頁”,從而進入博客系統首頁,在博客系統首頁中可以查看到該博客的網站中已經發表的博客文章,在博客網站的右半部分還可以看到文章的發表時間、點擊量、評論和發表用戶。圖4.2博客網站首頁下面是博客網站頁面的關鍵代碼:publicStringexecute()throwsException{ Pagepage=newPage(); //分頁信息 page.setCurrentPage(0); //設置當前頁為第一頁 page.setEveryPage(10); //每頁顯示10條記錄 Resultresult=articleService. showArticleByPage(page);//通過調用業務邏輯組件來完成查詢 page=result.getPage(); List<Article>all=result.getList();//獲得文章結果集 StringfilePath=ServletActionContext. getServletContext().getRealPath("/rss.xml");//設置訂閱文件地址 CreateRss.publishRss(all,filePath);//寫入訂閱文件 returnthis.SUCCESS; }4.3新博客注冊界面游客可以點擊新用戶注冊來注冊屬于自己的用戶。點擊新用戶注冊就可以進行新用戶注冊。圖4.3新博客注冊界面下面是新博客注冊頁面的關鍵代碼:publicStringexecute()throwsException{ //封裝一個user對象 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","注冊成功"); returnSUCCESS; }else{ request.setAttribute("url","register.jsp"); request.setAttribute("info","注冊失敗"); returnERROR; } }4.4個性化設置界面登陸博客成功后,這是將進入到自己的博客頁面,首先是讓用戶進行個性化設置。圖4.4個性化設置界面下面是個性化設計界面的關鍵代碼: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(); //設置用戶名 blogInfo.setUsername(username); //設置博客標題 blogInfo.setBlogtitle(blogtitle); //設置個性簽名 blogInfo.setIdiograph(idiograph); //調用業務邏輯組件來完成設置 blogInfoService.setBlogInfo(blogInfo); returnthis.SUCCESS; }4.5寫日志頁面單擊“用戶首頁”超鏈接,可以查看自己已寫完的所有博客文章,這是和游客相同的操作,單擊“寫日記”超鏈接,就會進入寫日記頁面。圖4.5寫日志頁面下面是寫日記界面的關鍵代碼:publicStringexecute()throwsException{ Mapsession=ActionContext.getContext().getSession(); Stringusername=(String)session.get("username"); //封裝一個PO類的對象 Articlearticle=newArticle(); article.setTitle(title); article.setContent(content); article.setUsername(username); article.setDate(newDate()); article.setHasread(0); articleService.addArticle(article); returnthis.SUCCESS; }}4.6相冊頁面在個人博客中,單擊“相冊”超鏈接,就會進入到相冊頁面。圖4.6相冊頁面下面是相冊頁面的關鍵代碼:publicStringexecute()throwsException{//獲得username Mapsession=ServletActionContext.getContext().getSession(); Stringusername=(String)session.get("username");//創建一個輸入流 InputStreamis=newFileInputStream(myFile);//設置文件保存目錄 Filetofile=newFile(photoPath,filename);//使用輸出流來包裝目標文件 OutputStreamos=newFileOutputStream(tofile); byte[]buffer=newbyte[1024]; intlength=0; while((length=is.read(buffer))>0){ os.write(buffer,0,length); }//關閉輸入流 is.close();//關閉輸出流 os.close(); returnthis.SUCCESS;}開發技巧與實現方法5.1在Struts中使用攔截器進行用戶登錄的實現在網站中有些功能是需要用戶必須登錄才能操作的,例如博客網站中的發布文章,因為該操作是不定位置的,所以直接在該功能上加上一個控制層是不合適的。如果要完成該功能,在Struts2中就是采用攔截器的概念,在操作前先經過攔截器,通過攔截器判斷用戶是否登錄。如果已經登錄,則可以通過;如果沒有登錄,則返回讓用戶進行登錄。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在攔截器中進行配置攔截器開發完成后,還是不能起到效果的,還需要在Struts配置文件struts.xml中進行配置。<interceptors> <interceptorname="userInterceptor"class="erceptor.UserInterceptor"></interceptor> </interceptors>5.3利用Hibernate技術進行個人博客操作當進行個人博客操作時,是要將用戶輸入的信息保存到數據庫中的。在本系統項目中,進行數據庫操作是通過Hibernate技術完成的,從而使DAO方法應用也更加簡單。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進行個人博客操作后,進行配置修改因為本項目是采用Spring進行處理,所以需要配置文件中對DAO進行配置。<beanid="userDAO"class="com.sanqing.dao.UserDAOImpl"> <propertyname="hibernateTemplate"> <refbean="hibernateTemplate"/> </property> </bean>5.5在Action中進行超鏈接的調用在顯示所有文章頁面中,每一個文章標題都是超鏈接,單擊文章標題就會顯示該文章的所有信息,包括內容、評論和點擊數。這些都將在查看文章Action中進行調用。packagecom.sanqing.dao;publicclassArticleDAOImplextendsHibernateDaoSupportimplementsArticleDAO{publicArticlequeryById(intid){ Listfind=this.getHibernateTemplate().find("selectartfromArticleartwhereart.id=?",id); return(Article)find.get(0); }}項目實訓總結通過本次課程設計,我感受頗多,盡管上課時也認真聽了老師的講課,但是已開始面對自己的題目時,還是有些不知所措,都不知道如何下手,后來去圖書館借了幾本相關的書籍,心里在感覺有了一些底。經過這差不多四個星期來的學習與編碼,總算還是收獲不少,對JavaEE的認識也更加的深刻了。JSP是一門新技術,他基于JavaServlet以及整個JavaEE框架體系的Web開發技術。從網上得知JavaEE的中文問題歷史悠久,連綿不絕,至今也
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論