Struts2的处理结果(一)
——处理结果的配置
1.处理结果
在Action处理完用户请求之后,并不会直接生成响应,而是把一个字符串返回给Struts2框架,再由框架选择此字符串结果对应的物理视图资源响应给浏览者。
Struts2将处理结果转向实际的物理资源时,这些物理资源可以是JSP、FreeMarker或者是下一个Action或Action链。
2.处理结果的配置
在struts.xml中使用<result>标签配置处理结果,在此项中确定逻辑资源和物理资源之间的映射关系。
3.局部结果
<result>元素作为<action>元素的子元素,一个<action>元素下可以包含多个<result>元素。这些<result>元素只对此<action>有效。
代码:
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> <struts> <constant name="struts.enable.DynamicMethodInvocation" value="false" /> <constant name="struts.devMode" value="true" /> <package name="package_a" extends="struts-default"> <action name="test1" class="testAction.Test1Action"> <!-- 在action元素的下的result元素是一个局部结果 该结果只对此action有效 --> <result name="error">error.jsp</result> <result name="success">welcome.jsp</result> </action> </package> </struts>
4.全局结果
<result>元素作为<global-result>元素的子元素,该<result>就代表了一个全局结果,全局结果对所有的Action有效(相同的<package>下)。
代码:
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> <struts> <constant name="struts.enable.DynamicMethodInvocation" value="false" /> <constant name="struts.devMode" value="true" /> <package name="package_b" extends="struts-default"> <!-- 定义全局结果 --> <global-results> <result name="success">welcome.jsp</result> </global-results> </package> </struts>
5.配置<result>
(1)<result>中通常有如下两个属性:
1)name:逻辑视图名,可以是Action类处理请求后返回的字符串内容。
2)type:结果类型。
代码:
<struts> <constant name="struts.enable.DynamicMethodInvocation" value="false" /> <constant name="struts.devMode" value="true" /> <package name="package_a" extends="struts-default"> <action name="test1" class="testAction.Test1Action"> <result name="error" type="dispatcher">error.jsp</result> <result name="success" type="dispatcher">welcome.jsp</result> </action> </package> </struts>
(2)在<result>的属性中,type属性可以省略,它的默认type属性为dispatcher(type的默认值也可以通过修改配置文件修改);name属性也可省略,省略时代表name默认为success。
代码:
<struts> <constant name="struts.enable.DynamicMethodInvocation" value="false" /> <constant name="struts.devMode" value="true" /> <package name="package_a" extends="struts-default"> <action name="test1" class="testAction.Test1Action"> <!-- 省略type属性,默认为dispatcher --> <result name="error">error.jsp</result> <!-- 省略name和type属性,默认为:name="success" type="dispatcher" --> <result>welcome.jsp</result> </action> </package> </struts>