【struts2笔记09-11-3】:
包含模块:
<include file=”logi.xml”/>
默认的Action引用:
<default-action-ref name=”error”></default-action-ref>
<action name="error" >
<result>error.jsp</result>
</action>
这样的话,在客户端访问的时候:
http://localhost:8888/struts2_0100_AcessWebElement/adfffsfsdfdf
就会自动导向error.jsp文件。
Result Type 的相关知识点:
<default-action-ref name="error"></default-action-ref>
<action name="r1">
<!-- 默认的result type,相当于forward,服务器跳转到指定页面(只
能跳转到页面,如html,jps,freemaker等,但不能是action;因为是服务器
端跳转,所以浏览器只发送一个请求,地址栏的地址不发生改变 -->
<result type="dispatcher">r1.jsp</result>
</action>
<!-- 客户端跳转页面,因为是客户
端跳转,所以浏览器要发送两个请求,所以地址栏的地址会发生改变 -->
<action name="r2">
<!-- -->
<result type="redirect">r2.jsp</result>
</action>
<action name="error">
<result>error.jsp</result>
</action>
Global Result:全局转向
<package name="user" namespace="/user" extends="struts-default">
<global-results>
<result name="error">/error.jsp</result>
</global-results>
<action name="userlogin" class="com.oristand.actions.UserLoginAction">
<result>/user_success.jsp</result>
</action>
</package>
<package name="admin" namespace="/admin" extends="user">
<action name="adminlogin" class="com.oristand.actions.AdminLoginAction">
<result>/admin_success.jsp</result>
</action>
</package>
这样的话无论是在user包里,还是在admin里,都可以访问到<global-results>
<result name="error">/error.jsp</result>
</global-results>
动态转向:
Struts.xml:
<action name="user" class="com.oristand.actions.UserAction">
<result>${result}</result>
</action>
UserAction.java:
package com.oristand.actions;
import com.opensymphony.xwork2.ActionSupport;
public class UserAction extends ActionSupport {
private int type;
private String result;
public int getType() {
return type;
}
public void setType(int type) {
this.type = type;
}
public String getResult() {
return result;
}
public void setResult(String result) {
this.result = result;
}
@Override
public String execute() throws Exception {
if(type==1){
result = "/success.jsp";
}
else{
result = "/fail.jsp";
}
return SUCCESS;
}
}
带参数的结果集
结论:一次request有且只有一个值栈。所以在服务器端action之间互相forward的时候,可以共享参数,所以在服务器端跳转的时候不需要传递参数,但是在客户端跳转的时候需要传递相应的参数。
Struts.xml:
<action name="user" class="com.oristand.actions.UserAction">
<result type="redirect">/success.jsp?t=${type}</result>
</action>
UserAction.java:
package com.oristand.actions;
import com.opensymphony.xwork2.ActionSupport;
public class UserAction extends ActionSupport {
private int type;
public int getType() {
return type;
}
public void setType(int type) {
this.type = type;
}
@Override