Struts2的通配符配置方式
Struts2的Action类很有意思,你可以使用3种方式来实现具体的Action类:
- 让你的Action类继承自ActionSupport类(项目中最常用这种方式,因为ActionSupport类中定义了很多帮助方法)
- 让你的Action类实现Action接口
- 使用POJO的方式来实现,只要Action类中有一个返回值为String的execute方法就好了(这种方式使Action类最容易被测试)
以上三种Action的实现方式都可以被struts2框架自动识别,如果你在struts.xml里面配置了一个action块但是没有配置action类的路径,这样框架默认使用ActionSupport来处理请求。
但是在实际使用struts2的过程中我发现了一个问题,一个Action只有一个execute方法来处理一类请求,如果我开发的某块功能有100个不同的请求那我岂不是要写100个Action类,每个类实现一个execute方法,这样虽然满足了一个类一个责任的设计原则,但是会不会造成“类爆炸”?后来看了struts2的文档才知道,其实我们可以使用struts2灵活的通配符配置来达到减少action类的目的:
先来看看一个简单的时序图
请求从这个页面发起,只是简单的两个链接
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<a href="infoadd">ADD INFO</a><br>
<a href="infodel">DEL INFO</a><br>
</body>
</html>
请求的控制转发是在struts.xml里面配置的
<struts><constant name="struts.enable.DynamicMethodInvocation" value="true" /><package name="mypack" extends="struts-default"><action name="info*" class="com.stone.struts2.action.MyFirstAction" method="{1}"><result>/{1}info.jsp</result><allowed-methods>add,del</allowed-methods></action></package>
</struts>
注:add,del是
方法名,也是jsp名称前缀,必须创建addinfor.jsp和delinfo.jsp文件,
@Component
@Scope(value="prototype")
public class MyFirstAction extends ActionSupport {
private Connection conn = null;
private PreparedStatement pstmt = null;
private ResultSet rs = null;
private String username;
public String getUsername(){
return username;
}
public void setUsername(String username){
this.username = username;
}
public String addd() {
getUsername();
int num = queryCount();
System.out.println("MyFirstActionaddrutsaaaaaaaaaa_______________________________====="+num);
ActionContext.getContext().getSession().put("list", "威锋网"+num+username);
return SUCCESS;
}
public String del() {
return SUCCESS;
}
}
上面这个XML的配置内容有几点需要注意:
- 我开启了struts2的RMI,apache struts基于安全性考虑,RMI默认是关闭的。
- 大家看到action name的值跟平常有点不一样,我使用了星号通配符用来匹配JSP中的两个链接:infoadd和infodel, 要配置method="{1}", 这样要被调用的method名字就分别是add和del了。
- result的JSP页面的名字也可以用通配符来配置,我分别定义了两个JSP,addinfo.jsp和delinfo.jsp,这样正好一一对应。
- 注意在struts2.5之后,基于安全性考虑struts2默认开启了SMI,必须显示定义Action中能被请求调用的方法,所以我有配置<allowed-methods>
看看这个Action类
public class MyFirstAction extends ActionSupport {public String add() {return SUCCESS;}public String del() {return SUCCESS;}
}
Struts2的通配符配置方式相关推荐
- 转载 - Struts2基于XML配置方式实现对action的所有方法进行输入校验
出处:http://www.cnblogs.com/Laupaul/archive/2012/03/15/2398360.html http://www.blogjava.net/focusJ/arc ...
- Struts2学习---基本配置,action,动态方法调用,action接收参数
首先我们先来直接配置,然后再来讲原理: 第一步:jar包的引入: 我们可以到struts2的官网上下载: http://struts.apache.org/download.cgi#struts ...
- 基于XML配置方式实现对action的所有方法进行校验
基于XML配置方式实现 对action的所有方法进行校验或者对Action的指定方法进行校验 Action也要继承ActionSupport,并且提供校验文件,校验文件和action类放在同一个包下 ...
- Log4J配置方式Java工程测试
2019独角兽企业重金招聘Python工程师标准>>> Log4J配置方式 1. 导入jar包 Commons-logging .jar Log4j-1.2.17.jar 2. ...
- Struts2中通配符的使用
1.准备工作 新建一个JavaWeb项目HelloWord,导入Struts2的.jar包,在Web.xml下配置Struts2的监听,在src下添加Struts2的配置文件struts.xml:将该 ...
- 【struts2】struts2的零配置
零配置(zero configuration)的意思是不使用任何配置文件部署struts2应用,如struts.xml.struts.properties等.零配置并不是真的"零配置&quo ...
- Spring基于 XML 的声明式事务控制(配置方式)
一.引入依赖 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http ...
- Spring定时任务@Scheduled注解使用配置方式(cron表达式、fixedRate和fixedDelay)
Spring定时任务@Scheduled注解使用配置方式(cron表达式.fixedRate和fixedDelay) 序言: 个人推荐一个很方便的在线Cron生成器(网页版):https://qqe2 ...
- SSL加速和证书卸载的配置方式
随着移动互联网,网银支付等等的普及,越来越多的应用开始重视私密性和安全性,最常见的就是把原有基于明文传输的HTTP调整为加密的HTTPS方式:实现这种方式的最常用的手段也是购置第三方发布的域名证书,部 ...
最新文章
- 编程之美-数组循环移位
- 一个好用的Visual Studio Code扩展 - Live Server,适用于前端小工具开发
- python对文件的_python 对文件操作
- 递归——黑白棋子的移动(洛谷 P1259)
- linux-如何限制普通用户的磁盘使用空间-磁盘配额quota,Linux-如何限制普通用户的磁盘使用空间-磁盘配额quota...
- WIN7网络共享打印机设置 家庭工作组
- CVE-2012-4792Microsoft Internet Explorer 释放后使用漏洞
- 底部导航栏使用BottomNavigationBar
- xshell和xftp官网
- 耳机在Mac上听不到声音怎么办?
- Flutter系列之设置Dialog的宽度
- linux发音,你发对了吗
- Vue3中使用Ant Design Vue图标
- octagam® 10%治疗皮肌炎患者的ProDERM研究达到主要终点的阳性结果将在ACR 2020年会上呈报
- 【web】React-hooks
- 使用Sharding-Jdbc进行数据拆分
- 【qttabbar】常用设置分享
- 2016CSDN前十排名博客地址
- 打开图片链接直接打开QQ对话框
- 安装mysql会产生哪些文件_安装mysql详细步骤有哪些?
热门文章
- [js] 微信小程序实现轨迹回放,微信原生小程序,基于uniapp的小程序?
- 工作301:substring使用
- 前端学习(2379):加入git管理
- 前端学习(1861)vue之电商管理系统电商系统之设置背景色并在中央绘制登录盒子
- 前端学习(1764):前端调试值之性能分析的方法二
- 前端学习(976):阿里百秀轮播图制作
- 前端学习(536):多列布局3列得间距
- shiro学习(16):使用注解实现权限认证和后台管理二
- dockerfile使用(一)
- C与C++中的extern与static、extern C与__cplusplus的作用