第七章 MVC框架技术Struts2.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《第七章 MVC框架技术Struts2.ppt》由会员分享,可在线阅读,更多相关《第七章 MVC框架技术Struts2.ppt(42页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第七章 MVC框架技术Struts2 本章要点uuStruts2配置及应用程序原理uuAction的设计方法与结果类型uu服务器端的输入验证uuStruts2国际化、标签库和OGNL表达式uu拦截器、文件上传和下载7.1 Struts2概述概述 uuStruts框架的历史StrutsStruts在经历了在经历了1.x1.x的若干版本后,最终发展的若干版本后,最终发展到到2.02.0版本,也就是我们常说的版本,也就是我们常说的Struts2Struts2。它是。它是StrutsStruts和和WebWorkWebWork相互结合的产物,代表了相互结合的产物,代表了WEBWEB框架的最新技术和规范
2、。本书中框架的最新技术和规范。本书中Struts2Struts2的内容以最新的的内容以最新的Struts2.2.3Struts2.2.3版本为准。版本为准。uuStruts2下载与配置下载下载下载下载Struts2Struts2uuStruts2Struts2的下载地址为的下载地址为http:/struts.apache.orghttp:/struts.apache.org。目前可下载到的最新版本是目前可下载到的最新版本是struts2.2.3struts2.2.3。下载后得。下载后得到压缩包到压缩包struts-2.2.3-lib.zipstruts-2.2.3-lib.zip。解压后的文件
3、夹中。解压后的文件夹中包含一个包含一个“struts-2.2.3lib”“struts-2.2.3lib”文件夹,该文件夹包文件夹,该文件夹包含了含了Struts2Struts2的类库。的类库。在在在在NetBeansNetBeans中使用中使用中使用中使用Struts2Struts2 在在web.xmlweb.xml中加入如下中加入如下Struts2Struts2核心控制器(过滤器)核心控制器(过滤器)的配置。的配置。struts2struts2org.apache.struts2.dispatcher.ng.filter.org.apache.struts2.dispatcher.ng.f
4、ilter.StrutsPrepareAndExecuteFilterStrutsPrepareAndExecuteFilterstruts2struts2*.action*.actionstruts2struts2*.jsp*.jspuu案例案例7-17-1使用使用Struts2Struts2实现博客网站中的用户登实现博客网站中的用户登录录 使用使用Struts2Struts2实现控制层,可以简化控制层的设计。为实现控制层,可以简化控制层的设计。为了逐渐介绍了逐渐介绍Struts2Struts2的知识,这里先实现用户登录功能。的知识,这里先实现用户登录功能。技术要点技术要点技术要点技术要点u
5、u按照按照Struts2Struts2的的ActionAction的格式定义一个的格式定义一个ActionAction类来做为控制类,类来做为控制类,替换原来用替换原来用ServletServlet实现的控制类。这种类可以是普通类,也实现的控制类。这种类可以是普通类,也可以是可以是ActionSurpportActionSurpport的子类。的子类。uuStruts2Struts2的的ActionAction需要在需要在struts.xmlstruts.xml文件中进行配置。文件中进行配置。uuStruts2的MVC原理uuStruts2Struts2组件组件 核心过滤器与核心过滤器与核心过
6、滤器与核心过滤器与web.xmlweb.xml ActionAction:Struts2Struts2中中ActionAction属于控制层,它可以是任属于控制层,它可以是任何的何的POJOPOJO对象,默认调用的方法是对象,默认调用的方法是execute()execute()。struts.propertiesstruts.properties uu系统在读取核心配置文件之前,首先加载了核心系统在读取核心配置文件之前,首先加载了核心jarjar包中的包中的default.propertiesdefault.properties文件,这个文件中定义了文件,这个文件中定义了Struts2Stru
7、ts2所使用所使用的基本属性,然后会自动在的基本属性,然后会自动在classpathclasspath上去查找上去查找struts.struts.uupropertiesproperties文件。文件。struts.propertiesstruts.properties是应用程序给出的属性是应用程序给出的属性配置文件,可以通过这个文件来设置属性,以修改在配置文件,可以通过这个文件来设置属性,以修改在default.propertiesdefault.properties中定义的默认值。例如:中定义的默认值。例如:struts.locale=zh_CNstruts.locale=zh_CNstr
8、uts.i18n.encoding=gbkstruts.i18n.encoding=gbkstruts.devMode=truestruts.devMode=truestruts.xmlstruts.xml文件文件文件文件uustruts.xmlstruts.xml是是是是Struts2Struts2的核心配置文件,可以配的核心配置文件,可以配的核心配置文件,可以配的核心配置文件,可以配置常量、置常量、置常量、置常量、actionaction、packagepackage、resultresult和拦截器等和拦截器等和拦截器等和拦截器等内容。内容。内容。内容。struts.xmlstruts.
9、xml中中中中actionaction必须配置在必须配置在必须配置在必须配置在packagepackage中。中。中。中。Struts2Struts2使用使用使用使用packagepackage来管理来管理来管理来管理actionaction、拦截器等核心组件。、拦截器等核心组件。、拦截器等核心组件。、拦截器等核心组件。packagepackage就是多个就是多个就是多个就是多个actionaction、多个拦截器、多个拦截器引用组成的集合。、多个拦截器、多个拦截器引用组成的集合。、多个拦截器、多个拦截器引用组成的集合。、多个拦截器、多个拦截器引用组成的集合。uuStruts2Struts2的
10、中文乱码问题的中文乱码问题 中文乱码问题一般是指当请求参数有中文时,无法在中文乱码问题一般是指当请求参数有中文时,无法在ActionAction中得到正确的中文。中得到正确的中文。Struts2Struts2中有中有2 2种办法可以种办法可以解决这个问题:解决这个问题:设置设置JSPJSP页面的页面的pageEncoding=utf-8pageEncoding=utf-8,就不会出现,就不会出现中文乱码。中文乱码。如果如果JSPJSP页面的页面的pageEncoding=gbkpageEncoding=gbk,那么需要修,那么需要修改如下属性:改如下属性:struts.locale=zh_CN
11、struts.locale=zh_CNstruts.i18n.encoding=gbkstruts.i18n.encoding=gbk 可以增加一个属性文件可以增加一个属性文件struts.properitesstruts.properites,把属性的,把属性的设置写在属性文件中。属性文件要放在源包下。设置写在属性文件中。属性文件要放在源包下。7.2 Action与结果类型与结果类型 uuActionAction的实现类的实现类 在在Struts2Struts2中,中,ActionAction的设计是非常关键的。的设计是非常关键的。Struts2Struts2中对中对ActionAction
12、对象没有特殊要求,对象没有特殊要求,ActionAction可以是任意的可以是任意的JavaJava对象,它和对象,它和WebWeb对象之间没有直接关系,所以这对象之间没有直接关系,所以这样的样的ActionAction是非常易于测试的,这也是是非常易于测试的,这也是Struts2Struts2中中ActionAction的最大优点。的最大优点。普通的普通的普通的普通的JavaJava对象作为对象作为对象作为对象作为ActionAction 继承继承继承继承ActionSupportActionSupport实现实现实现实现ActionAction 模型驱动(模型驱动(模型驱动(模型驱动(Mo
13、delDrivenModelDriven)的)的)的)的ActionAction 属性驱动的属性驱动的属性驱动的属性驱动的ActionAction uu在在ActionAction中访问中访问WebWeb对象对象 通过通过通过通过ActionContextActionContext访问访问访问访问uuActionContextActionContext类位于类位于com.opensymphony.xwork2com.opensymphony.xwork2中,中,它提供一系列相关方法用于访问保存在它提供一系列相关方法用于访问保存在ServletContextServletContext、Http
14、SessionHttpSession、HttpServletRequestHttpServletRequest中的信息,并且存储在中的信息,并且存储在MapMap中。中。ActionContextActionContext是一个局部线程变量,不用担心是一个局部线程变量,不用担心ActionAction的线程安全。的线程安全。uuActionContextActionContext常用的方法:常用的方法:publicstaticActionContextgetContext()publicstaticActionContextgetContext():获得:获得ActionContextActi
15、onContext对象。对象。publicMapgetParameters()publicMapgetParameters():从请求对象:从请求对象(HttpServletRequestHttpServletRequest)中获取请求参数。)中获取请求参数。publicMapgetApplication()publicMapgetApplication():获取:获取ServletContextServletContext中保存中保存的的AttributeAttribute。publicMapgetSession()publicMapgetSession():获取:获取HttpSession
16、HttpSession中保存的中保存的AttributeAttribute。直接访问直接访问直接访问直接访问WebWeb对象对象对象对象uuStruts2Struts2框架提供框架提供org.apache.struts2.ServletActionContextorg.apache.struts2.ServletActionContext辅助辅助类来获得类来获得webweb对象。对象。HttpServletRequestrequest=HttpServletRequestrequest=ServletActionContext.getRequest();ServletActionContext
17、.getRequest();HttpServletResponseresponse=HttpServletResponseresponse=ServletActionContext.getResponse();ServletActionContext.getResponse();HttpSessionsession=request.getSession();HttpSessionsession=request.getSession();ServletContextapplication=ServletContextapplication=ServletActionContext.getServ
18、letContext();ServletActionContext.getServletContext();通过通过通过通过IoCIoC访问访问访问访问ServletServlet对象对象对象对象uu在在Struts2Struts2中,可以通过中,可以通过IoCIoC(依赖注入)将(依赖注入)将ServletServlet对象注入对象注入到到ActionAction中,这一切都是由一组接口决定的,这一组接口有一中,这一切都是由一组接口决定的,这一组接口有一个共同点,名称都由个共同点,名称都由AwareAware结尾。结尾。例如,实现如下接口,将以例如,实现如下接口,将以MapMap类型向类型向
19、ActionAction注入保存在注入保存在ServletContextServletContext中的中的AttributeAttribute集合:集合:public interfacepublic interfaceApplicationAwareApplicationAware public void public void setApplication(Mapapplication);setApplication(Mapapplication);uu此外,还有此外,还有SessionAwareSessionAware、ServletResponseAwareServletRespons
20、eAware、ServletRequestAwareServletRequestAware、ParameterAwareParameterAware等接口。等接口。uu多方法的多方法的ActionAction 前面所定义的前面所定义的ActionAction都是通过都是通过execute()execute()方法处理请求。在实际方法处理请求。在实际的应用中,如果为每个业务逻辑定义一个的应用中,如果为每个业务逻辑定义一个ActionAction,虽然实现方便,虽然实现方便,但是但是ActionAction数量多,数量多,struts.xmlstruts.xml中需要配置的内容也多,使系统中需要配
21、置的内容也多,使系统非常庞杂。实际上,可以用一个非常庞杂。实际上,可以用一个ActionAction处理多个业务请求。处理多个业务请求。以以YbUserActionYbUserAction为例,可以为每个操作定义一个方法,这些方法为例,可以为每个操作定义一个方法,这些方法的格式和的格式和execute()execute()方法一样。方法一样。publicpublic classclassYbUserActionYbUserActionpublicpublicStringlogin()Stringlogin()throwsthrowsExceptionExceptionpublicpublicS
22、tringregister()Stringregister()throwsthrowsExceptionException多方法多方法ActionAction的配置及调用方法有如下几种:的配置及调用方法有如下几种:uu为为为为ActionAction配置配置配置配置methodmethod属性属性属性属性uu动态方法调用动态方法调用动态方法调用动态方法调用 动态方法调用是指采用如下格式调用动态方法调用是指采用如下格式调用动态方法调用是指采用如下格式调用动态方法调用是指采用如下格式调用ActionAction中对应的方中对应的方中对应的方中对应的方法:法:法:法:控制名!方法名控制名!方法名控制
23、名!方法名控制名!方法名.action.action 动态方法调用在内部是通过拦截器处理的,因此在使用动态方法调用在内部是通过拦截器处理的,因此在使用动态方法调用在内部是通过拦截器处理的,因此在使用动态方法调用在内部是通过拦截器处理的,因此在使用动态方法调用前,要使动态方法调用前,要使动态方法调用前,要使动态方法调用前,要使Struts2Struts2允许动态方法调用。这允许动态方法调用。这允许动态方法调用。这允许动态方法调用。这需要在属性配置文件中将需要在属性配置文件中将需要在属性配置文件中将需要在属性配置文件中将struts.enable.DynamicMethodInvocationst
24、ruts.enable.DynamicMethodInvocation属属属属性的值设为性的值设为性的值设为性的值设为truetrue:struts.enable.DynamicMethodInvocation=tstruts.enable.DynamicMethodInvocation=truerue 使用通配符映射方式使用通配符映射方式使用通配符映射方式使用通配符映射方式uu在在struts.xmlstruts.xml文件中配置文件中配置actionaction元素时,它的元素时,它的namename、classclass、methodmethod属性都可支持通配符,这种通配符的方式是另一
25、种形属性都可支持通配符,这种通配符的方式是另一种形式的动态方法调用。当使用通配符定义式的动态方法调用。当使用通配符定义actionaction的的namename属性时,属性时,相当于用一个元素相当于用一个元素actionaction定义了多个逻辑定义了多个逻辑ActionAction。例如:。例如:actionname=YbUser_*class=blog.action.YbUserActionmethod=1uu如上,用户请求的如上,用户请求的URLURL的模式是的模式是YbUser_*YbUser_*。同时。同时methodmethod属属性值为一个表达式性值为一个表达式11,表示它的值
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第七章 MVC框架技术Struts2 第七 MVC 框架 技术 Struts2
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内