总结: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. 【openstack N版】——云主机调整大小\冷迁移

    一.先决条件 云主机冷迁移,即:将一台云主机从一个计算节点上,迁移到另外一个计算节点上.因为环境原因,所以我们需要准备两个计算节点. 1.1准备环境 在控制节点上,安装一个计算节点 #在控制节点安装n ...

  2. Html5 基础----列表详述

    html5列表 标签 列表分为:  有序列表/无序列表/自定义列表,用的最多的为无序列表和自定义列表 1.有序列表(order list) eg:把

  3. 如何配置多台mysql 服务器?

    当我们数据量增大时,数据库需要进行扩张时,或者做高可用,那么我们就需要用到同时多台mysql服务器.通过配置:可以实现,一台主mysql,负责记录数据的变化,多台从mysql,查询结果.修改文件:/w ...

  4. HTML入门第二天

    一. URL url:统一资源定位符 组成: 协议://域名:端口号/文件?参数名1=值1&参数名2=值2 例子:http://www.163.com:80/index.html?userna ...

  5. React组件开发(二)表达式

    var obj = { name:"xiaoming", age:"18" } var Hello= React.createClass({ render:fu ...

  6. 关于报错:AttributeError: module 'turtle' has no attribute 'setup' 问题

    对于我们菜鸟,往往安装软件后,都容易使用默认设置,结果将写的文件保存到了安装目录下. 这样造成了很大得隐患,如果写得文件,名称与安装目录下得系统文件名称重复,就容易出现以上报错. 解决方法:1.将文件 ...

  7. Java引领新生活

    阅读邹欣老师的博客,谈谈你期望的师生关系是什么样的? 我觉得师生关系应当是亲密无间,课上老师讲解学生配合,课下师生交流启发思考. 你有什么技能(学习,棋类,球类,乐器,艺术,游戏,......)比大多 ...

  8. android添加权限--eclipse

    首先进入清单文件 2.点击下面的permissions----Add 3.选择Uses permission-----OK 4.选择需要的权限 5.查看代码,,已经添加完毕

  9. java中的对象

    对象                     --计算机语言中的对象 通常,我们可以从一般事物的三个方面,去认识事物: 一.是什么? 二.为什么? 三.怎么样? 接下来,我们也利用这三个方面的思维,去 ...

  10. HTML——超文本标记语言

    HTML: 网站(站点) - 网页 1.HTML作为文件后缀名,可以把文件变为网页 2.HTML是一门编程语言的名字:超文本标记语言 3.超越了文字的范畴,除了文字还可以有图片.视频.音频.动画特效等 ...