單元6 購物網站喜愛商品投票統計模塊設計(Struts2+JSTL+JFreeChart組件)_第1頁
單元6 購物網站喜愛商品投票統計模塊設計(Struts2+JSTL+JFreeChart組件)_第2頁
單元6 購物網站喜愛商品投票統計模塊設計(Struts2+JSTL+JFreeChart組件)_第3頁
單元6 購物網站喜愛商品投票統計模塊設計(Struts2+JSTL+JFreeChart組件)_第4頁
單元6 購物網站喜愛商品投票統計模塊設計(Struts2+JSTL+JFreeChart組件)_第5頁
已閱讀5頁,還剩84頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

單元6

購物網站喜愛商品投票統計模塊設計(Struts2+JSTL+JFreeChart組件)

Struts2是Apache軟件組織的一項開放源代碼項目,是基于WebWork核心思想的全新框架,是一種成熟的MVC模型解決方案,在JavaWeb開發領域中占有十分重要的地位。 Struts2是Apache軟件組織的一項開放源代碼項目,是基于WebWork核心思想的全新框架,是一種成熟的MVC模型解決方案,在JavaWeb開發領域中占有十分重要的地位。

隨著JSP技術的成熟,越來越多的JavaWeb開發人員專注于MVC框架,Struts2受到廣泛的青睞。 Struts2是一種支持國際化的MVC的WebFramework。

在設計國際化的Struts2應用時,盡量將一些文本、消息、圖片、標簽、按鈕等從程序代碼中單獨提取出來,存放在資源文件中,這樣對于不同語言的用戶,只要提供與之相應的資源文件即可。 JSTL(JSPStandardTagLibrary,JSP標準標簽庫)是一個不斷完善的開放源代碼的JSP標簽庫,是由Apache的Jakarta小組來維護的。 JSTL只能運行在支持JSP1.2和Servlet2.3及以上版本規范的容器上。

使用JSTL可以取代在傳統JSP程序中嵌入Java代碼的做法,提高了程序的可維護性和可讀性。【知識梳理】1.Struts簡介 Struts是Apache軟件基金會(ASF)贊助的一個開源項目,它最初是Jakarta項目中的一個子項目,并在2004年3月成為ASF的頂級項目,它通過采用JavaServlet/JSP技術實現了基于JavaEEWeb應用的MVC設計模式的應用框架,是MVC經典設計模式中的一個經典產品。2.Struts2簡介(1)Struts2基本組成 WebWork與Struts合并之后,根據功能的細分和設計,拆分出一個叫xWork的部分,用來處理與Web無關的部分,也就是與Servlet無關的部分,如用戶數據的類型轉換、動作調用之前的數據驗證、動作的調用等。

其余與Web相關的部分,也就是與servlet相關的部分,被稱為Struts2部分。

這里的“Struts2部分”可以理解為一個模塊,是Struts2框架的一部分,例如,如何接收用戶請求的數據,如何跳轉到下一個頁面。

其中Struts2部分調用了xWork部分,但是xWork部分并不依賴于Struts2部分,xwork是完全獨立的、純Java的應用。(2)Struts2的核心功能

①Struts2通過簡單、集中的配置來調度動作類,使得配置和修改都非常容易。

②Struts2提供簡單、統一的表達式語言來訪問所有可供訪問的數據。

③Struts2提供內存式的數據中心,所有可供訪問的數據都集中存放在內存中,在調用中不需要將數據傳來傳去,都去這個內存數據中心訪問即可。

④Struts2提供在動作類執行的前或后附加執行一定功能的能力,能實現AOP(AspectOrientedProgramming,面向切面編程)。

⑤Struts2提供標準的、強大的驗證框架和國際化框架,且與Struts2的其他特性緊密結合。3.Struts2的處理流程 Struts是一個開源框架,使用Struts的目的就是為了幫助減少在運用MVC設計模型來開發Web應用的時間。圖6-1

Struts2的簡單處理流程示意圖 Struts2的簡單處理流程說明如下。

①Web客戶端的瀏覽器發送請求。

