总结: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";
}
}

  

struts2 之 Action的优化配置的更多相关文章

  1. Struts2之Action基础与配置

    Action基础 Action是什么 在Struts2中,一个Action类代表一次请求或调用,每个请求的动作都对应于一个相应的Action类,一个Action类是一个独立的工作单元.也就是,用户的每 ...

  2. Struts2第三篇【Action开发方式、通配符、Struts常量、跳转全局视图、action节点默认配置】

    前言 上篇Struts博文已经讲解了Struts的开发步骤以及执行流程了-..对Struts的配置文件有了了解-..本博文继续讲解Struts在配置的时候一些值得要学习的细节- Action开发的三种 ...

  3. Struts2之配置文件中Action的详细配置

    在Struts2之配置一文中,我们知道一个struts配置文件可以分为三部分:常量配置    包含其他配置文件的配置    Action配置  . 这其中 常量配置  和 包含其他配置文件的配置  二 ...

  4. 关于Struts2中 Action 配置method的解读

    为Action配置method属性: 将Action类中的每一个处理方法都定义成一个逻辑Action方法. <!DOCTYPE struts PUBLIC "-//Apache Sof ...

  5. struts2的占位符*在action中的配置方法

    转自:https://blog.csdn.net/u012546338/article/details/68946633 在配置<action> 时,可以在 name,class,meth ...

  6. struts2的action是多例,servlet是单例

    struts2中action是多例的,即一个session产生一个action如果是单例的话,若出现两个用户都修改一个对象的属性值,则会因为用户修改时间不同,两个用户访问得到的 属性不一样,操作得出的 ...

  7. Struts2之Action

    Struts2之Action MVC模式中需要有一个控制器来负责浏览器与服务器之间的通信,实现用户与服务器的交互.在Struts2框架中实现这一功能的是Action,它是整个框架最核心的部分.Acti ...

  8. 浅析Struts1和Struts2的Action线程安全问题 转

    浅析Struts1和Struts2的Action线程安全问题  转 http://blog.csdn.net/virgoboy2004/article/details/5876133 [问题描述]最近 ...

  9. struts2 修改action的后缀

    struts2 修改action的后缀 struts2 的默认后缀是 .action 虽然很直观,但是很烦琐.很多人喜欢将请求的后缀改为 .do 在struts2中修改action后缀有两种比较简单的 ...

随机推荐

  1. mvc4中的过滤器

    过滤器(Filter)把附加逻辑注入到MVC框架的请求处理.实现了交叉关注. 交叉关注:用于整个应用程序,又不适合放在某个局部位置的功能. 过滤器是.NET的注解属性(Attribute),它们对请求 ...

  2. 调试时a标签禁止跳转方法

    a.setAttribute("onclick",'');

  3. 需要接入的SDK包,一定要用最新版,否则后果很严重

    ios8更新后,原来的静态库不支持.导致一个bug连续测试好多天都没结果.

  4. UI 事件处理

    一 > 事件的基本概念 事件概述 : UIEvent  ( [ɪ’vent]事件  )  事件,是由硬件捕捉的一个表示用户操作设备的对象 分三类 : 触摸事件 ,晃动事件 ,远程控制事件 触摸事 ...

  5. 超级素数幂 java

    链接:https://www.nowcoder.com/questionTerminal/fb511c3f1ac447309368d7e5432c6c79来源:牛客网如果一个数字能表示为p^q(^表示 ...

  6. PTVS在Visual Studio中的安装

    下载链接,点这里 PTVS是VS下的python开发插件 1.下载完成后,双击运行,安装完毕 2.解释脚本:打开VS,找到文件-新建-项目,在新建项目页面的左侧树形菜单的已安装->模板-> ...

  7. linux apache添加多站点配置(Ubuntn和Centos)

     Linux Apache 多站点配置 Centos 配置方式: 找到 /etc/httpd/conf/http.conf 添加监听端口,eg: Listen 89 虚拟机配置,一个端口对应一个 &l ...

  8. Android Handler消息机制不完全解析

    1.Handler的作用 Android开发中,我们经常使用Handler进行页面的更新.例如我们需要在一个下载任务完成后,去更新我们的UI效果,因为AndroidUI操作不是线程安全的,也就意味着我 ...

  9. 去除IOS浏览器下面的工具栏

    在head标签里添加下面的元素 即可 <meta id="viewport" name="viewport" content="width=de ...

  10. SpringMVC搭建+实例

    想做一点自己喜欢的东西,研究了一下springMVC,所以就自己搭建一个小demo,可供大家吐槽. 先建一个WEB工程,这个相信大家都会,这里不在多说. 去网上下载spring jar包,然后在WEB ...