STRUTS系列之 Action配置

来源:互联网 发布:张予曦开的淘宝店 编辑:程序博客网 时间:2024/05/17 23:55

基本的配置

//UserAction.javapublic 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.javapublic 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前面,以免出现难以排查的异常。

0 0
原创粉丝点击