②核心處理器根據Struts.xml文件查找對應的處理請求的Action類。

③WebWork的攔截器鏈自動請求應用通用功能,如WorkFlow、Validation等功能。

④如果Struts.xml文件中配置了Method參數,則調用Method參數對應的Action類中的Method方法,否則調用Action的的Execute()方法來處理用戶請求。

⑤將Action類中的對應方法get×××()返回的結果響應給瀏覽器。

一個請求在Struts2框架中的處理大概分為以下幾個步驟。

①客戶端提交一個指向Servlet容器(如Tomcat)的HTTP請求。

②這個請求經過一系列的過濾器(包括ActionContext、ClearUp過濾器和其他過濾器),最后會到達FilterDispatcher過濾器。

③接著FilterDispatcher被調用,FilterDispatcher詢問ActionMapper是否需要調用某個Action來處理這個請求。

④如果ActionMapper決定需要調用某個Action,FilterDispatcher把請求的處理交給ActionProxy。

⑤ActionProxy通過ConfigurationManager(struts.xml)讀取框架的相關配置,找到需要調用的Action類。

⑥ActionProxy創建一個ActionInvocation的實例。

⑦ActionInvocation實例使用命名模式來調用,在調用Action的過程前后,涉及一系列的相關攔截器(Intercepter)的調用。

⑧一旦Action執行完畢,ActionInvocation負責根據struts.xml中的配置找到對應的返回結果。將返回相應的結果視圖(JSP、FreeMarker和Veiocity等),在這些視圖之中可以使用struts標簽顯示數據并控制數據邏輯。然后HTTP請求回應給瀏覽器,在回應的過程中同樣經過一系列過濾器。4.Action對象簡介

在傳統的MVC框架中,Action需要實現特定的接口,這些接口由MVC框架定義,實現這些接口會與MVC框架耦合。 Struts2比Action更為靈活,可以實現或不實現Struts2的接口。(1)Action對象簡介 Action對象是Struts2框架中的重要對象,

主要用于處理HTTP請求。

在Struts2API中,Action對象是一個接口,位于com.opensymphony.xwork2包中。

通常情況下,在開發基于Struts2的應用項目時,創建Action對象都要直接或間接地實現com.opensymphony.xwork2.Action接口,在該接口中,除了定義execute()方法外,還定義了5個字符串類型的靜態常量。

在Action接口中,包含了以下5個靜態常量,它們是Struts2API為處理結果所定義的靜態常量。

①SUCCESS。

②NONE。

③ERROR。

④INPUT。

⑤LOGIN。(2)Action的基本流程 Struts2框架主要通過Struts2的過濾器對象攔截HTTP請求,然后將請求分配到指定的Action進行處理。5.Struts2的攔截器(1)攔截器概述(2)Struts2API(3)攔截器Interceptor中包含的方法(4)AbstractInterceptor類6.軟件的國際化支持

為了使Web應用程序能同時支持多國語言、支持全球用戶,就必須對Web應用程序進行國際化的處理。

國際化(簡稱為I18N)指的是在設置軟件系統時使軟件具有支持多種語言的功能。

當需要在應用中添加對一種新的語言和國家的支持時,無須修改應用程序的代碼。

國際化是相對本地化而言的,本地化意味著針對不同語言的用戶,開發出不同的軟件版本,而國際化則意味著同一個軟件可以面向使用各種不同語言的用戶。7.Struts2中國際化語言的動態切換方法

為了適應不同語言的用戶,由用戶自己選擇合適的語言進行瀏覽是軟件國際化的普通需求。

在一些大型網站上,經常能看到“英文版

中文版”等語言動態切換的超鏈接。8.Web應用程序開發過程常見的中文亂碼問題及其解決方法(1)解決HTML頁面中的中文問題(2)解決JSP頁面中的中文問題(3)解決Servlet響應結果的中文問題(4)解決頁面數據傳輸的中文問題(5)解決HTTP(get)請求中的中文問題(6)解決MySQL數據庫的中文問題9.JSTL標簽庫 JSTL(JSPStandardTagLibrary,JSP標準標簽庫)是一個不斷完善的開放源代碼的JSP標簽庫,是由Apache的Jakarta小組來維護的。 JSTL只能運行在支持JSP1.2和Servlet2.3及以上版本規范的容器上。

