Struts2应用与实例介绍.ppt
《Struts2应用与实例介绍.ppt》由会员分享,可在线阅读,更多相关《Struts2应用与实例介绍.ppt(87页珍藏版)》请在三一办公上搜索。
1、第3章 Struts 2应用,3.1 Struts 2概述,3.2 Struts 2基本应用及工作流程,3.3 Struts 2标签库应用,3.4 Struts 2拦截器,3.5 Struts 2国际化应用,3.6 Struts 2文件上传,3.7 Struts 2综合应用实例添加学生信息,3.1 Struts 2概述,3.1.1 MVC简介MVC有以下优点:多个视图可以对应一个模型。按MVC设计模式,一个模型对应多个视图,可以减少代码的复制及代码的维护量,一旦模型发生改变,也易于维护。模型返回的数据与显示逻辑分离。模型数据可以应用任何显示技术,例如,使用JSP页面、Velocity模板或者直
2、接产生Excel文档等。应用被分隔为三层,降低了各层之间的耦合,提供了应用的可扩展性。控制层的概念也很有效,由于它把不同的模型和不同的视图组合在一起,完成不同的请求,因此控制层可以说是包含了用户请求权限的概念。MVC更符合软件工程化管理的精神。不同的层各司其职,每一层的组件具有相同的特征,有利于通过工程化和工具化产生管理程序代码。,3.1.2 Struts 2体系结构,Struts 2的基本流程如下:Web浏览器请求一个资源。过滤器Dispatcher查找请求,确定适当的Action。拦截器自动对请求应用通用功能,如验证和文件上传等操作。Action的execute方法通常用来存储和(或)重新
3、获得信息(通过数据库)。,结果被返回到浏览器。可能是HTML、图片、PDF或其他。其实,Struts 2框架的应用着重在控制上。简单的流程是:页面控制器页面。最重要的是控制器的取数据与处理后传数据的问题。Struts 2的体系结构还可以参考图3.1,更直观地展现出其流程。,图3.1 Struts 2体系结构,3.2 Struts 2基本应用及工作流程,3.2.1 简单Struts 2实例开发1.下载Struts 2框架MyEclipse 6没有对Struts 2的支持,所以需要用户自己下载Struts 2开发包。登录下载Struts 2完整版,本书使用的是。将下载的Zip文件解压缩,它是一个典
4、型的Web结构。打开其文件夹,里面包含以下4个文件:apps:包含基于Struts 2的示例应用,是学习Struts 2非常有用的资料。docs:包含Struts 2的相关文档,如Struts 2快速入门、Struts 2文档、API文档等内容。lib:包含Struts 2框架的核心类库,以及Struts 2的第三方插件类库。src:包含Struts 2框架的全部源代码。2.建立一个Web项目打开MyEclipse,建立一个Web项目,命名为“Struts 2.0”。,3.2.1 简单Struts 2实例开发,3.加载Struts 2基本类库下面把这几个类库添加到项目中。右击项目名,选择【Bu
5、ild Path】【Configure Build Path】菜单项,出现如图3.2所示的对话框。单击【Add External JARs】按钮,进入下载的Struts 2目录的lib文件夹,选中上面的5个Jar包,单击【OK】按钮完成类库的添加。,图3.2 添加Struts 2的Jar包,3.2.1 简单Struts 2实例开发,4.修改web.xml文件打开项目中的WebRoot/WEB-INF/web.xml文件,修改其代码如下:struts 2org.apache.struts2.dispatcher.FilterDispatcherstruts 2/*,3.2.1 简单Struts
6、2实例开发,5.创建hello.jsp选择【WebRoot】【new】【jsp】菜单项,在File Name中输入文件名“hello.jsp”,修改后的代码如下:struts 2应用 请输入姓名:,3.2.1 简单Struts 2实例开发,6.Action实现类右击src文件夹,选择【new】【Package】菜单项,在name框中输入包名“org.action”,右击该包,依此类推,建立class,命名为“StrutsAction”,修改后的代码如下:package org.action;import java.util.Map;import com.opensymphony.xwork2.
7、ActionContext;import com.opensymphony.xwork2.ActionSupport;public class StrutsAction extends ActionSupportprivate String name;public String getName()return name;public void setName(String name)this.name=name;public String execute()throws Exception if(!name.equals(HelloWorld)Map request=(Map)ActionCo
8、ntext.getContext().get(request);request.put(name,getName();return success;elsereturn error;,3.2.1 简单Struts 2实例开发,7.创建并配置struts.xml文件任何一个Struts 2程序都不能缺少struts.xml文件,它是Struts 2运行的核心。右击src文件夹,选择【new】【file】菜单项,在File name框中输入“struts.xml”,修改后的代码如下:/welcome.jsp/hello.jsp,3.2.1 简单Struts 2实例开发,8.创建welcome.js
9、p创建welcome.jsp,其步骤和上面创建hello.jsp类似,这里不再重复叙述。其代码如下:struts 2应用 hello!,3.2.1 简单Struts 2实例开发,9.部署和运行启动Tomcat后,在浏览器中输入“http:/localhost:8080/Struts2.0/hello.jsp”,会看到如图3.3所示的界面。当在输入框中输入“张三”时,会出现如图3.4所示界面。如果输入“HelloWorld”,就会返回当前页面。,图3.3 运行界面 图3.4 运行成功界面,3.2.2 Struts 2工作流程及各种文件详解,1.Struts 2的工作流程Struts 2框架中的配
10、置文件struts.xml会起映射作用,它会根据“*”来决定调用用户定义的哪个Action类。例如在项目Struts 2.0中,请求为struts.action,前面“*”的部分是“struts”,所以在struts.xml中有个Action类的name为“struts”,这表示该请求与这个Action来匹配,就会调用该Action中class属性指定的Action类。但是在Struts 2中,用户定义的Action类并不是业务控制器,而是Action代理,其并没有和Servlet API耦合。所以Struts 2框架提供了一系列的拦截器,它负责将HttpServletRequest请求中的请
11、求参数解析出来,传入到用户定义的Action类中。,3.2.2 Struts 2工作流程及各种文件详解,2.Struts 2中各种文件详解(1)web.xml文件后面的webapp标签中配置了下面这样一段:struts2 org.apache.struts2.dispatcher.FilterDispatcher struts2/*可以看出,里面配置了一个过滤器,那么就先来介绍过滤器的使用。Filter过滤器是Java项目开发中的一种常用技术。它是用户请求和处理程序之间的一层处理程序。它可以对用户请求和处理程序响应的内容进行处理,通常用于权限控制、编码转换等场合。,3.2.2 Struts 2
12、工作流程及各种文件详解,所有过滤器必须实现接口,这个接口中含有3个过滤器类必须实现的方法:init(FilterConfig):Servlet过滤器的初始化方法,Servlet容器创建Servlet过滤器实例后将调用这个方法。doFilter(ServletRequest,ServletResponse,FilterChain):完成实际的过滤操作,当用户请求与过滤器关联的URL时,Servlet容器将先调用过滤器的doFilter方法,返回响应之前也会调用此方法。FilterChain参数用于访问过滤器链上的下一个过滤器。destroy():Servlet容器在销毁过滤器实例前调用该方法,这
13、个方法可以释放Servlet过滤器占用的资源,过滤器类编写完成后,必须要在web.xml中进行配置,格式如下:过滤器名 过滤器对应类参数名称参数值,3.2.2 Struts 2工作流程及各种文件详解,过滤器的关联方式有3种:与一个URL关联、与一个URL目录下的所有资源关联、与一个Servlet关联。与一个URL资源关联:过滤器名xxx.jsp与一个URL目录下的所有资源关联:过滤器名/*与一个Servlet关联:过滤器名Servlet名称,3.2.2 Struts 2工作流程及各种文件详解,(2)struts.xml文件struts.xml文件通常放在Web应用程序的WEB-INF/clas
14、ses目录下,该目录下的struts.xml将被Struts 2框架自动加载。struts.xml文件是一个XML文件,文件前面是XML的头文件,然后是标签,位于Struts 2配置的最外层,其他标签都是包含在它里面的。(3)package元素与Java中的包不同的是,Struts 2中的包可以扩展另外的包,从而“继承”原有包的所有定义,并可以添加自己包的特有配置,以及修改原有包的部分配置。从这一点上看,Struts 2中的包更像Java中的类。package有以下几个常用属性:name:该属性是必选的,指定包的名字,这个名字将作为引用该包的键。extends:该属性是可选的,允许一个包继承一
15、个或多个先前定义的包。abstract:该属性是可选的,将其设置为true,可以把一个包定义为抽象的。,3.2.2 Struts 2工作流程及各种文件详解,namespace:该属性是可选的,将保存的action配置为不同的名称空间。看下面这个例子:/foo.jsp/bar.jsp/moo.jsp/bar.jsp,3.2.2 Struts 2工作流程及各种文件详解,(4)Action元素当一个请求匹配到某个Action名字时,框架就使用这个映射来确定如何处理请求。/welcome.jsp/hello.jsp如果一个请求要调用Action类中的其他方法,就需要在Action配置中加以配置。例如,
16、如果在中有另外一个方法为:public String find()throws Exceptionreturn SUCCESS;那么如果想要调用这个方法,就必须在Action中配置method属性,其配置方法为:/welcome.jsp/hello.jsp,3.2.2 Struts 2工作流程及各种文件详解,(5)result元素一个result代表一个可能的输出。当Action类中的方法执行完成时,返回一个字符串类型的结果代码,框架根据这个结果代码选择对应的result,向用户输出。参数值param中的name属性有两个值:location:指定逻辑视图。parse:是否允许在实际视图名中使
17、用OGNL表达式,参数默认为true。result中的name属性有如下值:success:表示请求处理成功,该值也是默认值。error:表示请求处理失败。none:表示请求处理完成后不跳转到任何页面。input:表示输入时如果验证失败应该跳转到什么地方(关于验证后面会介绍)。login:表示登录失败后跳转的目标。,3.2.2 Struts 2工作流程及各种文件详解,type(非默认类型)属性支持的结果类型有以下几种:chain:用来处理Action链。chart:用来整合JFreeChart的结果类型。dispatcher:用来转向页面,通常处理JSP,该类型也为默认类型。freemarke
18、r:处理FreeMarker模板。httpheader:控制特殊HTTP行为的结果类型。jasper:用于JasperReports整合的结果类型。jsf:JSF整合的结果类型。redirect:重定向到一个URL。redirect-action:重定向到一个Action。stream:向浏览器发送InputStream对象,通常用来处理文件下载,还可用于返回AJAX数据。tiles:与Tiles整合的结果类型。velocity:处理Velocity模板。xslt:处理XML/XLST模板。plaintext:显示原始文件内容,如文件源代码。,3.2.2 Struts 2工作流程及各种文件详解
19、,edirect-action类型用于当一个Action处理结束后,直接将请求重定向到另一个Action。如下列配置:/welcome.jsp/hello.jspstruts,3.2.2 Struts 2工作流程及各种文件详解,(6)ActionSupport类ActionSupport类为Action提供了一些默认实现,主要包括预定义常量、从资源文件中读取文本资源、接收验证错误信息和验证的默认实现。下面是ActionSupport类所实现的接口:public class ActionSupport implements Action,Validateable,ValidationAware,
20、TextProvider,LocaleProvider,Serializable Action接口同样位于包,定义了一些常量和一个execute()方法。public interface Action public static final String SUCCESS=success;public static final String NONE=none;public static final String ERROR=error;public static final String INPUT=input;public static final String LOGIN=login;pu
21、blic String execute()throws Exception;,3.2.2 Struts 2工作流程及各种文件详解,由于节的例子中继承了ActionSupport类,所以可以看出,在execute的返回值中,其代码可以改为:public String execute()throws Exception if(!name.equals(HelloWorld)Map request=(Map)ActionContext.getContext().get(request);request.put(name,getName();return SUCCESS;elsereturn ERRO
22、R;,3.2.3 Struts 2数据验证及验证框架的应用,1.数据校验下面来看其实现,可以把节的例子中的Action类改写成。如果执行该方法之后,Action类的fieldErrors中已经包含了数据校验错误信息,将把请求转发到input逻辑视图处,所以要在Action配置中加入以下代码:/welcome.jsp/hello.jsp/hello.jsp,3.2.3 Struts 2数据验证及验证框架的应用,把JSP页面改写一下(标签的具体应用会在3.3节具体讲解):struts 2,3.2.3 Struts 2数据验证及验证框架的应用,修改之后,部署运行。不输入任何姓名直接提交,将会看到如图
23、3.5所示的界面。,图3.5 校验结果,3.2.3 Struts 2数据验证及验证框架的应用,2.Struts 2验证框架的应用Struts 2提供了校验框架,只需要增加一个校验配置文件,就可以完成对数据的校验。Struts 2提供了大量的数据校验器,包括表单域校验器和非表单域校验器两种。(1)必填字符串校验器其校验规则定义文件如下:true姓名是必需的!,3.2.3 Struts 2数据验证及验证框架的应用,下面具体介绍其他校验框架的应用。(2)必填校验器该校验器的名字是required,也就是属性中的type=required,该校验器要求指定的字段必须有值,与必填字符串校验器最大的区别就
24、是可以有空字符串。如果把上例改为必填校验器,其代码应为:姓名是必需的!,3.2.3 Struts 2数据验证及验证框架的应用,(3)整数校验器该校验器的名字是int,该校验器要求字段的整数值必须在指定范围内,故其有min和max参数。如果有个age输入框,要求其必须是整数,且输入值必须在18与100之间,该校验器的配置应该为:18100年龄必须在18至100之间,3.2.3 Struts 2数据验证及验证框架的应用,(4)日期校验器该校验器的名字是date,该校验器要求字段的日期值必须在指定范围内,故其有min和max参数。其配置格式如下:1980-01-012009-12-31日期必须在19
25、80-01-01至2009-12-31之间,3.2.3 Struts 2数据验证及验证框架的应用,(5)邮件地址校验器该校验器的名称是email,该校验器要求字段的字符如果非空,就必须是合法的邮件地址。如下面的代码:必须输入有效的电子邮件地址,3.2.3 Struts 2数据验证及验证框架的应用,(6)网址校验器该校验器的名称是url,该校验器要求字段的字符如果非空,就必须是合法的URL地址。如下面的代码:必须输入有效的网址,3.2.3 Struts 2数据验证及验证框架的应用,(7)字符串长度校验器该校验器的名称是stringlength,该校验器要求字段的长度必须在指定的范围内,一般用于密
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Struts2 应用 实例 介绍
链接地址:https://www.31ppt.com/p-6521439.html