通配符(WildCard)的使用
一、关于WildCard:一个web应用,有成千上万个action声明,可以利用struts2提供的映射机制把多个彼此相似的映射关系简化成一个映射关系,即通配符。
1.新建类 ActionWildCard,验证通配符的方法


2.1添加Student需要实践的两个方法 add,deete
package cn.cqvie.wildcard;
import com.opensymphony.xwork2.ActionSupport;
public class StudentAction extends ActionSupport {
public String add() {
return SUCCESS;
}
public String delete() {
return SUCCESS;
}
}
2.2添加Teacher需要实践的两个方法 add,deete
package cn.cqvie.wildcard;
import com.opensymphony.xwork2.ActionSupport;
public class TeacherAction extends ActionSupport {
public String add(){
return SUCCESS;
}
public String delete(){
return SUCCESS;
}
}
3.由方法可知,需要新建两个jsp页面用于显示运行结果
3.1 Studentadd_success.jsp:注意此处的Student必须要大写

里面只需输出一句话:
<body>
Student Add Success! <br>
</body>
3.2 Studentdelete_success.jsp:方法同上

同样只需要输出一句话即可
<body>
Student Delete Success!<br>
</body>
3.3 Teacher_add_success.jsp:注意此处的T必须要大写

只需输出一句话即可。
<body>
Teacher Add SUCCESS!<br>
</body>
3.4 Teacher_delete_success.jsp:注意此处的T必须要大写

