Java Web应用技术与案例教程 教学课件 ppt 作者 杨树林 胡洁萍 第七章 MVC框架技术Struts2

上传人:E**** 文档编号:89401722 上传时间:2019-05-24 格式:PPT 页数:42 大小:526.50KB
返回 下载 相关 举报
Java Web应用技术与案例教程 教学课件 ppt 作者  杨树林 胡洁萍 第七章 MVC框架技术Struts2_第1页
第1页 / 共42页
Java Web应用技术与案例教程 教学课件 ppt 作者  杨树林 胡洁萍 第七章 MVC框架技术Struts2_第2页
第2页 / 共42页
Java Web应用技术与案例教程 教学课件 ppt 作者  杨树林 胡洁萍 第七章 MVC框架技术Struts2_第3页
第3页 / 共42页
Java Web应用技术与案例教程 教学课件 ppt 作者  杨树林 胡洁萍 第七章 MVC框架技术Struts2_第4页
第4页 / 共42页
Java Web应用技术与案例教程 教学课件 ppt 作者  杨树林 胡洁萍 第七章 MVC框架技术Struts2_第5页
第5页 / 共42页
点击查看更多>>
资源描述

《Java Web应用技术与案例教程 教学课件 ppt 作者 杨树林 胡洁萍 第七章 MVC框架技术Struts2》由会员分享,可在线阅读,更多相关《Java Web应用技术与案例教程 教学课件 ppt 作者 杨树林 胡洁萍 第七章 MVC框架技术Struts2(42页珍藏版)》请在金锄头文库上搜索。

1、第七章 MVC框架技术Struts2,本章要点,Struts2配置及应用程序原理 Action的设计方法与结果类型 服务器端的输入验证 Struts2国际化、标签库和OGNL表达式 拦截器、文件上传和下载,7.1 Struts2概述,Struts框架的历史 Struts在经历了1.x的若干版本后,最终发展到2.0版本,也就是我们常说的Struts2。它是Struts和WebWork相互结合的产物,代表了WEB框架的最新技术和规范。本书中Struts2的内容以最新的Struts2.2.3版本为准。,Struts2 下载与配置 下载Struts2 Struts2的下载地址为http:/struts

2、.apache.org。目前可下载到的最新版本是struts2.2.3。下载后得到压缩包struts-2.2.3-lib.zip。解压后的文件夹中包含一个“struts-2.2.3lib”文件夹,该文件夹包含了Struts2的类库。 在NetBeans中使用Struts2,在web.xml中加入如下Struts2核心控制器(过滤器)的配置。 struts2 org.apache.struts2.dispatcher.ng.filter. StrutsPrepareAndExecuteFilter struts2 *.action struts2 *.jsp ,案例7-1 使用Struts2实现

3、博客网站中的用户登录 使用Struts2实现控制层,可以简化控制层的设计。为了逐渐介绍Struts2的知识,这里先实现用户登录功能。 技术要点 按照Struts2的Action的格式定义一个Action类来做为控制类,替换原来用Servlet实现的控制类。这种类可以是普通类,也可以是ActionSurpport的子类。 Struts2的Action需要在struts.xml文件中进行配置。,Struts2的MVC原理,Struts2组件 核心过滤器与web.xml Action:Struts2中Action属于控制层,它可以是任何的POJO对象,默认调用的方法是execute()。 strut

4、s.properties 系统在读取核心配置文件之前,首先加载了核心jar包中的default.properties文件,这个文件中定义了Struts2所使用的基本属性,然后会自动在classpath上去查找struts. properties文件。struts.properties是应用程序给出的属性配置文件,可以通过这个文件来设置属性,以修改在default.properties中定义的默认值。例如: struts.locale=zh_CN struts.i18n.encoding=gbk struts.devMode=true,struts.xml文件 struts.xml是Struts

5、2的核心配置文件,可以配置常量、action、package、result和拦截器等内容。struts.xml中action必须配置在package中。Struts2使用package来管理action、拦截器等核心组件。package就是多个action、多个拦截器、多个拦截器引用组成的集合。,Struts2的中文乱码问题 中文乱码问题一般是指当请求参数有中文时,无法在Action中得到正确的中文。Struts2中有2种办法可以解决这个问题: 设置JSP页面的pageEncoding=“utf-8“,就不会出现中文乱码。 如果JSP页面的pageEncoding=“gbk“ ,那么需要修改如

6、下属性: struts.locale=zh_CN struts.i18n.encoding=gbk 可以增加一个属性文件struts.properites,把属性的设置写在属性文件中。属性文件要放在源包下。,7.2 Action与结果类型,Action的实现类 在Struts2中,Action的设计是非常关键的。Struts2中对Action对象没有特殊要求, Action可以是任意的Java对象,它和Web对象之间没有直接关系,所以这样的Action是非常易于测试的,这也是Struts2中Action的最大优点。 普通的Java对象作为Action 继承ActionSupport实现Acti

