Struts2 的学习笔记(五) action的优化配置

action的优化配置

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

a)         动态方法调用来实现

b)        通配符配置来解决

c)         使用注解的方式来解决。

传统的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>

 

2.       动态方法调用简化action的配置:

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

<!-- 配置动态方法调用为true,不同版本默认配置不一致 -->

   <constant name="struts.enable.DynamicMethodInvocation" value="true"/>

b)        在struts.xml配置文件中,只需配置一个action即可

<!-- 动态方法调用方式 -->

       <action name="userAction" class="cn.sxt.action.UserAction">

         <result>/index.jsp</result>

       </action>

c)         在调用action时,需要按照以下规则进行调用:

ActionName!methodName.action

       调用方式:http://localhost:8080/action_cfg/userAction!delete.action

       注意:使用动态方法调用,需要注意不同的处理方法返回值的问题。不同处理方法的返回值应该是不一致的,除非处理后跳转到同一个页面。动态方法调用不安全,不推荐使用。

3.       使用通配符配置来解决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,没有再匹配通配符。

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

a)         导入struts2-convention-plugin-2.3.4.jar

b)        在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";

   }

}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值