当前位置:文档之家› 2struts2中常用的配置文件及result返回类型

2struts2中常用的配置文件及result返回类型

1.web.xml文件主要完成对StrutsPrepareAndExecuteFilter的配置(在以前的版本中是对FilterDispatcher配置,新版本同样支持用FilterDispatcher配置),它的实质是一个过滤器,它负责初始化整个Struts框架并且处理所有的请求。

这个过滤器可以包括一些初始化参数,有的参数指定了要加载哪些额外的xml 配置文件,还有的会影响struts框架的行为。

除了StrutsPrepareAndExecuteFilter外,Struts还提供了一个ActionContexCleanUp类,它的主要任务是当有其它一些过滤器要访问一个初始化好了的struts框架的时候,负责处理一些特殊的清除任务。

2.struts.xml文件框架的核心配置文件就是这个默认的struts.xml文件,在这个默认的配置文件里面我们可以根据需要再包括其它一些配置文件。

在通常的应用开发中,我们可能想为每个不同的模块单独配置一个struts.xml文件,这样也利于管理和维护。

这也是我们要配置的主要文件3.struts.properties(参default.properties)在Struts框架使用了很多属性,我们可以通过改变这些属性来满足我们的需求。

要改变这些属性,只需在struts.properties文件中指定属性的key和value即可。

属性文件可以放在任何一个包含在classpath中的路径上,但是通常我们都把它放在/WEB-INF/classes目录下面。

我们可以在struts-default.properties文件中找到一个属性的列表。

4.struts-default.xml此文件是struts2框架默认加载的配置文件,它定义了struts2一些核心bean和拦截器,它会自动包含(included)到struts.xml文件中(实质是通过<package extends="struts-default">),并为我们提供了一些标准的配置。

我们可以在struts2-core.jar中找到这个文件。

5.其它配置文件velocity.properties,struts-default.vm,struts-plugin.xml struts.xml文件的配置Struts2的核心配置文件,由程序员开发编写,包含Action、result 等配置信息,主要负责管理Struts2框架的业务控制器Action。

在开发中,当修改一些配置时总是不能及时地更新到服务器,我们总会重新部署或重启来更新改变的内容,在struts2中可以通过一个常量来达到此目的。

即在struts.xml中的<struts>元素下增加如下内容:<constant name="struts.configuration.xml.reload" value="true" />这样配置后,当配置文件修改保存时就会及时更新到服务器中。

此文件中可以配置的常用的常量:<!-- 指定WEB应用的编码集,相当于调用HttpServletRequest.setCharacterEncoding方法,如果使用了velocity或freemarker,它也用于指定输出的编码格式 --><constant name="struts.i18n.encoding"value="UTF-8"/><!-- 指定请求后缀为.action,指定多个请求后缀用逗号分隔 --><constant name="struts.action.extension"value="do,action"/><!--设置浏览器是否缓存静态内容,建议:开发阶段关闭,运行时开启 --><constant name="struts.serve.static.browserCache"value="false"/> <!--当struts.xml配置文件修改后,系统是否重新加载该文件,开发阶段打开此功能 --><constant name="struts.configuration.xml.reload"value="true"/> <!-- 开发提示:出错时打印更详细的信息--><constant name="struts.devMode"value="true"/><!-- 设置默认的视图主题 --><constant name="struts.ui.theme"value="simple"/><!-- 与spring集成时,指定由spring负责action对象的创建 --><constant name="struts.objectFactory"value="spring"/><!-- 该属性设置Struts 2是否支持动态方法调用,该属性的默认值是true。

如果需要关闭动态方法调用,则可设置该属性为 false --><constant name="struts.enable.DynamicMethodInvocation"value="false"/><!-- 上传文件的大小限制 --><constant name="struts.multipart.maxSize"value="10701096"/>指定多个struts配置文件在大部分应用里,随着应用规模的增加,系统中Action的数量也会大量增加,导致struts.xml配置文件变得非常臃肿。

为了避免struts.xml文件过于庞大、臃肿,提高struts.xml文件的可读性,我们可以将一个struts.xml配置文件分解成多个配置文件,然后在struts.xml文件中包含其他配置文件。

下面的struts.xml通过<include>元素指定多个配置文件:<struts><include file="struts_user.xml"/><include file="struts_product.xml"/></struts>*通配符在action元素的name属性中可以使用*通配符,它可以匹配除了/以外的多个连续字符,在action元素的class和method属性以及result元素中可以引用*通配符在访问期间实际匹配的内容,例如:<action name="message_*"class="com.qwy.action.MessageAction"method="{1}"><result>/WEB-INF/page/{1}.jsp</result></action>使用*通配符可能导致有多个action元素与一个访问路径匹配,这时候以排在配置文件中最后的配置项为准,所以更具体的模式应在更不具体的模式之后进行配置返回类型result1.每个action 方法都将返回一个String 类型的值, Struts 将根据这个值来决定响应什么结果.2.每个Action 声明都必须包含有数量足够多的result 元素,每个result 元素分别对应着action 方法的一个返回值.3.result 元素可以有下面两个属性一、name: 结果的名字, 必须与Action 方法的返回值相匹配, 默认值为success二、type: 响应结果的类型. 默认值为dispatcher所有的type类型我们可以在struts2-core-2.3.16.jar下的struts-default.xml文件中找到:如下图:Type类型值对应类作用说明chain 用来处理Action链,被跳转的Action中仍能获取上个页面的值,其中的dispatcher是默认的处理类型,主要用于与JSP整合,而chain、dispatcher、redirect是我们比较常用的。

redirect这种结果集类型与dispatcher非常相似,dispatcher结果集类型是将请求forward到JSP视图资源,而redirect类型是将请求重定向到JSP视图资源,他们之间最大的区别就是一个转发请求、一个重定向请求。

如果是重定向了请求,那么将丢失所有的参数,其中包括Action的处理结果。

dispatcher类型:dispatcher 结果类型是最常用的结果类型, 也是struts 框架默认的结果类型。

<package name="test1"namespace="/"extends="struts-default"> <action name="test1"class="com.qwy.action.TestAction1" method="show"><result<resulttype="dispatcher"><param name></action></package>该结果类型有一个<package name="test1"="struts-default"> <action name=method="show"><result<param name="location">/index.jsp</param></result><param name="info">admin</param></action></package>对应的Action类:package com.qwy.action;public class TestAction1 {private String info;public String show(){System.out.println("TestAction1.show()");return"success";}public String getInfo() {return info;}public void setInfo(String info) { = info;}}redirect类型:redirect 结果类型将把响应重定向到另一个资源, 而不是转发给该资源.redirect 结果类型接受下面这些参数:1.location: 用来给出重定向的目的地2.parse: 用来表明是否把location 参数的值视为一个OGNL表达式来解释. 默认值为trueredirect 结果类型可以把响应重定向到一个外部资源<action name="test1"class="com.qwy.action.TestAction1"method="show"> <result type="redirect"><param name="location">/index.jsp</param></result><param name="info">admin</param></action>等同:<action name="test1"class="com.qwy.action.TestAction1"method="show"> <result type="redirect">/index.jsp</result><param name="info">admin</param></action>在使用redirect时,用户完成一次与服务器之间的交互,浏览器需要发送两次请求,如下图:使用redirect 结果类型的工作过程:1、 浏览器发出一个请求,Struts2框架对应的Action 实例对请求进行处理。

相关主题