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";
}
}
struts2 之 Action的优化配置的更多相关文章
- Struts2之Action基础与配置
Action基础 Action是什么 在Struts2中,一个Action类代表一次请求或调用,每个请求的动作都对应于一个相应的Action类,一个Action类是一个独立的工作单元.也就是,用户的每 ...
- Struts2第三篇【Action开发方式、通配符、Struts常量、跳转全局视图、action节点默认配置】
前言 上篇Struts博文已经讲解了Struts的开发步骤以及执行流程了-..对Struts的配置文件有了了解-..本博文继续讲解Struts在配置的时候一些值得要学习的细节- Action开发的三种 ...
- Struts2之配置文件中Action的详细配置
在Struts2之配置一文中,我们知道一个struts配置文件可以分为三部分:常量配置 包含其他配置文件的配置 Action配置 . 这其中 常量配置 和 包含其他配置文件的配置 二 ...
- 关于Struts2中 Action 配置method的解读
为Action配置method属性: 将Action类中的每一个处理方法都定义成一个逻辑Action方法. <!DOCTYPE struts PUBLIC "-//Apache Sof ...
- struts2的占位符*在action中的配置方法
转自:https://blog.csdn.net/u012546338/article/details/68946633 在配置<action> 时,可以在 name,class,meth ...
- struts2的action是多例,servlet是单例
struts2中action是多例的,即一个session产生一个action如果是单例的话,若出现两个用户都修改一个对象的属性值,则会因为用户修改时间不同,两个用户访问得到的 属性不一样,操作得出的 ...
- Struts2之Action
Struts2之Action MVC模式中需要有一个控制器来负责浏览器与服务器之间的通信,实现用户与服务器的交互.在Struts2框架中实现这一功能的是Action,它是整个框架最核心的部分.Acti ...
- 浅析Struts1和Struts2的Action线程安全问题 转
浅析Struts1和Struts2的Action线程安全问题 转 http://blog.csdn.net/virgoboy2004/article/details/5876133 [问题描述]最近 ...
- struts2 修改action的后缀
struts2 修改action的后缀 struts2 的默认后缀是 .action 虽然很直观,但是很烦琐.很多人喜欢将请求的后缀改为 .do 在struts2中修改action后缀有两种比较简单的 ...
随机推荐
- querySelectorAll与getElementsBy对比有什么不同
querySelectorAll与getElementsBy对比有什么不同javascript中的querySelectorAll与getElementsBy都可以获取dom元素对象,但是他们又有什么 ...
- visibility: hidden和 display: none的区别
visibility: hidden----将元素隐藏,但是在网页中该占的位置还是占着. display: none----将元素的显示设为无,即在网页中不占任何的位置.
- Servlet 3.0/3.1 中的异步处理
在Servlet 3.0之前,Servlet采用Thread-Per-Request的方式处理请求,即每一次Http请求都由某一个线程从头到尾负责处理.如果一个请求需要进行IO操作,比如访问数据库.调 ...
- Sql Server优化---统计信息维护策略
本位出处:http://www.cnblogs.com/wy123/p/5748933.html 首先解释一个概念,统计信息是什么: 简单说就是对某些字段数据分布的一种描述,让SQL Server大概 ...
- 用Angular2+Express快速搭建博客
1. 写在前面 昨天花了1天的时间把自己的博客从以前的Express换成了Angular2+Express,遂记录于此.博客Demo在这里,你也可以点击这里查看完整代码. 第一次使用Angular2, ...
- 部署Cloudera Management for centos 7
hadoop生态圈框架工具甚多,自己整合起来很是繁琐,特别是oozie以及hue结合来实现hive.mr.spark等定时依赖任务更是一步一个坑,为了减少踩坑,只好从apache hadoop,转向C ...
- cssLoading效果
http://files.cnblogs.com/files/xdoudou/loaders.css-master.zip
- [译]Selenium Python文档:五、Waits等待
大多数现代web应用都使用了AJAX技术.当浏览器加载一个页面的时候,该页面内的元素可能在不用的时间间隔内进行加载.这使得元素定位变得比较困难:如果一个元素还没有出现在DOM中,定位函数将会抛出一个E ...
- 2017-3-22 HTML 表单 、框架
表单:<form action="" method="get/post" ></form> 表单元素:12个 1.文本类 文本框:< ...
- WIMP环境搭建
h1 { color: #3366ff } p { font-size: 16px } body { background-color: rgb(200,200,169) } 环境说明 系统:wind ...