struts2的动态方法调用
在默认的情况下,一个action类只能有一个方法execute()能被调用,这样的话,再开发当中就会需要些很多的action类,在配置文件struts.xml文件当中也要写很多的配置文件。要是能够灵活的运用struts2的动态方法调用就可以很好的解决这个问题了。
那么问题来了,怎么来实现struts2的动态方法调用呢?
实现struts2动态方法调用有三种方法:
- 使用感叹号
- 在配置文件中的action中,指定method属性
- 使用通配符
该怎么具体的使用这三种方法去实现struts2的动态方法调用
1.使用感叹号实现struts2动态方法访问
在使用叹号实现动态方法访问时候,一定要在配置文件struts.xml中配置一下属性:
<!-- 动态加载访问 --> <constant name="struts.enable.DynamicMethodInvocation" value="true" />
下面是核心代码
struts的action
<action name="dynamicAction" class="com.usc.geowind.lilin.actions.DynamicAction"> <result name="success"> /success.jsp </result> </action>
action类
public class DynamicAction extends ActionSupport { public String execute() throws Exception { return super.execute(); } public String add() { System.out.println("struts2动态访问方法:add"); return SUCCESS; } public String delete(){ System.out.println("struts2动态访问方法:delete"); return SUCCESS; } }
从action的配置就可以看出,默认情况下请求访问action都会触发execute方法,若要动态访问add/delete方法只要在访问action链接后加上:!add或者!delete就可以了
比如访问add方法:http://localhost:8080/项目名/dynamicAction!add
2.在配置文件struts.xml中的action标签内只能属性method的是来实现struts2的动态方法访问
在action标签中指定method的值。method的值为action类中访问的方法,改属性默认值为execute
比如访问add方法。
<!-- method的值指定访问的是哪个方法,默认值为:execute --> <action name="dynamicAction" class="com.usc.geowind.lilin.actions.DynamicAction" method="add"> <result name="success"> /success.jsp </result> </action>
这样我们就可以通过指定method的值来指定action访问的具体是action累的具体哪个方法了。若是指定为通配符:*,那么所有方法均可以访问
3.使用通配符实现struts2动态方法访问
(1)method值指定为:* ,这样均可访问
(2)使用*与{}搭配:比如:
<action name="dynamicAction_*" class="com.usc.geowind.lilin.actions.DynamicAction" method="{1}"> <result name="success"> /success.jsp </result> </action>
这样指定method的值为第一个星号,就会访问到星号代表的action的方法中去。
当访问链接为:http://localhost:8080/项目名/dynamicAction_add 就是访问改action类下的add方法
当访问链接为:http://localhost:8080/项目名/dynamicAction_delete 就是访问delete方法
亦可以更简单的比编写写action配置,使得配置文件简单。例如:
<action name="*_*" class="com.usc.geowind.lilin.actions.{1}" method="{2}"> <result name="success"> /success.jsp </result> </action>
使用两个星号,这样可以访问第一个星号的action类,第二个星号是访问action类的方法名
比如:http://localhost:8080/项目名/DynamicAction_add 该链接访问的是com.usc.geowind.lilin.actions.DynamicAction这一个action类下的add方法。
应该还有更好的技术或者方法可以达到相同的目的,有待进一步学习了解
相关推荐
{自定义的存放包}目录:4个xml文件(applicationContext-dao.xml(dao注入配置),applicationContext-service.xml(service注入配置),action-servlet.xml(action注入配置),struts-{自定义的存放包名}.xml(struts2的...
6.调用普通类的构造方法 25 7.集合对象初步 25 8.集合对象进阶 25 9.N语法top语法 26 10.获取Stack Context中的信息 26 11.总结$ # %的区别 27 12.总结OGNL[重点] 27 五、拦截器 28 1.概述strust2中的拦截器 28 2....
SSH+Redis整合
ssh搭建的项目,struts2 标签 以及struts2 自带的异步
本篇文章主要介绍了SSH框架和Redis的整合,详细的介绍了Struts+Spring+Hibernate和Redis整合,有兴趣的可以了解一下。
ssh(客户管理系统) 开发环境:eclipse+tomcat8.5+MYSQL5.5+SVN 软件架构:Struts2 + hibernate5.x + spring4.x + mysql数据库 开发时间:2019.12-2019.1 开发人数:1人 项目描述:功能模块划分 第一个 ...
struts2知识点:处理流程,基本配置,与servlet的API解耦,结果类型,通配符和动态方法的调用,类型转换,文件上传,拦截器,表单验证,国际化,OGNL表达式,UI标签,模型驱动,防止表单重复提交,项目练习知识点:...
SSH 通常指的是 Struts2 做前端控制器,Spring 管理各层的组件,Hibernate 负责持久化层。 一个请求在Struts2框架中的处理大概分为以下几个步骤: 1、客户端初始化一个指向Servlet容器(例如Tomcat)的请求 2、这...
struts2:使用struts2的jar包 * 项目体系分层: cn.itcast.elec.containner:自定义的spring容器,用于在控制层调用操作业务层 cn.itcast.elec.dao:项目的dao层,负责连接数据库的操作 cn.itcast.elec.daomain:...
主要对WEB框架常面试的点做了一下整理,希望可帮助到你,下面文档的部分内容 Java---SSH(MVC) 1. 谈谈你mvc的理解 ... Struts2.0 Action可以通过初始化、设置属性、调用方法来测试,“依赖注入”也使得测试更容易。
一个最简单的SSH框架Struts 、 spring 、 Hibernate 在各层的作用 1 ) struts 负责 web 层 . ActionFormBean 接收网页中表单提交的数据,然后通过 Action 进行处理,再 Forward 到对应的网页。 在 struts-config...
2、支持类静态的方法调用和值访问,表达式的格式为@[类全名(包括包路径)]@[方法名 | 值名],例如:@java.lang.String@format('foo %s', 'bar')或@tutorial.MyConstant@APP_NAME; 3、支持赋值操作和表达式串联...
JSP引入了被称为“JSP动作”的XML标签,用来调用内建功能。另外,可以创建JSP标签库,然后像使用标准HTML或XML标签一样使用它们。标签库能增强功能和服务器性能,而且不受跨平台问题的限制。JSP文件在运行时会被其...
3.2. Struts2的Action调用业务逻辑 - 19 - 3.2.1. 登录Action--OpenIDLoginAction - 19 - 3.2.2. 进入的Action—FirstPageAction - 20 - 3.3. JSP页面 - 20 - 3.4. 运行示例 - 21 - 3.4.1. 登录 - 21 - 3.4.2. ...
Spring+Struts+Hibernate+Jquery(AJAX)实现的省份与城市级联效果 原理:通过ajax调用后端struts的action,将返回的JSON对象数组解析载入页面。
struts2.3.16.3,spring-core-4.1.4,hibernate4.3.8 都是最新版本的整合mysql和简单的增删改查
1、JSON0.34使用的是struts2附带的struts2-json-plugin-2.1.8.1.jar 2、db是mysql,名字为test,用户名root,密码空 3、com.morningstar.utility.WSUtility为调用WebService的客户端代码,在调用这个WebService返回...
本程序是一个ssh入门程序,把Struts2、Spring、Hibernate的知识综合在一起编写的程序,采用mysql作为后台数据库。本程序的用途是很适合初学者,可以了解ssh的整合的必要的配置文件,以及各个层次之间的调用是如何...
struts2.3.4+spring3.2.0+hibernate4+hibernate_generic_dao struts hibernate spring最大化使用注释 基于spring的远程调用
主要介绍了详解JAVAEE——SSH三大框架整合(spring+struts2+hibernate),具有一定的参考价值,感兴趣的小伙伴们可以参考一下