输出一句话提示语:
<body>
Teacher Delete Success! <br>
</body>
4.配置 struts.xml文件的内容: ***
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
<constant name="struts.devMode" value="true" />
<package name="actions" extends="struts-default" namespace="/actions">
<action name="Student*" class="cn.cqvie.wildcard.StudentAction" method="{1}" >
<result>/Student{1}_success.jsp</result>
</action>
<action name="*_*" class="cn.cqvie.wildcard.{1}Action" method="{2}" >
<result >/{1}_{2}_success.jsp</result>
</action>
</package>
</struts>
注:此处的“*”代表所有,即Student具有的所有方法,{1}=“*”,即当“*”代表“add”时,“{1}”也就代表“add”。也就是说“*”与“{}”内容一致。
“*_*”代表的是:第一个“*”代表“Teacher”;第二个“*”代表“add”方法或者“delete”方法。
5.修改web.xml中的mapping:需要将url-pattern原来的“*.action”改为“/*”,否则就无法找到actions对应的方法。
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping></web-app>
6. 运行/调试
将该项目部署在tomcat上——>打开浏览器——>在地址栏输入该项目的名称——>回车

6.1 点击“添加学生”可以发现地址栏变化:action可以成功找到Student的“add”方法

6.2 点击“删除学生”可以发现地址栏变化:action可以成功找到Student的“delete”方法

6.3 点击“添加老师”可以发现地址栏变化:action可以成功找到Teacher的“add”方法

6.4 点击“删除老师”可以发现地址栏变化:action可以成功找到Teacher的“delete”方法

7.总结、教训
1)当找到多个匹配,则没有通配符的那个胜出;
2)若指定的动作不存在,struts将会把这个URI与任何一个通配符包含“*”的动作名进行匹配;
3)需要注意的是,配置“struts.xml”文件时,相对应的“action”动作要与之一致,否则将找不到访问对象,报404错误。
4)遵循“约定优于配置”原则,可以使自己在配置时省事。比如类的首字母需要大写,而方法名需要小写。
通配符(WildCard)的使用的更多相关文章
- SQL Server 通配符 Wildcard character
SQL Server 通配符 Wildcard character % 任意长度的字符串,如:'%computer%' _ 单个字符,如:'_ean' [] ...
- GeoTrust 企业(OV)型 通配符(Wildcard) SSL证书
GeoTrust 企业(OV)型 通配符(Wildcard)SSL证书(GeoTrust True BusinessID Wildcard SSL Certificates),支持通配符(Wild ...
- Linux Shell/Bash wildcard通配符、元字符、转义符使用
说到shell通配符(wildcard),大家在使用时候会经常用到.下面是一个实例: 1 1 2 3 4 [chengmo@localhost ~/shell]$ ls a.txt b.txt ...
- Linux Shell 通配符、元字符、转义符【转帖】
作者:程默 说到shell通配符(wildcard),大家在使用时候会经常用到.下面是一个实例: 1 1 2 3 4 [chengmo@localhost ~/shell]$ ls a.txt ...
- [改善Java代码]不同的场景使用不同的泛型通配符
Java泛型支持通配符(Wildcard),可以单独使用一个"?"表示任意类,也可以使用extends关键字标识某一类(接口)的子类型,还可以使用super关键字标识某一类(接口) ...
- 如何在SharePoint的列表中使用通配符来filter出ListItem?
一个朋友问我这样一个问题, 他想要快速从SharePoint的文档库中filter出来名字中先带有一个Q, 接着一些其他的字符, 后面再跟着有一个数字20这样的文件. 第一个想法就是修改Share ...
- 【Shell】通配符与特殊符号
——来自<鸟哥的Linux私房菜> 在 bash 的操作环境中还有一个非常有用的功能,那就是通配符 (wildcard) ! 我们利用 bash 处理数据就更方便了!底下列出一些常用的通配 ...
- Shell 通配符、元字符、转义符*****
说到shell通配符(wildcard),大家在使用时候会经常用到.下面是一个实例: 1 1 2 3 4 [chengmo@localhost ~/shell]$ ls a.txt b.txt ...
- Oracle数据库基础知识
oracle数据库plsql developer 目录(?)[-] 一 SQL基础知识 创建删除数据库 创建删除修改表 添加修改删除列 oracle cascade用法 添加删除约束主键外 ...
- SQL 必知必会
本文介绍基本的 SQL 语句,包括查询.过滤.排序.分组.联结.视图.插入数据.创建操纵表等.入门系列,不足颇多,望诸君指点. 注意本文某些例子只能在特定的DBMS中实现(有的已标明,有的未标明),不 ...
随机推荐
- 面向对象【day07】:类的特性介绍(四)
本节内容 1.概述 2.访问属性 3.私有属性 4.总结 一.概述 在上篇博客中我们已经讲了一些关于类的知识,我们来回顾以下: 定义类(class dog(object))-> 实例化(d = ...
- Thread的setDaemon(true)方法
定义:守护线程--也称“服务线程”,在没有用户线程可服务时会自动离开.优先级:守护线程的优先级比较低,用于为系统中的其它对象和线程提供服务. 设置:通过setDaemon(true)来设置线程为“守护 ...
- POJ - 2187 Beauty Contest(最远点对)
http://poj.org/problem?id=2187 题意 给n个坐标,求最远点对的距离平方值. 分析 模板题,旋转卡壳求求两点间距离平方的最大值. #include<iostream& ...
- UVa 11134 Fabled Rooks(贪心)
题目链接 题意 在n*n的棋盘上的n个指定区间上各放1个'车’ , 使他们相互不攻击(不在同行或同列),输出一种可能的方法. 分析 每行每列都必须放车,把行列分开看,若行和列同时有解,则问题有解. ...
- Linux下SVN使用
转载:参考文章http://www.linuxidc.com/Linux/2011-09/42347.htm 1. 将文件checkout到本地目录 svn checkout path(pat ...
- jQuery基础 (一)——样式篇(认识jQuery)
一.认识 //等待dom元素加载完毕. $(document).ready(function(){ alert("Hello World!"); }); 二.jQuery对象与DO ...
- js加减法运算多出很多小数点
链接:http://www.jb51.net/article/73043.htm 解决方法:解决这种问题两种方法,第一种就是利用JavaScript 的toFixed(n) 方法,直接获取N 位小数, ...
- how tomcat works
本文中只是提取了每个模块的关键部分,具体技术细节只能通过看代码来掌握. 1.socket .serversocket tcp通信 2.servlet init destory process(req, ...
- mysql 原理 ~ innodb恢复机制
举例说明 机制 数据页A的lsn为100,数据页B的lsn为200,checkpoint lsn为150,系统lsn为300,表示当前系统已经更新到300,小于150的数据页已经被刷到磁盘上,因此数据 ...
- 使用css将图像居中
默认情况下,图像属于内联元素.这意味着它们与周围的文本一起流动.为使图像居中,我们应该将其转换成块级元素,通过将display属性的值设置为block就可以完成转换. <html> < ...