【SSH】——Struts2中的动态方法调用(二)
当action中的方法有很多时,那应该怎么调用呢?上次我们提到的UserAction类中只有一个execute方法,如果我们需要增加用户的增删改查方法,如下:
public class UserAction extends ActionSupport{
...其他略去
/**
* 添加用户的方法
* @return
* @throws Exception
*/
public String add() throws Exception{
message="添加用户";
return SUCCESS;
}
public String del() throws Exception{
message="删除用户";
return SUCCESS;
}
public String edit() throws Exception{
message="编辑用户";
return SUCCESS;
}
}
我们保持struts.xml的配置不变,具体见上篇博客。
调用的页面index.jsp就采用action名+!+方法名称+后缀的格式来实现。
<body>
<a href="user!add.action">添加用户</a><br>
<a href="user!del.action">删除用户</a><br>
<a href="user!edit.action">编辑用户</a> </body>
method属性
这种方法我们就能做到在一个action中动态调用多个方法。但是采用上面的写法容易出错,看着也必将麻烦,那可不可以直接写上具体要调用action中的方法名称呢,比如add.action?这时候我们就需要修改Struts的配置文件了,采用method属性来区分方法名称。
<struts> <package name="Struts2_006" extends="struts-default" > <action name="add" class="com.struts2.UserAction" method="add">
<result>/add_success.jsp</result>
</action>
<action name="del" class="com.struts2.UserAction" method="del">
<result>/add_success.jsp</result>
</action>
<action name="edit" class="com.struts2.UserAction" method="edit">
<result>/add_success.jsp</result>
</action>
</package> </struts>
通配符
通过method属性虽然可以简化页面的调用,但他使得Struts配置文件中配置了大量的action,而且这些action中的很多内容都是相同的。如何解决呢?引入通配符的用法就可以解决。
现在将Struts.xml文件进行修改
<package name="Struts2_006" extends="struts-default" >
<action name="*user" class="com.struts2.UserAction" method="{1}">
<result>/add_success.jsp</result>
</action> </package>
index.jsp页面也要进行修改
<a href="adduser.action">添加用户</a><br>
<a href="deluser.action">删除用户</a><br>
<a href="edituser.action">编辑用户</a>
比较这两种方式:若不使用通配符,配置文件会十分冗余,但有一个优点就是易于控制。而使用通配符使得配置文件中省去了重复多余的action配置。
【SSH】——Struts2中的动态方法调用(二)的更多相关文章
- 【SSH】——Struts2中的动态方法调用(一)
首先我们来看一个简单的调用: 1.在web.xml中配置拦截器StrutsPrepareAndExecuteFilter.StrutsPrepareAndExecuteFilter实现了filter接 ...
- Struts2中DMI(动态方法调用)的错误问题(There is no Action mapped for namespace [/xxx] and action name [xxx!yyy] a)
默认的Struts.xml中是这样的 <constant name="struts.enable.DynamicMethodInvocation" value="f ...
- Struts2学习四----------动态方法调用
© 版权声明:本文为博主原创文章,转载请注明出处 Struts2动态方法调用 - 默认:默认执行方法中的execute方法,若指定类中没有该方法,默认返回success <package nam ...
- Struts2 Action中动态方法调用、通配符的使用
一.Struts2执行过程图: 二.struts2配置文件的加载顺序 struts-default.xml---struts-plugin.xml---struts.xml 具体步骤: 三.Actio ...
- 第三章Struts2 Action中动态方法调用、通配符的使用
01.Struts 2基本结构 使用Struts2框架实现用登录的功能,使用struts2标签和ognl表达式简化了试图的开发,并且利用struts2提供的特性对输入的数据进行验证,以及访问Servl ...
- JavaWeb_(Struts2框架)struts.xml核心配置、动态方法调用、结果集的处理
此系列博文基于同一个项目已上传至github 传送门 JavaWeb_(Struts2框架)Struts创建Action的三种方式 传送门 JavaWeb_(Struts2框架)struts.xml核 ...
- Struts2 动态方法调用
01.Struts 2基本结构 使用Struts2框架实现用登录的功能,使用struts2标签和ognl表达式简化了试图的开发,并且利用struts2提供的特性对输入的数据进行验证,以及访问Servl ...
- struts2.3.15.3中动态方法调用默认是关闭的
初学ssh,用的struts2.3.15.3,使用了如下表单: <form action="/spring3/index/login.action" method=" ...
- Struts2.5.12中动态方法调用问题
使用版本:struts-2.5.12-all 出现问题:在开启动态方法调用后,找不到没有匹配的路径映射 <constant name="struts.enable.DynamicMet ...
随机推荐
- C++ primer 练习9.52 适配器stack 中缀表达式
//调试环境 VS2015//本人菜鸟一枚,不喜勿喷! 谢谢!!!//主要思想引自 http://www.cnblogs.com/dolphin0520/p/3708602.html//主要代码引自 ...
- POJ2406 Power Strings(KMP)
Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 56162 Accepted: 23370 Description Giv ...
- 【php练习源码】
Something is wrong with the XAMPP installation :-( value[$name]=$sex; } public function getInfomatio ...
- 微信小程序终于审核过了
终于,我做的微信小程序审核结束了,虽然被退回来两次,但是第三次还是审核通过了! 加油骚年,相信自己!! 有什么问题可以评论告诉我!!
- CentOS下配置jdk
CentOS下配置jdk 1.在jdk官网上下载最新版本的jdk 2.将jdk放到相应的位置,使用如下命令来解压. .0_181 /opt/data/ tar -zxf jdk-8u181-linux ...
- vue笔记 介绍及安装 一
Vue.js 是什么 Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架.与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用.Vue 的核心库只关注视图层, ...
- (数据科学学习手札12)K-means聚类实战(基于R)
上一篇我们详细介绍了普通的K-means聚类法在Python和R中各自的实现方法,本篇便以实际工作中遇到的数据集为例进行实战说明. 数据说明: 本次实战样本数据集来自浪潮集团提供的美团的商家信息,因涉 ...
- Union-find 并查集
解决问题 给一系列对点0~N-1的连接,判断某两个点p与q是否相连. private int[] id; // 判断p和q是否属于同一个连通分量 public boolean connected(in ...
- shell -- shift用法
shift是Unix中非常有用的命令.可以使命令参数左移,从而使脚本程序中命令参数位置不变的情况下依次遍历所有参数.如shift 3表示原来的$4现在变成$1,原来的$5现在变成$2等等,原来的$1. ...
- javascript 自定义发布与订阅
//声明一个类,与普通的类的声明不一样, function Girl() { //将类的事件声明成一个私有的属性,里面是一个对象 this._events = {} } /* { "失恋&q ...