struts2中result类型有chain、dispatcher、redirect、redirectAction。
1)dispatcher类型:
默认跳转类型,用于返回一个视图资源(如JSP)。用于页面转发,页面跳转过程是同一个过程,Action中的数据一直保存。
如<result name=“success”>/main.jsp</result>与 <result name=“success” type="dispatcher">/main.jsp</result>是相同效果。
2)redirect类型:
用于重定向到一个页面、action、网址。把一个http返回码(SUCCESS)以及返回的页面位置重新发给服务器,由web服务器产生一个新的HTTP请求,产生新的线程,保存在原Action中的数据无法访问。如果需要访问,则在action中带参数,参数为一个OGNL表达式,此时该变量必须在前action中有set/get方法,使用${变量名}即可访问到该数据。
如:<result name="topic" type="redirect">/deleteuser.action?topicId=${topicId}</result>
3)redirectAction类型:
与redirect类型用法相同。
<result name="topic" type="redirectAction">
<param name="actionName">findTopics</param> //重定向的action名
<param name="topicId">${topicId}</param> //需要传递的参数
<param name="namespace">重定向Action所在的名字空间</param>//若两个action不在同一个package下,需要配置该参数
</result>
4)chain类型:
用于把相关的几个action连接起来,共同完成一个功能。处于chain中的action属于同一个http请求,共享一个ActionContext。
<action name="step1" class="test.Step1Action">
<result name="success" type="chain">step2.action</result>
</action>
<action name="step2" class="test.Step2Action">
<result name="success">finish.jsp</result>
</action>
若action不在同一个package下,需要配置命名空间这个参数。如下
<package name="resultType" namespace="/r" extends="struts-default"> <action name="r1"> <result type="chain"> <param name="actionName">r2</param> <param name="namespace">/pp</param> <param name="method">method123</param> </result> </action> </package> <package name="paramsRedirect" namespace="/pp" extends="struts-default"> <action name="r2"> <result>/1.jsp</result> </action>
5)plaintextj 结果类型:
用于直接在页面上显示源代码
<result name="err" type="plaintext"> < param name="location">具体的位置</param> < param name="charSet">字符规范(如GBK)</param> < /result>