通配符(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中实现(有的已标明,有的未标明),不 ...
随机推荐
- Scala进阶之路-并发编程模型Akka入门篇
Scala进阶之路-并发编程模型Akka入门篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Akka Actor介绍 1>.Akka介绍 写并发程序很难.程序员不得不处 ...
- JS 求一组数中所有数的和以及平均值
var arr = [10,20,30]; //计数器思想 var sum = 0; for(var i=0;i<arr.length;i++){ sum += arr[i]; } consol ...
- Zabbix LLD 设置过滤条件,不自动监控某些item
1.需求描述 默认情况下Zabbix 自带模板 "Template OS Linux" 中网络接口LLD自动发现除还回接口外的所有接口,当这并不一定是我们想要的结果. ...
- Python基础-day03
写在前面 上课第三天,打卡: 不要让干净的灵魂染上尘埃,永远年轻.永远热泪盈眶 一.再谈编码 - 文件的概念 '文件' 是一个抽象的概念,是操作系统提供的外部存储设备的抽象,对应底层的硬盘:它是程序 ...
- ping 返回的TTL数值代表什么?
ping 返回的TTL数值代表什么? 1 [root@standby ~]# dig @202.106.0.20 www.iqiyi.com 2 3 ; <<>> DiG 9. ...
- 自动提取文件系统---binwalk(一)
Binwalk是路由器固件分析的必备工具,该工具最大的优点就是可以自动完成指定文件的扫描,智能发掘潜藏在文件中所有可疑的文件类型及文件系统. 1.Binwalk和libmagic Binwalk的扫描 ...
- Java EE之Hibernate异常总结【5】java.lang.StackOverflowError[栈溢出]
Exception in thread "main" java.lang.StackOverflowError at java.lang.reflect.InvocationTar ...
- 洛谷 P2257 YY的GCD
洛谷 P2257 YY的GCD \(solution:\) 这道题完全跟[POI2007]ZAP-Queries (莫比乌斯反演+整除分块) 用的一个套路. 我们可以列出答案就是要我们求: \(ans ...
- I - Older Brother Gym - 101490I
题目链接:https://cn.vjudge.net/problem/Gym-101490I 题目大意:给你一个整数,问你这个整数能不能表示成一个素数的k次方? 具体思路:对于每一个数,我们先判断他是 ...
- 以前的 Delphi版本
Delphi 1 Delphi 2 Delphi 3 Delphi 4 Delphi 5 Delphi 6 Delphi 7 Delphi 8 Delphi 2005