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)的更多相关文章

  1. Struts2动态调用DMI及错误解决方法

    在Strust2中action可以定义自己的方法,调用方法有两种方式,一种方式是struts.xml中指定method来表示需要用到的方法, 但是这种方法缺点在于如果你的Action中有很多方法则要多 ...

  2. Java父类对象调用子类实体:方法重写与动态调用

    众所周知Java的handle和C++的ponter而不是object对应,我们很熟悉C++的父类pointer调用子类实体的例子,那么对于Java的handle是不是也可以这样呢? 这里我先给一个例 ...

  3. struts配置通配符*来匹配方法,实现动态调用

    01:web.xml中配置,启动struts2 <?xml version="1.0" encoding="UTF-8"?> <web-app ...

  4. struts2.5+框架使用通配符与动态方法

    概述:struts2.5以后加强了安全性,下面就是安全配置引发的问题 通配符: 在学习struts框架时经常会使用到通配符调用方法,如下: <package name="usercru ...

  5. 利用C#的反射机制动态调用DLL类库

    最近由于业务要求,需要动态调用DLL类库,所以研究了一下,感觉还好也不太难,今天就把自己理解的写了一个小例子(已经通过VS2005跑通),供大家一起研究和探讨,有理解不当的地方还请高手们多多指正,谢谢 ...

  6. C#程序实现动态调用DLL的研究(转)

    摘 要:在<csdn开发高手>2004年第03期中的<化功大法——将DLL嵌入EXE>一文,介绍了如何把一个动态链接库作为一个资源嵌入到可执行文件,在可执行文件运行时,自动从资 ...

  7. C#程序实现动态调用DLL的研究[转]

    摘   要: 在< csdn 开发高手> 2004 年第 03 期中的<化功大法——将 DLL 嵌入 EXE >一文,介绍了如何把一个动态链接库作为一个资源嵌入到可执行文件,在 ...

  8. C#程序实现动态调用DLL的研究

    摘 要:在<csdn开发高手>2004年第03期中的<化功大法——将DLL嵌入EXE>一文,介绍了如何把一个动态链接库作为一个资源嵌入到可执行文件,在可执行文件运行时,自动从资 ...

  9. 转【C#调用DLL的几种方法,包括C#调用C\C++\C#DLL】

    C#中dll调用方法   一.      DLL与应用程序 动态链接库(也称为DLL,即为“Dynamic Link Library”的缩写)是Microsoft Windows最重要的组成要素之一, ...

随机推荐

  1. Python Mysql_db对数据查询进行处理

    引用自:https://www.cnblogs.com/itdyb/p/5700614.html 一.脚本如下 #!/usr/bin/python2.7# coding=utf-8import tim ...

  2. BZOJ5045 打砖块 2017年9月月赛 其他

    欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ5045 题意概括 有一堵墙. 现在挖掉某些砖.如果有相邻的某两个砖没有了,那么他们中上方的那块也没了 ...

  3. (转)final修饰基本类型和引用类型变量的区别

    原文:http://blog.csdn.net/linhao19891124/article/details/52971045 当使用final修饰基本类型变量时,不能对基本类型变量重新赋值,因此基本 ...

  4. Ubuntu pkg_resources.DistributionNotFound: The 'Scrapy==1.0.3' distribution was not found and is required by the application

    在Ubuntu16.0.4上安装scrapy,参考:Ubuntu16.04安装Scrapy命令 都安装成功后,import scrapy也都没出错,但是在终端输入:scrapy 命令时出现错误: Fi ...

  5. Android应用开发-数据存储和界面展现(二)

    SQLite数据库 // 自定义类MyOpenHelper继承自SQLiteOpenHelper MyOpenHelper oh = new MyOpenHelper(getContext(), &q ...

  6. iOS 11开发教程(二十一)iOS11应用视图美化按钮之实现按钮的响应(1)

    iOS 11开发教程(二十一)iOS11应用视图美化按钮之实现按钮的响应(1) 按钮主要是实现用户交互的,即实现响应.按钮实现响应的方式可以根据添加按钮的不同分为两种:一种是编辑界面添加按钮实现的响应 ...

  7. Nowcoder 提高 Day1

    比赛链接 A 中位数(前缀和 二分) 额,确实没想到逼近... 然后写了n^2log的暴力,还CE了 只需要判断是否能有大于当前mid的中位数就好 这显然是可以二分的 代码 #include<b ...

  8. HDU.3032.Nim or not Nim?(博弈论 Lasker's Nim)

    题目链接 \(Description\) 有多堆石子, 每次可以将任意一堆拿走任意个或者将这一堆分成非空的两堆, 拿走最后一颗石子的人胜利.问谁会获得胜利. \(Solution\) Lasker's ...

  9. 简单的三道shell例题

    problem: 1. 输入一个ip列表文件,文件每行为以tab键分隔的两列,分别为一个ip段的起始ip和结束ip,ip均为点分形式.要求将该文件中各ip段包含的每一个有效ip以非点分形式输出到一个文 ...

  10. (58)Wangdao.com第九天_JavaScript 对象的基本操作

    对象的基本操作 创建对象 var 对象名 = new Object();        // new 函数;    称为构造函数,专门用来创建对象的函数 var god =  给对象增加属性 删除对象 ...