【动态方法、通配符、常量】
1.通配符
1)Execute方法的弊端
假设有这样的需求:
A. 有一个action为PersonAction。
B. 在PersonAction中要实现增、删、改、查四个方法。
C. 但是在action中方法的入口只有一个execute方法
D. 所以要想完成这样的功能,有一种方法就是在url链接中加参数。
那么在action中的代码可能是这样的:
PatternAction
public class PatternAction extends ActionSupport{
private String method;
public String execute(){
if(method.equals("add")){
//增加操作
}else if(method.equals("update")){
//修改操作
}else if(method.equals("delete")){
//删除操作
}else{
//查询操作
}
return "";
}
}
可以看出这样写结构并不是很好。而通配符的出现解决了这个问题。
Pattern.jsp
访问PersonAction的add方法:<br>
<a href="${pageContext.request.contextPath}/pattern/patternAction.action">测试</a><br>
Struts-pattern.xml
<package name="pattern" namespace="/pattern"
extends="struts-default">
<action name="patternAction" method="add"
class="cn.itcast.struts2.action.pattern.PatternAction">
</action>
</package>
PatternAction
public String add(){
return "add";
}
2) method属性
Pattern.jsp
访问PersonAction的add方法:<br>
<a href="${pageContext.request.contextPath}/pattern/patternAction.action">测试</a><br>
Struts-pattern.xml
<package name="pattern" namespace="/pattern"
extends="struts-default">
<action name="patternAction" method="add"
class="cn.itcast.struts2.action.pattern.PatternAction">
</action>
</package>
PatternAction
public String add(){
return "add";
}
说明:从上述代码可以看出只要配置文件中的method属性的值和方法名称一样就可以了。但是这种写法有弊端。如果aciton中需要5个方法。则在struts的配置文件中需要写5个配置,这样会导致配置文件的篇幅很大。而且重复性也很大
3) 动态调用方法
在url中通过action名称!方法名称可以动态调用方法。
Pattern.jsp
动态调用PatternAction中的add方法:<br>
<a
href="${pageContext.request.contextPath}/pattern/patternAction!add.action">测试</a>
struts-pattern.xml
<action name="patternAction"
class="cn.itcast.struts2.action.pattern.PatternAction">
</action>
说明:这样的情况在配置文件中不需要method属性。更多精彩教程请关注:免费windows xp电脑系统和xp系统下载基地