




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
单元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
提交评论