使用JSTL可以取代在傳統JSP程序中嵌入Java代碼的做法,提高了程序的可維護性和可讀性。

①使用JSTL標簽之前必須在JSP頁面的頂部使用“<%@taglib%>指令定義標簽庫的位置和訪問前綴。

②<c:if>標簽。 <c:if>標簽可以根據不同的條件處理不同的業務,即執行不同的程序代碼。

③<c:forEach>標簽。 <c:forEach>標簽可以根據循環條件遍歷數組和集合類中的所有或部分數據。10.過濾器的配置

在創建一個過濾器對象之后,需要對其進行配置才可以使用。

過濾器的配置方法與Servlet的配置方法類似,都是通過web.xml文件進行配置。(1)聲明過濾器對象(2)映射過濾器可選值功能說明REQUEST當客戶端直接請求時,通過過濾器進行處理INCLUDE當客戶端通過RequestDispatcher對象的include()方法請求時,通過過濾器進行處理FORWARD當客戶端通過RequestDispatcher對象的forward()方法請求時,通過過濾器進行處理ERROR當產生聲明式異常時,通過過濾器進行處理表6-2

<dispatcher>元素的可選值及功能說明【應用技巧】

本單元的應用技巧如下所示。

①應用JfreeChart組件實現動態圖表,顯示投票結果。

②應用JfreeChart組件繪制柱形圖。

③應用JfreeChart組件繪制餅圖。

④在服務器端的Application對象中存儲投票總結果,在Struts2.x中利用Map對象模擬Application對象。

⑤JSP頁面中實現動態數據的兩列顯示。

⑥JSP頁面中通過設置div區塊的寬度樣式顯示投票結果。

⑦通過IP地址和Cookie信息設計投票過濾器,控制投票的有效性,從而防止惡意投票和虛假投票。

⑧Web應用程序開發過程中文亂碼問題的解決方法。⑨Struts2國際化支持的實現。⑩Struts2中國際化語言環境的動態切換。【環境創設】

①下載與配置Struts2。

②下載JFreeChart組件的最新版本。

③準備開發Web應用程序所需的圖片文件和JavaScript文件。

④在數據庫eshop中創建“投票信息”數據表,其結構信息如表6-3所示。字段名數據類型字段名數據類型投票IDint投票人IPbigint上次投票時間smalldatetime表6-3“投票信息”數據表的結構信息

⑤在數據庫eshop中創建“商品投票”數據表,其結構信息如表6-4所示。

⑥在計算機的【資源管理器】中創建文件夾unit06。字段名數據類型字段名數據類型商品IDint商品名稱nvarchar(100)品牌名稱nvarchar(50)圖片地址nvarchar(100)投票數量int排列順序int表6-4“商品投票”數據表的結構信息

⑦啟動Eclipse,設置工作空間為unit06,然后進入Eclipse的開發環境。

⑧在Eclipse集成開發環境中配置與啟動Tomcat服務器。

⑨新建動態Web項目,命名為project06X,本單元有2個任務,每個任務創建一個獨立的Web項目,命名分別為project061和project062。

⑩添加Struts2和JFreeChart組件的核心類包。圖6-2添加的Struts2核心類包【任務描述】【任務6-1】基于JSTL+JavaBean+JFreeChart組件實現喜愛的手機品牌評選投票

①創建JSP頁面index.jsp,該頁面是投票統計程序的起始頁面。

②創建Servlet類GetDataServlet,該類主要獲取手機品牌的相關信息,然后轉移到JSP頁面task6-2.jsp。

③創建JSP頁面task6-2.jsp,該頁面是投票的核心頁面之一,主要顯示手機品牌的相關信息以及投票、查看投票結果等多個鏈接按鈕。

④創建GoodsInfo類,該類為商品信息類,包含多個屬性定義和方法定義。

