Struts2笔记 - 03 result配置的各种视图转发类型

result配置的各种视图转发类型

 

Strust2中的几种转发类型


dispatcher(默认)、redirect、redirectAction、plainText

<result type="redirect">/xxx.jsp</result>

■<------------redirect--------->
【ognl表达式】

<action name="redirect" class="struts2.demo.action.DemoAction">
 <result type="redirect">/target.jsp?uid=${uid}</result>
</action>

 

 

可以采用ognl表达式访问action中的属性

 

package struts2.demo.action;
public class DemoAction{
 private String uid;
 public void setUid(String uid){
  this.uid=uid; 
 }
 public String getUid(){
  return this.uid;
 }
 public String execute(){
  this.setUid("ABC");
  return "success";
 }
}

 

 

这样重定向之后的页面路径为
http://127.0.0.1:8080/Struts2/target.jsp?uid=ABC

注意:如果要传递中文则需要编码

URLEncoder.encode("中文","utf-8");

 

 

在jsp页面上可以采用${param.uid}来获取参数值 如果值为中文需要转码

URLDecoder.decode(new String(request.getParameter("uid").getBytes("ISO-8859-1"),"utf-8"),"utf-8");

 

 

■<------------redirectAction--------->

<action name="redirect" class="struts2.demo.action.DemoAction">
 <result type="redirectAction">
  helloworld
 </result>
</action>

 

如果要重定向到其他命名空间下的action则需要采用param属性

 

<package name="pack1" namespace="/demo" extends="struts-default">
<action name="helloworld" class="struts2.demo.action.HelloWorldAction">
 <result>/WEB-INF/hello.jsp </result>
</action>
</package>

<package name="pack2" namespace="/demo" extends="struts-default">
<action name="redirect" class="struts2.demo.action.DemoAction">
 <result type="redirectAction">
  <param name="actionName">helloworld</param>
  <param name="namespace">/demo</param>
 </result>
</action>
</package>

 


■<------------plainText--------->
原样显示视图的源代码

如果要显示中文则需要注入一下编码类型

<result type="plainText">
 <param name="location">helloworld</param>
 <param name="charSet">utf-8</param>
</result>

 

■配置共用视图

<package name="pack1" namespace="/demo" extends="struts-default">
<global-results>
 <result name="head">/WEB-INF/skin/head.jsp</result>
</global-results>
<action name="helloworld" class="struts2.demo.action.HelloWorldAction">
 <result>/WEB-INF/hello.jsp</result>
</action>
</package>

 

 

public class HelloWorldAction{
 public String execute(){
  return "head";
 }
}

 
此处配置的global-results只可以在当前包中共用 如果想要所有包共用可以将其放入一个base包中 然后让所有package继承这个base包

你可能感兴趣的:(jsp,Web,struts)