在实际的项目中,经常采用现在的第二种方式在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. SSI PAYLOAD

    <pre><!--#exec cmd="ls" --></pre><pre><!--#echo var="DATE_ ...

  2. pix三接口配置

    拓扑 R1 R1#conf t Enter configuration commands, one per line. End with CNTL/Z. R1(config)#int f0/0 R1( ...

  3. Rocket - debug - TLDebugModuleInner - ABSTRACTAUTO

    https://mp.weixin.qq.com/s/adSB7lmKcqmwVd80-gmdIw 简单介绍TLDebugModuleInner中ABSTRACTAUTO寄存器的实现. 1. ABST ...

  4. python常见面试题讲解(十三)字串的连接最长路径查找

    输入描述: 输入第一行为一个正整数n(1≤n≤1000),下面n行为n个字符串(字符串长度≤100),字符串中只含有大小写字母. 输出描述: 数据输出n行,输出结果为按照字典序排列的字符串. 示例1 ...

  5. css背景图定位和浮动

    网站图标引入:<link rel="shortcut icon" href="ico图标地址"> 背景图片  background-image: u ...

  6. Java实现 蓝桥杯 算法训练 删除数组零元素

    算法训练 删除数组零元素 时间限制:1.0s 内存限制:512.0MB 提交此题 从键盘读入n个整数放入数组中,编写函数CompactIntegers,删除数组中所有值为0的元素,其后元素向数组首端移 ...

  7. Java实现 蓝桥杯VIP 算法提高 解二元一次方程组

    算法提高 解二元一次方程组 时间限制:1.0s 内存限制:256.0MB 问题描述 给定一个二元一次方程组,形如: a * x + b * y = c; d * x + e * y = f; x,y代 ...

  8. Java实现 LeetCode 68 文本左右对齐

    68. 文本左右对齐 给定一个单词数组和一个长度 maxWidth,重新排版单词,使其成为每行恰好有 maxWidth 个字符,且左右两端对齐的文本. 你应该使用"贪心算法"来放置 ...

  9. Java中输入时IO包与Scanner的区别

    最常用的一个IO控制台输入的 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream ...

  10. Java实现 洛谷 P2118 比例简化

    import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.i ...