1.result的type类型4种:
dispatcher/redirect/chain/redirectAction ,其中default值为dispatcher
<package name="index" namespace="/yanlu" extends="struts-default">
<action name="yan1" >
<result type="dispatcher">/yan1.jsp</result>
</action>
<action name="yan2" >
<result type="redirect">/yan2.jsp</result>
</action>
<action name="yan3" >
<result type="chain">yan1</result>
</action>
<action name="yan4" >
<result type="redirectAction">yan2</result>
</action>
</package>
例子中,yan1,yan3执行后现实页面都为yan1.jsp
yan2,yan4执行后现实页面都为yan2.jsp
dispatcher,redirect跳转的页面为jsp,html等得前台界面
chain,redirectAction跳转为action跳转
2.global-results和extends
index.jsp
<ol>
<span style="white-space:pre"> </span><li><a href="user/user?type=1">返回success</a></li>
<span style="white-space:pre"> </span><li><a href="user/user?type=2">返回error</a></li>
<span style="white-space:pre"> </span><li><a href="user/user?type=3">返回global result</a></li>
<span style="white-space:pre"> </span><li><a href="admin/admin">admin,继承user包</a></li>
</ol>
UserAction.java
public String execute() throws Exception {
<span style="white-space:pre"> </span>if(type == 1) {return "success";}
<span style="white-space:pre"> </span>else if (type == 2) {return "error";}
<span style="white-space:pre"> </span>else {return "mainpage";}
<span style="white-space:pre"> </span>}
返回对应result的name的值。result的name属性默认值为success
AdminAction.java
public String execute() throws Exception {
return "mainpage";
}
struts.xml
<struts>
<constant name="struts.devMode" value="true" />
<package name="user" namespace="/user" extends="struts-default">
<global-results>
<result name="mainpage">/main.jsp</result>
</global-results>
<action name="user" class="com.bjsxt.struts2.user.action.UserAction">
<result>/user_success.jsp</result>
<result name="error">/user_error.jsp</result>
</action>
</package>
<package name="admin" namespace="/admin" extends="user">
<action name="admin" class="com.bjsxt.struts2.user.action.AdminAction">
<result>/admin.jsp</result>
</action>
</package>
</struts>
例子:个人感觉global-result用处不大,action的excute()返回值为"mainpage",才会调用。不过学习 了,还是记下。
extends默认值:struts-defaults.在当前package的action中找不到对应的result,根据extends去父package中找global-results.
3.动态结果集
UserAction.java
public String execute() throws Exception {
if(type == 1) r="/user_success.jsp";
else if (type == 2) r="/user_error.jsp";
return "success";
}
<ol>
<li><a href="user/user?type=1">返回success</a></li>
<li><a href="user/user?type=2">返回error</a></li>
</ol>
<struts>
<constant name="struts.devMode" value="true" />
<package name="user" namespace="/user" extends="struts-default">
<action name="user" class="com.bjsxt.struts2.user.action.UserAction">
<result>${r}</result>
</action>
</package>
</struts>
基本用不到,用不到,用不到。。。重要的事情说三遍。
4.参数传递
index.jsp
<ol>
<li><a href="user/user?type=1">传参数</a></li>
</ol>
参数type放在action context的paramters中
struts.xml
<struts>
<constant name="struts.devMode" value="true" />
<package name="user" namespace="/user" extends="struts-default">
<action name="user" class="com.bjsxt.struts2.user.action.UserAction">
<result type="redirect">/user_success.jsp?t=${type}</result>
</action>
</package>
</struts>
struts.xml取action context中参数用 $
例子: t=${type}
public class UserAction extends ActionSupport {
private int type;
public int getType() {
return type;
}
public void setType(int type) {
this.type = type;
}
@Override
public String execute() throws Exception {
return "success";
}
}
注意struts.xml中取参数的方法:${}