在实际的项目中,经常采用现在的第二种方式在struct.xml中采用清单文件的方式

我们首先来看action

package com.bjpowernode.struts2;

import com.opensymphony.xwork2.ActionSupport;

public class UserAction extends ActionSupport {

    private String messsage;

    public String getMesssage() {
return messsage;
} public void setMesssage(String messsage) {
this.messsage = messsage;
} public String add() throws Exception {
messsage = "添加用户";
return SUCCESS;
} public String del() throws Exception {
messsage = "删除用户";
return SUCCESS;
} public String update() throws Exception {
messsage = "修改用户";
return SUCCESS;
} public String list() throws Exception {
messsage = "查询用户";
return SUCCESS;
} }

接下面我们看看struct.xml的配置

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd"> <struts>
<!-- 当struts.xml配置文件发生修改,会立刻加载,在生产环境下最好不要配置 -->
<constant name="struts.configuration.xml.reload" value="true"/>
<!-- 会提供更加友好的提示信息 -->
<constant name="struts.devMode" value="true"/> <!-- 禁用动态调用 -->
<!--
<constant name="struts.enable.DynamicMethodInvocation" value="false"/>
-->
<package name="user-package" extends="struts-default">
<!-- name="addUser"用在jsp中调用的。名字可以随便起,但是method中的名字add必须和action中的函数名字一一对应 -->
<action name="addUser" class="com.bjpowernode.struts2.UserAction" method="add">
<result>/success.jsp</result>
</action>
<action name="delUser" class="com.bjpowernode.struts2.UserAction" method="del">
<result>/success.jsp</result>
</action>
<action name="updateUser" class="com.bjpowernode.struts2.UserAction" method="update">
<result>/success.jsp</result>
</action>
<action name="listUser" class="com.bjpowernode.struts2.UserAction" method="list">
<result>/success.jsp</result>
</action>
</package>
</struts>

接下面我们来看看访问的jsp页面

<%@ page language="java" contentType="text/html; charset=GB18030"
pageEncoding="GB18030"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030">
<title>Insert title here</title>
</head>
<body>
<a href="addUser.action">添加用户</a><br>
<a href="delUser.action">删除用户</a><br>
<a href="updateUser.action">修改用户</a><br>
<a href="listUser.action">查询用户</a><br> </body>
</html>

跳转成功之后的jsp sucess.jsp页面

<%@ page language="java" contentType="text/html; charset=GB18030"
pageEncoding="GB18030"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GB18030">
<title>Insert title here</title>
</head>
<body>
${messsage }
</body>
</html>

上面就完成了配置,但是上面的配置存在一个很大的问题,就是在struct.xml文件中配置量较大,我们可以使用通配符的方式解决这个问题,其他的文件都不用修改,只需要修改struct.xml文件就可以

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd"> <struts>
<!-- 当struts.xml配置文件发生修改,会立刻加载,在生产环境下最好不要配置 -->
<constant name="struts.configuration.xml.reload" value="true"/>
<!-- 会提供更加友好的提示信息 -->
<constant name="struts.devMode" value="true"/> <!-- 禁用动态调用 -->
<!--
<constant name="struts.enable.DynamicMethodInvocation" value="false"/>
-->
<package name="user-package" extends="struts-default">
<!-- name="addUser"用在jsp中调用的。名字可以随便起,但是method中的名字add必须和action中的函数名字一一对应 -->
<action name="*User" class="com.bjpowernode.struts2.UserAction" method="{1}">
<result>/success.jsp</result>
</action> </package>
</struts>

当在index.sjp点击添加用户的时候,访问的是addUser.jsp,那么在struct.xml进行匹配,得到的*代表的就是add,method中的{1},1表示的是得到第一个*的值,就是add,然后就访问action中对应的add函数,减少了代码的配置

总结:

Struts2的Action中包含多个方法如何调用(使用通配符)

具体配置
<action name="*User" class="com.bjpowernode.struts2.UserAction" method="{1}">
<result>/{1}Success.jsp</result>
</action>

在Struts2的<action>标签class、name、method和result标签上都可以使用通配符
通配符的作用就是为了减少配置量,通配符需要建立在约定的基础上

