struts2 之 Action的优化配置

总结:struts2种action的配置文件会随着业务的增加而增加,导致配置文件膨胀。struts2中提供了三种方案来解决这个问题:

  1. 动态方法调用来实现。

      2. 通配符配置来解决。

  3. 使用注解的方式来实现。

实例:传统的action配置方法:

一 . Action处理类中有4个处理方法:

public class UserAction {
    public String add(){
        System.out.println("添加");
        return Action.SUCCESS;
    }
    public String delete(){
        System.out.println("删除");
        return Action.SUCCESS;
    }
    public String find(){
        System.out.println("查询");
        return Action.SUCCESS;
    }
    public String update(){
        System.out.println("修改");
        return Action.SUCCESS;
    }
}

Action的配置:

<package name="default" namespace="/" extends="struts-default">
        <!-- 传统的配置方式 -->
        <action name="add" class="cn.sxt.action.UserAction" method="add">
            <result>/index.jsp</result>
        </action>
        <action name="find" class="cn.sxt.action.UserAction" method="find">
            <result>/index.jsp</result>
        </action>
        <action name="delete" class="cn.sxt.action.UserAction" method="delete">
            <result>/index.jsp</result>
        </action>
        <action name="update" class="cn.sxt.action.UserAction" method="update">
            <result>/index.jsp</result>
        </action>
    </package>

二. 动态方法  优化实例:

1. 动态方法调用首先需要将下面常量配置为 true

<!-- 配置动态方法调用为true,不同版本默认配置不一致 -->
    <constant name="struts.enable.DynamicMethodInvocation" value="true"/>

2. 在struts.xml配置文件中,只需要配置一个action即可:

<action name="userAction" class="cn.sxt.action.UserAction">
     <result>/index.jsp</result>
 </action>

3. 再调用action时,需要按照一下规定进行调用:ActionName!methodName.action

  如:http://localhost:8080/action_cfg/userAction!delete.action

 

三 . 使用通配符配置类解决action配置优化问题。

<!-- 使用通配符进行action的配置
             * 表示匹配多个字符
             {1} 表示占位符 1表示的第一个*的内容
             如果请求的是add.action,那么* 表示add  {1}表示add
          -->
          <action name="*" class="cn.sxt.action.UserAction" method="{1}">
              <result>/index.jsp</result>
          </action>

注意:如果使用通配符进行配置action,需要注意不同的处理方法返回值的问题。如果有指定名称的action,那么首先匹配指定名称的action,没有再匹配通配符。

四. 使用注解来进行action的配置:

1.导入struts2-convention-plugin-2.3.4.jar

2.在action类上配置注解 如:

@ParentPackage("struts-default") 
@Namespace("/") 
public class UserAction {
    @Action(value="/add",
            results={@Result(name="success", location="/index.jsp", type="redirect"),
            @Result(name="error", location="/error.jsp", type="redirect")})
    public String add(){
        System.out.println("添加");
        return "success";
    }
    @Action("/delete")
    public String delete(){
        System.out.println("删除");
        return "success";
    }
    @Action("/find")
    public String find(){
        System.out.println("查询");
        return "success";
    }
    @Action("/update")
    public String update(){
        System.out.println("修改");
        return "success";
    }
}

 

 

 

 

 

   

 

posted on 2017-04-14 14:22  forever_2h  阅读(287)  评论(0编辑  收藏  举报

导航