版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p><b> 信息理工學院</b></p><p> 課程設計(實訓)報告</p><p> 系 部 _ 信息工程系__ 專 業(yè) _____________</p><p> 班 級 學 號 ____________ </p><p> 姓
2、 名 _______________課 題 _____________</p><p> 指導教師 報告成績 _ _ </p><p> 日 期:2011年 12 月 28 日</p><p><b> 目 錄</b></p><p><b&g
3、t; 目 錄I</b></p><p> 第1章基礎知識1</p><p> 1.1MySql數據庫1</p><p> 1.2JSP與Servlet1</p><p> 1.3 Struts框架3</p><p> 第2章 總體設計5</p><p&g
4、t; 2.1 需求分析5</p><p> 2.2 數據庫設計5</p><p> 2.3 功能模塊簡介6</p><p> 2.4 框架的應用9</p><p> 第3章 詳細設計13</p><p> 第3章 詳細設計13</p><p> 3.1 新聞顯示功能1
5、3</p><p> 3.2 用戶注冊功能13</p><p> 3.3 修改注冊信息功能13</p><p> 3.4 管理新聞功能13</p><p> 3.5 添加新聞功能14</p><p> 3.6管理用戶14</p><p><b> 3.7注銷14
6、</b></p><p> 第4章 功能實現15</p><p> 4.1 新聞顯示功能15</p><p> 4.2 用戶注冊功能17</p><p> 4.3 修改注冊信息功能19</p><p> 4.4 管理新聞功能20</p><p> 4.5 修改新
7、聞功能22</p><p> 4.6管理用戶24</p><p><b> 4.7注銷25</b></p><p><b> 第5章 總結27</b></p><p> 第6章參考文獻27</p><p><b> 基礎知識</b>&
8、lt;/p><p><b> MySql數據庫</b></p><p> 今天MySQL已被廣泛地應用在Internet上的中小型網站中。由于其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點,許多中小型網站為了降低網站總體擁有成本而選擇了MySQL作為網站數據庫。</p><p> MySQL是一個真正的多用戶、多線程SQL數據庫服務
9、器。系統(tǒng)采用加載純Java數據庫驅動程序的方式操作數據庫,目前mysql還不支持橋連接。</p><p> SQL(結構化查詢語言)是世界上最流行的和標準化的數據庫語言。MySQL是以一個客戶機/服務器結構的實現,它由一個服務器守護程序mysqld和很多不同的客戶程序和庫組成,并且能夠支持多平臺。</p><p> JSP與Servlet</p><p> J
10、ava Servlet是一種獨立于平臺和協(xié)議的服務器端的Java應用程序,可以生成動態(tài)的Web頁面。</p><p> Java Servlet是位于Web 服務器內部的服務器端的Java應用程序,與傳統(tǒng)的從命令行啟動的Java應用程序不同,Servlet由Web服務器進行加載,該Web服務器必須包含支持Servlet的Java虛擬機。</p><p> Java Servlet與Ap
11、plet 的比較:</p><p><b> 相似之處:</b></p><p> 它們不是獨立的應用程序,沒有main()方法。</p><p> 它們不是由用戶或程序員調用,而是由另外一個應用程序(容器)調用。</p><p> 它們都有一個生存周期,包含init()和destroy()方法。</p&g
12、t;<p><b> 不同之處:</b></p><p> Applet具有很好的圖形界面(AWT),與瀏覽器一起,在客戶端運行。</p><p> Java Servlet則沒有圖形界面,運行在服務器端。</p><p> Java Servlet與CGI(Common Gateway Interface) 的比較:&l
13、t;/p><p> 與傳統(tǒng)的CGI和許多其他類似CGI的技術相比,Java Servlet具有更高的效率,更容易使用,功能更強大,具有更好的可移植性,更節(jié)省投資。在未來的技術發(fā)展過程中,Servlet有可能徹底取代CGI。</p><p><b> 高效</b></p><p> 在傳統(tǒng)的CGI中,每個請求都要啟動一個新的進程,如果CGI程序
14、本身的執(zhí)行時間較短,啟動進程所需要的開銷很可能反而超過實際執(zhí)行時間。而在Servlet中,每個請求由一個輕量級的Java線程處理(而不是重量級的操作系統(tǒng)進程)。</p><p> 在傳統(tǒng)CGI中,如果有N個并發(fā)的對同一CGI程序的請求,則該CGI程序的代碼在內存中重復裝載了N次;而對于Java Servlet,處理請求的是N個線程,只需要一份Servlet類代碼。在性能優(yōu)化方面,Servlet也比CGI有著更多
15、的選擇。</p><p><b> 方便</b></p><p> Java Servlet提供了大量的實用工具例程,例如自動地解析和解碼HTML表單數據、讀取和設置HTTP頭、處理Cookie、跟蹤會話狀態(tài)等。</p><p><b> 功能強大</b></p><p> 在Java Se
16、rvlet中,許多使用傳統(tǒng)CGI程序很難完成的任務都可以輕松地完成。例如,Java Servlet能夠直接和Web服務器交互,而普通的CGI程序不能。Servlet還能夠在各個程序之間共享數據,使得數據庫連接池之類的功能很容易實現。</p><p><b> 可移植性好</b></p><p> Java Servlet用Java編寫,Servlet API具有完
17、善的標準。因此,為IPlanet Enterprise Server寫的Servlet無需任何實質上的改動即可移植到Apache、Microsoft IIS或者WebStar。幾乎所有的主流服務器都直接或通過插件支持Servlet。</p><p><b> 節(jié)省投資</b></p><p> 不僅有許多廉價甚至免費的Web服務器可供個人或小規(guī)模網站使用,而且對于
18、現有的服務器,如果它不支持Servlet的話,要加上這部分功能也往往是免費的(或只需要極少的投資)。</p><p> Java Servlet與JSP(JavaServer Pages) 的比較:</p><p> JavaServer Pages(JSP)是一種實現普通靜態(tài)HTML和動態(tài)HTML混合編碼的技術,JSP并沒有增加任何本質上不能用Servlet實現的功能。但是,在 JS
19、P中編寫靜態(tài)HTML更加方便,不必再用println語句來輸出每一行HTML代碼。更重要的是,借助內容和外觀的分離,頁面制作中不同性質的任務可以方便地分開:比如,由頁面設計者進行HTML設計,同時留出供Java Servlet程序員插入動態(tài)內容的空間。</p><p> 1.3 Struts框架</p><p> 在我學習Struts框架時,我本人更愿意看到Struts的本質,其實S
20、trurts框架就是一個核心類ActionServlet,這個類把所有請求都劫走了,然后根據請求的URL轉發(fā)到相應的Action上,讓Action處理相應的系統(tǒng)業(yè)務,表單數據由Struts替我們進行封裝FormBean中,我們只需取出來進行操作。在有Struts框架編程時我們不需要認真考慮里面的機制,而是要學會如何更好的去運用它。</p><p> 如果有一天我愿意,我會在我做的項目中手動編寫一個框架。<
21、/p><p> Strusts框架的基本組成如下:</p><p> 1,Client browser(客戶瀏覽器) 來自客戶瀏覽器的每個 HTTP 請求創(chuàng)建一個事件。Web 容器將用一個 HTTP 響應作出響應。 2,Controller(控制器)
22、60; 控制器接收來自瀏覽器的請求,并決定將這個請求發(fā)往何處。 就 Struts 而言,控制器是以 servlet 實現的一個命令設計模式。 struts-config.xml 文件配置控制器命令?! ?,業(yè)務邏輯 業(yè)務邏輯更新模型的狀態(tài),并幫助控制應用程序的流程。 就 Struts 而言,這是通過作為實際業(yè)務邏輯“瘦”包裝的
23、Action 類完成的?! ?,Model(模型)的狀態(tài) 模型表示應用程序的狀態(tài)。業(yè)務對象更新應用程序的狀態(tài)。 ActionForm bean 在會話級或請求級表示模型的狀態(tài),而不是在持久級。 JSP 文件使用 JSP 標記讀取來自 ActionForm bean 的信息。
24、60; 5,View(視圖) 視圖就是一個 JSP 文件。其中沒有流程邏輯,沒有業(yè)務邏輯,也沒有模型信息 —— 只有標記。 標記是使</p><p><b> 第2章 總體設計</b></p><p><b> 2.1 需求分析</b></p
25、><p> 本系統(tǒng)是新聞發(fā)布系統(tǒng)。由于網站新聞需要頻繁性更新,每次更新管理員都要到服務器上更新,給管理員管理網站造成不便,因這種需求本系統(tǒng)誕生了。</p><p> 在系統(tǒng)開發(fā)過程中尋找需求是一件十分重要的工作,在認真分析和調查后確定了本系統(tǒng)的需求要求。</p><p> 本系統(tǒng)參與者:管理員、普通用戶、瀏覽者。</p><p><b
26、> 系統(tǒng)功能模塊:</b></p><p><b> 新聞瀏覽</b></p><p><b> 用戶登陸</b></p><p><b> 用戶注冊</b></p><p><b> 用戶修改信息</b></p>
27、<p><b> 管理新聞</b></p><p><b> 添加新聞</b></p><p><b> 管理用戶</b></p><p><b> 注銷</b></p><p><b> 圖2-1</b><
28、;/p><p><b> 2.2 數據庫設計</b></p><p> 數據庫命名為mynews,三張表user,news,admin。</p><p> User表字段(username,password,phone,qq)</p><p><b> 圖2-2</b></p>&
29、lt;p> News表字段(id,title,author,message,post_time,username)</p><p><b> 圖2-3</b></p><p> Admin表字段(username,password)</p><p><b> 圖2-4</b></p><p
30、> 2.3 功能模塊簡介</p><p><b> 新聞瀏覽</b></p><p> 首頁顯示網站所有新聞列表,根據新聞的數量分頁,網站顧客可以自由瀏覽新聞。</p><p><b> 用戶登陸</b></p><p> 用戶登界面,用戶需根據自己的類型(普通用戶,管理員)進行選擇
31、性登陸,登錄時需要填寫驗證碼。注意本系統(tǒng)部分功能只有在登陸后才被激活,且不同用戶類型登陸后所具有的功能也不同。</p><p> 圖2-5是用戶登錄用例圖</p><p><b> 圖2-5</b></p><p><b> 用戶注冊</b></p><p> 注冊模塊僅服務于普通用戶,在網
32、站上注冊的用戶身份僅是普通用戶,管理員需到服務器注冊信息。</p><p> 圖2-6新用戶注冊狀態(tài)圖</p><p><b> 圖2-6</b></p><p><b> 用戶修改信息</b></p><p> 普通用戶登陸后才能修改自己的信息,為了確保系統(tǒng)安全系統(tǒng)管理員不能在客戶端修改信
33、息,必須到服務器數據庫直接修改信息。</p><p> 圖2-7用戶修改信息序列圖</p><p><b> 圖2-7</b></p><p><b> 管理新聞</b></p><p> 用戶登陸后此模塊被激活,為了確保其他用戶在本站的利益,用戶僅可以管理自己的新聞,管理新聞包括(刪除,修
34、改),系統(tǒng)管理員可以管理所有用戶發(fā)表的新聞。</p><p> 圖2-8用戶管理新聞用例圖</p><p><b> 圖2-8</b></p><p><b> 添加新聞</b></p><p> 用戶登錄后可以發(fā)布新聞,發(fā)布的新聞將在系統(tǒng)首頁新聞列表中顯示出來,用戶在發(fā)表新聞時若不填寫作者
35、,系統(tǒng)默認當前用戶為作者。發(fā)表時間不用填寫,由系統(tǒng)根據服務器時間默認。</p><p><b> 管理用戶</b></p><p> 此模塊專屬于系統(tǒng)管理員,系統(tǒng)管理員登陸后,可以查看本系統(tǒng)存在的所有普通用戶的信息,信息包括(用戶名,密碼,聯系電話,即時通信QQ)。</p><p> 管理員可以根據需要,對系統(tǒng)中的任何用戶進行封號處理。&
36、lt;/p><p> 圖2-9管理員管理用戶用例圖</p><p><b> 圖2-9</b></p><p><b> 注銷</b></p><p> 當用戶登錄后,不再進行操作時,為了減少服務器資源的浪費和自身賬戶的安全性,可以進行注銷。</p><p><b&
37、gt; 2.4 框架的應用</b></p><p> 使用struts框架需要搭建環(huán)境</p><p> 拷貝struts lib下的所有jar到WEB-INF/lib下</p><p> 修改web.xml文件,配置ActionServlet</p><p> 指定struts-config.xml的位置</p&
38、gt;<p> ActionServlet的日志輸出等級</p><p> 配置Apache的第三方組件的日志輸出等級</p><p> 當Tomcat啟動的時候執(zhí)行ActionServlet的初始化方法</p><p> 提供struts-config.xml文件</p><p> 應用struts創(chuàng)建登錄項目<
39、;/p><p> 創(chuàng)建jsp頁面(login.jsp,success.jsp,error.jsp)</p><p> 創(chuàng)建LoginActionForm.java,做數據收集的。屬性名與表單元素名一致</p><p> 創(chuàng)建LoginAction.java</p><p> 配置struts-config.xml文件</p>
40、<p> ActionServlet</p><p> 由Struts提供:org.apache.struts.action.ActionServlet</p><p> 是一個Servlet,需要在web.xml中配置</p><p> ActionForm</p><p><b> 封裝頁面提交的數據&l
41、t;/b></p><p> 繼承自org.apache.struts.action.ActionForm </p><p> 需要在struts-config.xml中配置</p><p> 與JSP的交互:從頁面獲取數據loginActionForm.getUsername(); 發(fā)送數據到頁面request.setAttribute(&quo
42、t;username",username);</p><p> Action[****Action.java]</p><p><b> 封裝一類客戶操作</b></p><p> 繼承自org.apache.struts.action.Action,實現execute方法</p><p> 需要在st
43、ruts-config.xml中配置</p><p> struts-config.xml</p><p> 配置Form Bean和Action Bean</p><p> 服務器啟動時,Struts裝載struts-config.xml信息</p><p> 服務器啟動后,根據web.xml加載ActionServlet讀取str
44、uts-config.xml文件內容到內存。</p><p> 輸入用戶名密碼提交表單、提交到action屬性的login.do,通過ActionServlet讀struts-config.xml文件找到 action下的path屬性找到.do,通過name屬性找form-beans中的form-bean的name屬性得到ActionForm的包名類名,先實例化form,把表單的值填充給form,調用form的
45、validate方法驗證、ActionErrors返回null表示驗證通過,否則失敗返回input指定的頁面.驗證通過會實例化Action,執(zhí)行Action的excute方。</p><p> 整個項目的Struts-config.xml配置文件代碼:</p><p> <?xml version="1.0" encoding="UTF-8&quo
46、t;?></p><p> <!DOCTYPE struts-config PUBLIC</p><p> "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN"</p><p> "struts-config_1_3.dtd">
47、;</p><p> <struts-config></p><p> <form-beans></p><p> <form-bean name="registerFormBean" type="actionForm.RegisterActionForm"></form-bea
48、n></p><p> <form-bean name="loginFormBean" type="actionForm.LoginActionForm"></form-bean></p><p> <form-bean name="modifyraf" type="actionF
49、orm.RegisterActionForm"></form-bean></p><p> <form-bean name="addArticle" type="actionForm.ArticleActionForm"></form-bean></p><p> <form-bean n
50、ame="editArtile" type="actionForm.EditArticleActionForm"></form-bean></p><p> </form-beans></p><p> <action-mappings></p><p> <action
51、path="/reg" type="action.RegisterAction" name="registerFormBean" scope="request"></p><p> <forward name="success" path="/success.jsp"><
52、;/forward></p><p> <forward name="error" path="/error.jsp"></forward></p><p> <forward name="userExisting" path="/isExistingUser.jsp"&
53、gt;</forward></p><p><b> </action></b></p><p> <action path="/log" type="action.LoginAction" name="loginFormBean" scope="request&q
54、uot;></p><p> <forward name="success" path="/success.jsp"></forward></p><p> <forward name="error" path="/error.jsp"></forward&g
55、t;</p><p><b> </action></b></p><p> <action path="/exit" type="action.ExitAction"></p><p> <forward name="success" path=&
56、quot;/index.jsp"></forward></p><p><b> </action></b></p><p> <action path="/modifyusermess" type="action.ModifyUserGetOldMess" scope=&quo
57、t;request"></p><p> <forward name="showoldmess" path="/modifyMessage.jsp"></forward></p><p> <forward name="error" path="/error.jsp&qu
58、ot;></forward></p><p> <forward name="login" path="/login.jsp"></forward></p><p><b> </action></b></p><p> <action p
59、ath="/usernewmess" type="action.ModifyMessageAction" name="modifyraf" scope="request"></p><p> <forward name="success" path="/success.jsp"&g
60、t;</forward></p><p> <forward name="error" path="/error.jsp"></forward></p><p><b> </action></b></p><p> <action path=&
61、quot;/addArtilce" name="addArticle" type="action.AddArticleAction" scope="request"></p><p> <forward name="success" path="/success.jsp"></f
62、orward></p><p> <forward name="error" path="/error.jsp"></forward></p><p> <forward name="login" path="/login.jsp"></forward>
63、</p><p><b> </action></b></p><p> <action path="/articleTurnPage" type="action.ArticleTurnPageAction" scope="request" ></p><p&g
64、t; <forward name="success" path="/index.jsp"></forward></p><p><b> </action></b></p><p> <action path="/managerATP" type="a
65、ction.ArticleTurnPageAction" scope="request"></p><p> <forward name="success" path="/managerArticle.jsp"></forward></p><p> <forward name=&
66、quot;error" path="/login.jsp"></forward></p><p><b> </action></b></p><p> <action path="/deleteArticle" type="action.DeleteArticleAc
67、tion" scope="request"></p><p> <forward name="success" path="/success.jsp"></forward></p><p> <forward name="error" path="/e
68、rror.jsp"></forward></p><p><b> </action></b></p><p> <action path="/editArticle" name="editArtile" type="action.EditArticleAction&q
69、uot;></p><p> <forward name="success" path="/success.jsp"></forward></p><p> <forward name="error" path="error.jsp"></forward>
70、;</p><p><b> </action></b></p><p> </action-mappings></p><p> </struts-config></p><p><b> 第3章 詳細設計</b></p><p>
71、;<b> 第3章 詳細設計</b></p><p> 3.1 新聞顯示功能</p><p> 首頁(index.jsp)負責顯示新聞列表,點擊新聞標題將顯示出新聞詳細內容,新聞標題上加有鏈接,鏈接到showNewsDeatil.Jsp頁面,此頁面負責顯示新聞詳細內容(標題,發(fā)表時間,內容,作者)。根據新聞條數NewsTurnPageAction.java負責新
72、聞列表分頁,點擊“上一頁”“下一頁”實現分頁。</p><p> 新聞內容都存與UserBean 的實例化對象user中,數據封裝好后存放到session中供用戶讀取。</p><p> 3.2 用戶注冊功能</p><p> register.jsp頁面負責提交新用戶注冊信息,信息提交給Struts,有RegisterActionForm.java把表單數據
73、接收過來封裝,Register.java從FormBean(RegisterActionForm.java)中把數據提取出來,進行檢測,首先檢測用戶名,檢查是否已被注冊,此過程用到myutils包中的UserUtils類。</p><p> 此系統(tǒng)支持漢化用戶名,所以用戶名還要進行編碼處理,用以保障用漢字注冊用戶名的用戶。</p><p> 注冊成功返回success.jsp 否則返回
74、error.jsp頁面。</p><p> 3.3 修改注冊信息功能</p><p> 此模塊登陸后才能被激活,此模塊是普通用戶設計的,管理員不可以在客戶端修改信息,modifyUserMess.jsp頁面負責修改。</p><p> 當用戶登陸后,點擊修改,GetUserOldMessAction.java負責查詢用戶信息,得到信息后,把信息存放到UserM
75、essage.java的實例化對象userMess中,然后modifyUserMess.jsp頁面引入userMess對象獲得舊的信息,修改后提交給ActionServlet.java類,ActionServlet根據Struts-config.xml中的URL配置再轉發(fā)到ModifyUserMessAction.java,經過處理后最終存入數據庫中。</p><p> 3.4 管理新聞功能</p>
76、<p> 此模塊登錄后被激活,普通用戶登陸后僅可以管理自己的新聞,管理項目包括(刪除,修改)。</p><p> 管理員登陸后可管理數據庫中所有的新聞,管理項目包括(刪除,修改)。</p><p> 刪除新聞基本實現流程:managerUserAction.jsp顯示新聞列表,單擊“刪除”——>confirmDeleteNews.Jsp——>DeleteNe
77、wsAction.java最終SqlUtils.java工具類根據接收到的id號,從數據庫的news表把相應的新聞刪除。</p><p> 編輯新聞基本實現流程:單擊“修改”——>modifyNews.jsp(負責顯示當前新聞,并提交新新聞)——>ModifyNewsAction.java(處理后存入數據庫)。</p><p> 3.5 添加新聞功能</p>
78、<p> 添加新聞的最低用戶級別是普通用戶,用戶登錄后可以在addNews.jsp頁面添加新聞,新聞提交給Struts,ActionServlet.java負責分發(fā)給相應的Action類處理,給據配置文件的FormBean把提交的新聞信息封裝,然后AddNews.java類從FormBean(AddNewsActionForm.java)中取出數據處理后存入news表中。</p><p> 添加新聞
79、基本流程:addNews.jsp——>AddNewsAction.java——>SqlUtils.java(工具類)——>news新聞表。</p><p><b> 3.6管理用戶</b></p><p> 此模塊系統(tǒng)管理員專有,系統(tǒng)管理員登錄后,此模塊被激活。</p><p> managerUserList.jsp頁
80、面負責顯示用戶列表,管理員可以根據需要對個別用戶進行封號處理。點擊刪除,把對應用戶的用戶名最終傳遞給SqlUtils.java(工具類),由工具類實施刪除。</p><p> 封號實現流程:點擊“刪除”——>confirmDeleteUser.jap——>DeleteUserAction.java——>SqlUtils.java(工具類:根據接收到的用戶名,在數據庫mynews的User表中刪
81、除相應用戶)。</p><p><b> 3.7注銷</b></p><p> ExitAction.java負責注銷,當用戶登錄后,不再進行操作點擊導航欄上的“注銷”系統(tǒng)會銷毀當前session。</p><p> 基本實現流程:點擊“注銷”——>ExitAction.java(銷毀當前session對象)。</p>
82、<p><b> 第4章 功能實現</b></p><p> 4.1 新聞顯示功能</p><p> NewsBean.java部分代碼(負責新聞數據封裝):</p><p> private CachedRowSetImpl row; </p><p> private int pageSize;
83、</p><p> private int pageCount;</p><p> private int rowCount;</p><p> private int currentPage;</p><p> public NewsBean(){</p><p> pageSize= 10;</p&
84、gt;<p> currentPage = 1;</p><p> String sql = "select * from news ";</p><p> List<String> parameters = new ArrayList<String>();</p><p> row = SqlUti
85、ls.querySql(sql, parameters);</p><p><b> try {</b></p><p> row.last();</p><p> rowCount = row.getRow();</p><p> pageCount = (rowCount%pageSize==0)?(rowC
86、ount/pageSize):(rowCount/pageSize+1);</p><p> } catch (SQLException e) {</p><p> e.printStackTrace();</p><p> rowCount = 0;</p><p> pageCount = 0;</p><
87、;p><b> }</b></p><p><b> }</b></p><p> public NewsBean(String username){</p><p> pageSize= 10;</p><p> currentPage = 1;</p><p
88、> String sql;</p><p> boolean ok;</p><p> List<String> parameters = new ArrayList<String>();</p><p> ok = UserUtils.isExistingUser(username);</p><p>
89、<b> if(ok){</b></p><p> sql = "select * from news where username = ?";</p><p> parameters.add(username);</p><p><b> }else{</b></p><p
90、> sql = "select * from news";</p><p><b> }</b></p><p> row = SqlUtils.querySql(sql, parameters);</p><p><b> try {</b></p><p>
91、row.last();</p><p> rowCount = row.getRow();</p><p> pageCount = (rowCount%pageSize==0)?(rowCount/pageSize):(rowCount/pageSize+1);</p><p> } catch (SQLException e) {</p>&
92、lt;p> e.printStackTrace();</p><p> rowCount = 0;</p><p> pageCount = 0;</p><p><b> }</b></p><p><b> }</b></p><p> showNew
93、sList.jsp主要代碼(負責首頁新聞題目列表):</p><p> <%NewsBean news = null;</p><p> news = (NewsBean)session.getAttribute("news");</p><p> if(news==null){</p><p> res
94、ponse.sendRedirect("newsTurnPage.do");</p><p><b> }else{</b></p><p> news.setPageSize(12);</p><p> CachedRowSetImpl row = news.getRow();</p><p&
95、gt; int pageCount = news.getPageCount();</p><p> int currentPage = news.getCurrentPage();</p><p> int rowCount = news.getRowCount();</p><p> int pageSize = news.getPageSize();&l
96、t;/p><p><b> %></b></p><p> <table width="520" align="center"></p><p><b> <tr></b></p><p> <th height=&qu
97、ot;50" colspan="3"> </th></p><p><b> </tr></b></p><p><b> <%</b></p><p> row.absolute((currentPage-1)*pageSize+
98、1);</p><p> String str;//聲明一個截取時間的臨時字符串</p><p> for(int i = 1; i<= pageSize;i ++){</p><p> str = row.getString("post_time");</p><p><b> %>&
99、lt;/b></p><p><b> <tr ></b></p><p> <td height="22" width="10" valign="middle"><img src="inc_pic/icon.jpg" width="9&q
100、uot; height="9" /></td></p><p> <td width="400" align="left"><a href='showNewsDeatil.jsp?id=<%=row.getRow() %>'</p><p> target=&qu
101、ot;_blank" ><%=row.getString("title") %></a></td></p><p> <td align="center"><%=str.substring(0,11) %></td></p><p><b> &l
102、t;/tr></b></p><p> <% if(!row.next())break;</p><p><b> }</b></p><p><b> %></b></p><p><b> <tr></b></
103、p><p> <th height="30" colspan="3"> </th></p><p><b> </tr></b></p><p><b> </table></b></p><p&
104、gt;<b> 圖4-1</b></p><p> 4.2 用戶注冊功能</p><p> RegisterAction.java部分代碼(負責處理注冊動作)</p><p> package action;</p><p> import myutils.*;</p><p> .
105、.//部分包省略</p><p> import actionForm.RegisterActionForm;</p><p> public class RegisterAction extends Action {</p><p><b> /**</b></p><p><b> * 注冊用戶&
106、lt;/b></p><p> * 先查詢用戶是否存在</p><p> * 根據查詢結果來處理是否執(zhí)行注冊</p><p><b> */</b></p><p><b> @Override</b></p><p> public ActionForwar
107、d execute(ActionMapping mapping, ActionForm form,</p><p> HttpServletRequest request, HttpServletResponse response)</p><p> throws Exception {</p><p> RegisterActionForm raf=(R
108、egisterActionForm)form;</p><p> String username=StringUtils.StringEcode(raf.getUsername());</p><p> String password=StringUtils.StringEcode(raf.getPassword());</p><p> String pho
109、ne=StringUtils.StringEcode(raf.getPhone());</p><p> String qq=StringUtils.StringEcode(raf.getQq());</p><p> boolean isExistingUser=UserUtils.isExistingUser(username);</p><p> i
110、f(isExistingUser){</p><p> return mapping.findForward("userExisting");</p><p><b> }else{</b></p><p> boolean ok = UserUtils.addUser(username, password,phone
111、,qq);</p><p><b> if(ok){</b></p><p> return mapping.findForward("success");</p><p><b> }else{</b></p><p> return mapping.findForwa
112、rd("error");</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><
113、;b> 圖4-2</b></p><p> 4.3 修改注冊信息功能</p><p> GetUserMessAction.java(負責向用戶返回舊信息)</p><p> package action;</p><p><b> /</b></p><p><
114、b> /部分包省略</b></p><p> import org.apache.struts.action.ActionMapping;</p><p> public class GetUserMessAction extends Action {</p><p> public ActionForward execute(Action
115、Mapping mapping, ActionForm form,</p><p> HttpServletRequest request, HttpServletResponse response)</p><p> throws Exception {</p><p> UserLogin login = null;</p><p&
116、gt; HttpSession session = null;</p><p><b> try {</b></p><p> session = request.getSession(true);</p><p> login = (UserLogin)session.getAttribute("login");&
117、lt;/p><p> } catch (Exception e) {</p><p> return mapping.findForward("error");</p><p><b> }</b></p><p> if(login!=null){</p><p> R
118、esultSet rs = null;</p><p> UserMessage usermess = new UserMessage();</p><p> String username = login.getUsername();</p><p> String password = login.getPassword();</p><
119、;p> //查詢當前用戶信息</p><p> rs = UserUtils.queryUserMess(username);</p><p> if(rs.next()){</p><p> String phone = rs.getString(3);</p><p> String qq = rs.getString(4
120、);</p><p> usermess.setUsername(username);</p><p> usermess.setPassword(password);</p><p> usermess.setPhone(phone);</p><p> usermess.setQq(qq);</p><
121、p> request.setAttribute("usermess", usermess);</p><p> return mapping.findForward("showoldmess");</p><p><b> }else{</b></p><p> return ma
122、pping.findForward("error");</p><p><b> }</b></p><p><b> }else</b></p><p> return mapping.findForward("login");</p><p&
123、gt;<b> }</b></p><p><b> }</b></p><p> UserModifyMessAction.java部分代碼(處理用戶提交的新信息)</p><p> package action;</p><p> public class UserModifyMess
124、Action extends Action {</p><p><b> @Override</b></p><p> public ActionForward execute(ActionMapping mapping, ActionForm form,</p><p> HttpServletRequest request, Http
125、ServletResponse response)</p><p> throws Exception {</p><p> RegisterActionForm raf = (RegisterActionForm)form;</p><p> String username = StringUtils.StringEcode(raf.getUsername(
126、));</p><p> String password = raf.getPassword();</p><p> String phone = raf.getPhone();</p><p> String qq = raf.getQq();</p><p> boolean ok = UserUtils.updateUserMe
127、ss(username, password, phone, qq);</p><p><b> if(ok){</b></p><p> return mapping.findForward("success");</p><p><b> }else{</b></p><p&
128、gt; return mapping.findForward("error");</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> 圖4-3&l
129、t;/b></p><p> 4.4 管理新聞功能</p><p> managerNewsList.jsp(負責新聞管理頁面新聞列表)部分代碼:</p><p> <table width="260" height="50" border="0" align="center&q
130、uot;></p><p><b> <tr></b></p><p> <td> </td></p><p><b> </tr></b></p><p><b> </table></b&
131、gt;</p><p> <table align="center" border="0" cellspacing="1" bgcolor="#000000"> </p><p><b> <%</b></p><p> row.absol
132、ute((currentPage-1)*pageSize+1);</p><p> String str;//聲明一個截取時間的臨時字符串</p><p> for(int i = 1; i<= pageSize;i ++){</p><p> str = row.getString("post_time");</p>
133、<p><b> %></b></p><p> <tr bgcolor="#F1F0EB"></p><p> <td height="22"><%=(i+ (currentPage-1)*pageSize)%></td></p><p&
134、gt; <td align="left"><%=row.getString("title") %></td></p><p> <td align="center"><%=row.getString("author") %></td></p>&
135、lt;p> <td align="center"><%=str.substring(0,11) %></td></p><p> <td align="center" width="50"><a href='confirmDeleteNews.jsp?id=<%=row.get
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- jsp課程設計-新聞發(fā)布系統(tǒng)
- jsp課程設計(論文)-新聞發(fā)布系統(tǒng)
- jsp課程設計---基于jsp的新聞發(fā)布系統(tǒng)
- 新聞發(fā)布系統(tǒng)課程設計
- 新聞發(fā)布系統(tǒng)課程設計
- 新聞發(fā)布系統(tǒng)課程設計
- 新聞發(fā)布系統(tǒng)課程設計
- java課程設計-- 新聞發(fā)布系統(tǒng)
- java課程設計報告《新聞發(fā)布系統(tǒng)》
- jsp新聞發(fā)布系統(tǒng) 畢業(yè)設計
- jsp程序設計基于jsp新聞發(fā)布系統(tǒng)
- web開發(fā)課程設計-新聞發(fā)布系統(tǒng)
- web高級程序課程設計---新聞發(fā)布系統(tǒng)
- java-web新聞發(fā)布系統(tǒng)課程設計
- jsp+oracle新聞發(fā)布系統(tǒng)論文
- 新聞發(fā)布系統(tǒng)
- 新聞發(fā)布系統(tǒng)
- jsp+ORACLE新聞發(fā)布系統(tǒng)論文.doc
- web應用基礎課程設計-----新聞管理與發(fā)布系統(tǒng)
- 新聞發(fā)布系統(tǒng) (2)
評論
0/150
提交評論