10、一个action中处理多个方法的调用第二种方法method的方式的更多相关文章

  1. 10、一个action中处理多个方法的调用第一种方法动态调用

    我们新建一个用户的action package com.weiyuan.test; import com.opensymphony.xwork2.ActionSupport; /** * * 这里不用 ...

  2. Android反射出一个类中的其他类对象并调用其对应方法

    MainActivity如下: package cn.testreflect; import java.lang.reflect.Field; import java.lang.reflect.Met ...

  3. 浅谈MySQL中优化sql语句查询常用的30种方法 - 转载

    浅谈MySQL中优化sql语句查询常用的30种方法 1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中使 ...

  4. 【转】oracle 中随机取一条记录的两种方法

    oracle 中随机取一条记录的两种方法 V_COUNT INT:=0; V_NUM INT :=0; 1:TBL_MYTABLE 表中要有一个值连续且唯一的列FID BEGIN SELECT COU ...

  5. QTableView中嵌入复选框CheckBox 的四种方法总结

    搜索了一下,QTableView中嵌入复选框CheckBox方法有四种: 第一种不能之前显示,必须双击/选中后才能显示,不适用. 第二种比较简单,通常用这种方法. 第三种只适合静态显示静态数据用 第四 ...

  6. python中List添加、删除元素的几种方法

    一.python中List添加元素的几种方法 List 是 Python 中常用的数据类型,它一个有序集合,即其中的元素始终保持着初始时的定义的顺序(除非你对它们进行排序或其他修改操作).在Pytho ...

  7. QT源码解析(七)Qt创建窗体的过程,作者“ tingsking18 ”(真正的创建QPushButton是在show()方法中,show()方法又调用了setVisible方法)

    前言:分析Qt的代码也有一段时间了,以前在进行QT源码解析的时候总是使用ue,一个函数名在QTDIR/src目录下反复的查找,然后分析函数之间的调用关系,效率实在是太低了,最近总结出一个更简便的方法, ...

  8. 页面中如何引用外部的HTML(四种方法)

    页面中如何引用外部的HTML(四种方法) 一.总结 一句话总结:a.iframe标签        b.ajax引入代码片段        c.link import的方法导入        d.re ...

  9. qt QTableView中嵌入复选框CheckBox 的四种方法总结

    第一种不能之前显示,必须双击/选中后才能显示,不适用. 第二种比较简单,通常用这种方法. 第三种只适合静态显示静态数据用 第四种比较适合扩展,它除了可以嵌入复选框,还可以通过paint()绘制其它控件 ...

随机推荐

  1. hexo搭建个人网站及hexo+nginx部署个人网站

    先放个配置好了 server { # 监听端口 listen ; # 监听ip 换成服务器公网IP server_name mr-lin.site; location / { root /web/my ...

  2. Rocket - debug - DebugTransport

    https://mp.weixin.qq.com/s/EcsuTjb4hFF9Ncig9Gfhew 简单介绍DebugTransport的实现. 1. JtagDTMConfig 1) JtagDTM ...

  3. Rocket - tilelink - mask

    https://mp.weixin.qq.com/s/Gqv09RIgSSg5VKe-wb4aGg   讨论tilelink中使用MaskGen生成mask的用法.   1. tilelink中的ma ...

  4. 容器技术之Dockerfile(二)

    前文我们聊到了什么是dockerfile,它的主要作用以及dockerfile的一些基本指令的使用方法,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/13019 ...

  5. (Java实现) 昆虫繁殖

    昆虫繁殖 时间限制: 1 Sec 内存限制: 128 MB 提交: 25 解决: 16 [提交][状态][讨论版][命题人:quanxing] 题目描述 科学家在热带森林中发现了一种特殊的昆虫,这种昆 ...

  6. Java实现 LeetCode 673 最长递增子序列的个数(递推)

    673. 最长递增子序列的个数 给定一个未排序的整数数组,找到最长递增子序列的个数. 示例 1: 输入: [1,3,5,4,7] 输出: 2 解释: 有两个最长递增子序列,分别是 [1, 3, 4, ...

  7. 类似-Xms、-Xmn这些参数的含义:

    类似-Xms.-Xmn这些参数的含义: 答: 堆内存分配: JVM初始分配的内存由-Xms指定,默认是物理内存的1/64 JVM最大分配的内存由-Xmx指定,默认是物理内存的1/4 默认空余堆内存小于 ...

  8. Java实现 蓝桥杯 历届试题 剪格子

    问题描述 如下图所示,3 x 3 的格子中填写了一些整数. +--*--+--+ |10* 1|52| +--****--+ |20|30* 1| *******--+ | 1| 2| 3| +--+ ...

  9. Myeclipse 2014 破解补丁以及Y2课件迅雷下载

    一. 在破解myeclipse2014之前,要先把环境变量配置好: 1)打开我的电脑--属性--高级--环境变量2)新建系统变量JAVA_HOME 和CLASSPATH 变量名:JAVA_HOME 变 ...

  10. 02.快捷键及基本dos命令

    无论是使用Windows.Linux操作系统,还是在IDE中,快捷键都是系统本身的标配,事实上,Ctrl+C.V这样的操作,可以帮我们节省大量的时间,如果在IDE中编写代码,除了代码本身,将其余所有的 ...