Struts2的處理結果(三)
——動態配置結果
1.使用表達式語法
示例:
<struts>
<constant name="struts.enable.DynamicMethodInvocation" value="false" />
<constant name="struts.devMode" value="true" />
<package name="package_a" extends="struts-default">
<!-- 此action匹配所有為test_*.action模式的請求 -->
<action name="test_*" class="testAction.TestAction" method="{1}">
<result name="error">error.jsp</result>
<result>{1}.jsp</result>
</action>
</package>
</struts>
現有test_success.action請求,符合test_*的格式,匹配的方法為success()方法,其邏輯視圖映射的物理視圖資源為success.jsp。
2.由Action的屬性值確定物理視圖資源
通過使用${屬性名.屬性名....}的方式確定物理視圖資源。
示例:
(1)寫一個Action類,其中包含一條屬性name:
package testAction;
import com.opensymphony.xwork2.ActionSupport;
public class Test1Action extends ActionSupport{
//封裝的請求參數
private String name;
//setter、getter方法
public void setName(String name){
this.name = name;
}
public String getName(){
return this.name;
}
//處理請求的邏輯方法
public String execute()throws Exception{
if(name.equals("jiagoushi")){
return SUCCESS;
}else{
return ERROR;
}
}
}
(2)提交Action的頁面welcome.jsp
<form action="test1" method="post">
<input type="text" name="name">
<input type="submit" value="提交">
</form>
(3)物理視圖資源jiagoushi.jsp
(4)配置struts.xml文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<constant name="struts.enable.DynamicMethodInvocation" value="false" />
<constant name="struts.devMode" value="true" />
<package name="package_a" extends="struts-default">
<action name="test1" class="testAction.Test1Action">
<result name="error">error.jsp</result>
<result>${name}.jsp</result>
</action>
</package>
</struts>
通過了Action的屬性name找到了對應的物理視圖資源。