⑤創建DbManage類,該類為公共的數據庫操作類,主要包含創建數據庫連接、關閉數據庫連接、對數據庫進行操作(查、增、刪、改)等多個方法。

⑥創建GetDataDao類,該類包含獲取手機品牌的相關信息、獲取投票總數和最大投票數量、更新投票數量等多個方法。

⑦創建GetVoteServlet類,該類主要獲取手機品牌的相關信息、投票總數、最大投票數量,然后轉移到JSP頁面vote6-2.jsp。

⑧創建JSP頁面vote6-2.jsp,該頁面以網頁表現形式顯示投票結果。

⑨創建VoteServlet類,該類是實現圖形方式顯示投票結果的核心類,主要實現以柱形圖和餅形圖兩種方式顯示投票結果。

⑩創建JSP頁面showResult.jsp,該類主要顯示投票結果的柱形圖或餅形圖。

?創建過濾器類SubmitFilter,該類用于判

斷表單提交時的請求方式是否為POST方式。

?創建過濾器類VoteLimitFilter,該類負責過濾投票者的信息,控制是否能成功投票,從而防止惡意投票和虛假投票。

?創建VoterDao類,該類主要獲取某一位投票最近一次的投票時間,更新投票數據。

?創建JSP頁面fail.jsp,該頁面主要顯示錯誤提示信息,當投票程序運行時出現錯誤時,轉移到該頁面。

?

創建配置文件web.xml。圖6-3手機品牌評選投票實現過程【任務6-2】基于Struts2實現投票程序的國際化

支持

①創建中文、英文的資源文件messageResource_en_US.properties和messageResource_zh_

CN.properties。②創建配置文件struts.xml和web.xml。③創建類ChangeLocale,該類實現了LocaleProvider接口,用于實現國際化語言環境的動態切換。

④創建JSP頁面task6-3.jsp,該頁面用于顯示投票信息和提供國際化語言環境的動態切換按鈕。【任務實施】【網頁結構設計】

本單元將會創建多個網頁,其主體結構的HTML代碼如表6-5所示。行號HTML代碼0102030405<navclass="navnav-subprw"></nav><!--網頁頭部導航結束

--><formname="form1"method="post"action=""><divclass="layoutw"style="margin:4pxauto0px;"><ulclass="jhy1wbox">表6-5單元6網頁主體結構的HTML代碼行號HTML代碼06070809101112131415161718

<li></li><li></li></ul></div></form><!--網頁底部導航開始

--><footerclass="footerw"><divclass="tr"></div><ulclass="list-ui-afoot-listtc"><li></li></ul><divclass="tccopyright"></div></footer>續表【網頁CSS設計】

在DreamweaverCS6開發環境中創建3個CSS文件:base.css、view.css和stylecss。

這3個CSS文件具體的代碼見本書提供的電子資源。【靜態網頁設計】

在DreamweaverCS6中創建靜態網頁unit06.html,該網頁的初始HTML代碼如表1-5所示。

在網頁unit06.html中<head>和</head>之間編寫如下所示的代碼,引入所需的CSS樣式文件。

網頁unit06.html的瀏覽效果如圖6-4所示。圖6-4網頁unit06.html的瀏覽效果【網頁功能實現】【任務6-3】基于JSTL+JavaBean+JFreeChart組件實現喜愛的手機品牌評選投票(1)在項目project061中創建多個包(2)創建JSP頁面index.jsp

(3)在web.xml文件中對GetDataServlet類進行配置

(4)創建Servlet類GetDataServlet

(5)創建JSP頁面task6-2.jsp

(6)創建GoodsInfo類

(7)創建DbManage類

(8)創建GetDataDao類

(9)創建GetVoteServlet類

(10)在web.xml文件中對GetVoteServlet類進行配置

(11)創建JSP頁面vote6-2.jsp

(12)創建VoteServlet類(13)在web.xml文件中對VoteServlet類進行配置(14)創建JSP頁面showResult.jsp(15)創建JSP頁面fail.jsp(16)在web.xml文件中對過濾器類filter.SubmitFilter和VoteLimitFilter

溫馨提示

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

最新文檔

評論

0/150

提交評論