7、on 模型驱动(ModelDriven)的Action 属性驱动的Action,在Action中访问Web对象 通过ActionContext访问 ActionContext类位于com.opensymphony.xwork2中,它提供一系列相关方法用于访问保存在ServletContext、HttpSession、HttpServletRequest中的信息,并且存储在Map中。ActionContext是一个局部线程变量,不用担心Action的线程安全。 ActionContext常用的方法: public static ActionContext getContext():获得Actio

8、nContext 对象。 public Map getParameters():从请求对象(HttpServletRequest)中获取请求参数。 public Map getApplication():获取ServletContext中保存的Attribute。 public Map getSession():获取HttpSession中保存的Attribute。,直接访问Web对象 Struts2框架提供org.apache.struts2.ServletActionContext辅助类来获得web对象。 HttpServletRequest request = ServletAction

9、Context.getRequest(); HttpServletResponse response = ServletActionContext.getResponse(); HttpSession session = request.getSession(); ServletContext application = ServletActionContext.getServletContext();,通过IoC访问Servlet对象 在Struts2中,可以通过IoC(依赖注入)将Servlet对象注入到Action中,这一切都是由一组接口决定的,这一组接口有一个共同点,名称都由Aware

10、结尾。 例如,实现如下接口,将以Map类型向Action注入保存在ServletContext中的Attribute集合: public interface ApplicationAware public void setApplication(Map application); 此外,还有SessionAware、ServletResponseAware、ServletRequestAware、ParameterAware等接口。,多方法的Action 前面所定义的Action都是通过execute()方法处理请求。在实际的应用中,如果为每个业务逻辑定义一个Action,虽然实现方便,但是A

11、ction数量多,struts.xml中需要配置的内容也多,使系统非常庞杂。实际上,可以用一个Action处理多个业务请求。 以YbUserAction为例,可以为每个操作定义一个方法,这些方法的格式和execute()方法一样。 public class YbUserAction public String login() throws Exception public String register() throws Exception ,多方法Action的配置及调用方法有如下几种: 为Action配置method属性 动态方法调用 动态方法调用是指采用如下格式调用Action中对应的方

12、法: 控制名!方法名.action 动态方法调用在内部是通过拦截器处理的,因此在使用动态方法调用前,要使Struts2允许动态方法调用。这需要在属性配置文件中将struts.enable.DynamicMethodInvocation属性的值设为true: struts.enable.DynamicMethodInvocation=true,使用通配符映射方式 在struts.xml文件中配置action元素时,它的name、class、method属性都可支持通配符,这种通配符的方式是另一种形式的动态方法调用。当使用通配符定义action的name属性时,相当于用一个元素action定义了多

13、个逻辑Action。例如: 如上,用户请求的URL的模式是YbUser_*。同时method属性值为一个表达式1,表示它的值是name属性值中第一个*的值。例如,用户请求的URL为YbUser_login.action时,将调用YbUserAction类的login()方法;用户请求的URL为YbUser_register.action时,将调用YbUserAction类的register()方法。,Result类型 在配置文件中,action的result子元素用于配置Action跳转的目的地,其基本格式为: 。Action某业务方法的返回值与result的name值相对应,以此来表明该方法

14、执行完将跳转到哪个页面。type可以有多种选择,Struts2支持各种视图技术,例如JSP、JSF、XML等,默认的是JSP。,7.3 输入验证,使用validate()方法 要进行输入验证,Action类要继承ActionSupport,并重写validate()方法。 当请求Action的时候,请求中的参数会自动去填充Action的模型中的同名属性,如果能够从字符串自动转换成相应的Java数据类型,则转换成功,否则会抛出异常。如果类型转换成功,则填充属性,并在调用业务方法前,执行validate()方法来判断所有输入数据的合法性,例如长度是否够,是否是空值等。 输入验证可以针对不同的业务方

15、法,例如,对登录进行输入验证,vaidate()方法可以命名成validateLogin()。如果同时有validate()方法,执行的顺序是先调用validateLogin(),再调用validate(),前面的方法验证没通过,后面的方法不再执行。,使用验证文件验证 使用validate()方法进行输入验证的弊端是显而易见的,由于使用了硬编码的方法,将验证逻辑嵌入到Action的实现类中,使Action变得更加臃肿,同时提高了Action和输入验证之间的耦合度。Struts2框架还提供了一种基于验证文件的输入验证方式,将验证规则保存在特定的验证文件中,使得验证规则同Action之间实现分离,

16、提高了系统的维护性。 验证文件的命名 一般情况下,验证文件的命名规则是:Action类名-validation.xml。如果一个Action有多个逻辑处理方法,要为某个特定方法做验证,可采用如下方式命名:Action类名-Action逻辑名-validation.xml(其中,Action逻辑名,是指struts.xml中的对应该处理方法的action配置中的name值)。可匹配通配符的方式,以区分不同的方法,具体可参考案例7-2。 配置文件要和Action放在相同的文件夹内。运行时,先加载action类名-validation.xml,然后加载action类名-Action逻辑名-validation.xml文件。 校验器 Struts2提供了大量的内置校验器,可在xwork-core-2.2.3.jar的com.opensymphony. xwork2.validator.validators下找到如下配置文件:default.xml,里面列出了所有的内置校验器。校验器的配置风格有两种:字段校验器和非字段校验

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号