struts2:多业务方法的处理(动态调用,DMI)
struts2支持调用指定Action类中某一个业务方法。如果没有指定,则调用execute方法。
1. 第一种实现方式,通过URL叹号参数
1.1 创建Action类,带多个方法
package com.clzhang.ssh.demo4;
public class ListAction {
public String listUser() {
System.out.println("列出员工信息");
return "user";
}
public String listSalarySum() {
System.out.println("列出员工总工资信息");
return "sum";
}
public String execute() {
System.out.println("执行了execute方法");
return "default";
}
}
1.2 配置文件如下
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd"> <struts>
<package name="myStruts" extends="struts-default">
<global-results>
<result name="user">/ssh/demo4/user.jsp</result>
<result name="sum">/ssh/demo4/sum.jsp</result>
<result name="default">/ssh/demo4/default.jsp</result>
</global-results> <action name="list" class="com.clzhang.ssh.demo4.ListAction">
</action>
</package> <constant name="struts.action.extension" value="action"></constant>
</struts>
上述配置文件中使用了全局result,只需配置一次,其它任何地方用到此配置的都不需要再行配置。
1.3 各JSP文件如下
user.jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<body>
员工列表
</body>
</html>
sum.jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<body>
总工资列表
</body>
</html>
default.jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<body>
默认的execute()语句
</body>
</html>
1.4 调用
1.4.1 打开IE,输入:http://127.0.0.1:8080/st/ssh/list.action
结果如下:

1.4.2 打开IE,输入:http://127.0.0.1:8080/st/ssh/list!listUser.action
结果如下:

2. 第二种实现方式,在Action标记中加入method属性
2.1 创建类,同上
2.2 配置文件如下
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd"> <struts>
<package name="myStruts" extends="struts-default">
<global-results>
<result name="user">/ssh/demo4/user.jsp</result>
<result name="sum">/ssh/demo4/sum.jsp</result>
<result name="default">/ssh/demo4/default.jsp</result>
</global-results> <action name="listSalarySum" class="com.clzhang.ssh.demo4.ListAction" method="listSalarySum">
</action> <action name="listUser" class="com.clzhang.ssh.demo4.ListAction" method="listUser">
</action>
</package> <constant name="struts.action.extension" value="action"></constant>
</struts>
2.3 各JSP文件同上
2.4 测试
2.4.1 打开IE,输入:http://127.0.0.1:8080/st/ssh/listSalarySum.action
结果如下:

3. 第三种实现方式,在表单提交按钮中加入method属性
参考:struts2:数据校验,通过Action中的validate()方法实现校验(续:多业务方法时的不同验证处理)
struts2:多业务方法的处理(动态调用,DMI)的更多相关文章
- Struts2动态调用DMI及错误解决方法
在Strust2中action可以定义自己的方法,调用方法有两种方式,一种方式是struts.xml中指定method来表示需要用到的方法, 但是这种方法缺点在于如果你的Action中有很多方法则要多 ...
- Java父类对象调用子类实体:方法重写与动态调用
众所周知Java的handle和C++的ponter而不是object对应,我们很熟悉C++的父类pointer调用子类实体的例子,那么对于Java的handle是不是也可以这样呢? 这里我先给一个例 ...
- struts配置通配符*来匹配方法,实现动态调用
01:web.xml中配置,启动struts2 <?xml version="1.0" encoding="UTF-8"?> <web-app ...
- struts2.5+框架使用通配符与动态方法
概述:struts2.5以后加强了安全性,下面就是安全配置引发的问题 通配符: 在学习struts框架时经常会使用到通配符调用方法,如下: <package name="usercru ...
- 利用C#的反射机制动态调用DLL类库
最近由于业务要求,需要动态调用DLL类库,所以研究了一下,感觉还好也不太难,今天就把自己理解的写了一个小例子(已经通过VS2005跑通),供大家一起研究和探讨,有理解不当的地方还请高手们多多指正,谢谢 ...
- C#程序实现动态调用DLL的研究(转)
摘 要:在<csdn开发高手>2004年第03期中的<化功大法——将DLL嵌入EXE>一文,介绍了如何把一个动态链接库作为一个资源嵌入到可执行文件,在可执行文件运行时,自动从资 ...
- C#程序实现动态调用DLL的研究[转]
摘 要: 在< csdn 开发高手> 2004 年第 03 期中的<化功大法——将 DLL 嵌入 EXE >一文,介绍了如何把一个动态链接库作为一个资源嵌入到可执行文件,在 ...
- C#程序实现动态调用DLL的研究
摘 要:在<csdn开发高手>2004年第03期中的<化功大法——将DLL嵌入EXE>一文,介绍了如何把一个动态链接库作为一个资源嵌入到可执行文件,在可执行文件运行时,自动从资 ...
- 转【C#调用DLL的几种方法,包括C#调用C\C++\C#DLL】
C#中dll调用方法 一. DLL与应用程序 动态链接库(也称为DLL,即为“Dynamic Link Library”的缩写)是Microsoft Windows最重要的组成要素之一, ...
随机推荐
- 024 IDEA不能新建spring下的配置文件xml
这个问题以前就遇到过,一直懒得解决,现在必须要用了,解决了一下,发现网上的解决方式果然不错. 1.现象 2.解决方式 需要添加一下spring context的依赖即可
- cookie、sesion
关于保存问题 如果高并发不多的话可以保存session 否则用cookie吧,session可以保存到其他服务器哦,比如其他服务器的redis memacache(没有持久化,崩了登录信息就全没了) ...
- 如何在VS Code中进行golang编程
在VS Code中编程 使用Visual Studio Code的Go扩展,您可以获得诸如IntelliSense,代码导航,符号搜索,括号匹配,片段等语言功能,这些功能将帮助您进行Golang开发. ...
- Dart语言特性必备了解!
学习Dart语言,必须将以下的概念熟记于心: 在dart语言中,一切皆为对象.所有的对象都是一个类的实例.甚至整数.函数.null也看做是对象.所有的对象都继承于Object类 尽管Dart是强类型语 ...
- [ 转载 ] Handler详解
带着问题学习 Android Handler 消息机制 Marker_Sky 关注 0.4 2018.02.06 18:04* 字数 3992 阅读 541评论 0喜欢 13 学习 Androi ...
- python-docx
pip install python-docx 注意不要直接下载docx包 from docx import Document from docx.shared import RGBColor,Inc ...
- [CF98E]Help Shrek and Donkey(纳什均衡)
https://www.cnblogs.com/MashiroSky/p/6576398.html #include<cstdio> #include<algorithm> # ...
- 潭州课堂25班:Ph201805201 爬虫高级 第七课 sclapy 框架 爬前程网 (课堂笔)
定时对该网页数据采集,所以每次只爬第一个页面就可以, 创建工程 scrapy startproject qianchen 创建运行文件 cd qianchenscrapy genspider qian ...
- 爬虫scrapy的使用
1.常用命令
- C++ 经典知识点面试题
1.指针的优点和缺点 优点:灵活高效 (1)提高程序的编译效率和执行速度(数组下标往下移时,需要使用乘法和加法,而指针直接使用++即可) (2)通过指针可使用主调函数和被调函数之间共享变量或数据结构, ...