基本的配置
//UserAction.java
public class UserAction extends ActionSupport{
private String name;
public String execute() throws Exception{
.......
return SUCCESS;
}
}
配置如下:
<action name="login" class="com.jeysine.action.UserAction ">
<result>/success.jsp</result>
<result name="error">/error.jsp</result>
</action>
在上述例子中,每一次register请求,就会执行RegisterAction 的execute()方法。假如一个action里面有多个执行请求的方法,这时候可以使用method属性。
使用method属性
修改类如下:
//UserAction.java
public class UserAction extends ActionSupport{
private String name;
public String create() throws Exception{
.......
return SUCCESS;
}
public String execute() throws Exception{
.......
return SUCCESS;
}
public String delete() throws Exception{
.......
return SUCCESS;
}
public String edit() throws Exception{
.......
return SUCCESS;
}
}
修改配置:
<!-- 请求execute()方法 -->
<action name="user" class="com.jeysine.action.UserAction ">
<result>/success.jsp</result>
<result name="error">/error.jsp</result>
</action>
<!-- 请求create()方法 -->
<action name="userCreate" class="com.jeysine.action.UserAction " method="create">
<result>/success.jsp</result>
<result name="error">/error.jsp</result>
</action>
<!-- 请求delete()方法 -->
<action name="userDeletee" class="com.jeysine.action.UserAction " method="delete">
<result>/success.jsp</result>
<result name="error">/error.jsp</result>
</action>
<!-- 请求edit()方法 -->
<action name="userEdit" class="com.jeysine.action.UserAction" method="edit">
<result>/success.jsp</result>
<result name="error">/error.jsp</result>
</action>
使用通配符映射
当遇到大型项目时,action要配置很多,为了减少配置,我们可以使用通配符映射。例如有配置如下:
<action name="create*" class="com.jeysine.action.Create{1}Action">
<reslut>/{1}.jsp</result>
</action>
当有一个请求为createUser时,便会访问CreateUserAction的execute()方法,结果页面为User.jsp。
当有多个匹配符时,我们可以使用下划线来分隔,如:
<action name="*_*" class="com.jeysine.action.{1}Action" method="{2}">
<reslut>/{0}.jsp</result>
</action>
当有一个请求为/User_create时,会访问UserAction里的create()方法。结果页面是User_create.jsp
使用通配符要注意配置的优先级,,例如:
<!-- 配置1 -->
<action name="*" class="com.jeysine.action.Create{1}Action">
<reslut>/{1}.jsp</result>
</action>
<!-- 配置2 -->
<action name="create*" class="com.jeysine.action.Create{1}Action">
<reslut>/{1}.jsp</result>
</action>
<!-- 配置3 -->
<action name="createUser" class="com.jeysine.action.CreateUser.Action">
<reslut>/createUser.jsp</result>
</action>
当有一个请求为/createUser,会选择配置3,若请求为/createManager时,则会使用配置1,因为3的优先级最高,而配置1和2都使用通配符,所以就按配置的顺序来决定优先级。虽然这里的选择配置1和2都没差别,但若是配置1和2访问的不是同个action呢?所以最好是配置2放在配置1前面,以免出现难以排查的异常。