Struts2中Action各种转发类型

时间:2022-03-29 17:37:01

Struts2:
Action中result的各种转发类型:

内部请求转发dispatcher(默认值)
 redirect、redirectAction、plainText
1.redirect是重定向到某个路径、视图
<action name="redirect">/***重定向
   <result type="redirect">/employeeAdd.jsp?username=${username}</result>
</action>
URLEncoder.encode("传智播客","UTF-8");
取值解码
在前台<% = URLDecoder.decode(new String(request.getParameter("username").getBytes("ISO8859-1"),"UTF-8"),"UTF-8") %>

2.redirectAction是重定向到某个Action
<action name="redirectAction">
  <resutl type="redirectAction">Action的名称</resutl>
</action>
重定向到另一个包下的Action如何?
<action name="redirectAction">
  <resutl type="redirectAction">
      <param name="actionName">Action名称</param>给源代码的这两个属性注入值
      <param name="namespace">/control/department</param>
  </resutl>
</action>
3.plainText适用于查看某个JSP源代码即显示源代码的时候使用
<action name="plainText">
  <resutl type="plainText">/index.jsp</result>
</action>
结果会将整个视图的源代码输出在浏览器上给用户看UTF-8的模式呈现不会说中文乱码
<action name="plainText">
  <resutl type="plainText">
   <param name="location">/index.jsp</param>
   <param name="charSet">UTF-8</param>
  </result>
</action>
4.大多数Action公用的视图配置
<global-results>
<result name="message">/WEB-INF/page/message.jsp</result>
</global-results>
这段代码放在某个<package></package>代码段中的Action是公用视图外如果想定义全局的话可以
<package name="base" extends="struts-default">
</package>
其它包继承 extentds="base"就OK 各个包中的Action使用公共视图就这样定义全局视图

-------------------------------------------------------------------------------------------------------------

为Action的属性注入值
要实现依赖注入必须提供Set方法
<struts>
<package name="itcast" namespace="/control/employee" extends="struts-default">
   <action name="list" class="cn.itcast.action.HelloWorldAction" method="execute">
     <param name="savepath">/images</param>给Action中的savepath属性注入的值
        <result name="success">/WEB-INF/page/message.jsp</result>
   </action>
</package>
</struts>