通配符(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)遵循“约定优于配置”原则,可以使自己在配置时省事。比如类的首字母需要大写,而方法名需要小写。
转载于:https://www.cnblogs.com/LindaBlog/p/5354460.html
通配符(WildCard)的使用相关推荐
- java 泛型 类型形参(Type Parameters) 通配符(wildcard)边界(Bound)
? extends Type 表示Type的子类型(subtypes),Type也包含在内,被称为上界(upper bound) ? super Type表示Type的父类型(supertypes), ...
- 通配符(WildCard)与正则表达式(Regular Expression)
1.通配符(wildcard)就是万用牌的意思 * 表示匹配任意长度的任意字符 ? 表示匹配一个任意字符 [-]则表示匹配括号中列出的字符中的任意一个 [!..]表示不匹配括号中列出的字符中的任意一个 ...
- Java不同场景加载不同类_[改善Java代码]不同的场景使用不同的泛型通配符
Java泛型支持通配符(Wildcard),可以单独使用一个"?"表示任意类,也可以使用extends关键字标识某一类(接口)的子类型,还可以使用super关键字标识某一类(接口) ...
- Linux Shell 通配符、元字符、转义符使用实例介绍
说到shell通配符(wildcard),大家在使用时候会经常用到.下面是一个实例: ? 1 ? 1 2 3 4 [chengmo@localhost ~/shell]$ ls a.txt b.tx ...
- linux 通配符 元字符 转义字符
说到shell通配符(wildcard),大家在使用时候会经常用到.下面是一个实例: 1 1 2 3 4 [chengmo@localhost ~/shell]$ ls a.txt b.txt c ...
- mysql in 通配符_mysql必知必会--用通配符进行过滤
LIKE 操作符 前面介绍的所有操作符都是针对已知值进行过滤的.不管是匹配一 个还是多个值,测试大于还是小于已知值,或者检查某个范围的值,共 同点是过滤中使用的值都是已知的.但是,这种过滤方法并不是任 ...
- Elasticsearch学习--查询(prefix、wildcard、regexp、fuzzy)
一.前缀搜索 prefix 不计算相关度评分 性能较差 前缀搜索匹配的是分词后的词项 前缀搜索没有缓存 前缀搜索尽可能把前缀长度设置的更长 GET product/_search {"que ...
- ACL原理和作用,ACL类型和特点,ACL匹配和通配符使用
ACL原理和作用,ACL类型和特点,ACL匹配和通配符使用 https://www.toutiao.com/i6944913479459553795/?tt_from=weixin&utm_c ...
- 专家系统 - CLIPS学习(2)depth strategy 各种指令 变量与通配符
Part Three: Depth Strategy 首先,声明几个关键词:agenda, salience, conflict resolution,在规则的定义中,RHS(=>右侧的活动列) ...
- LeetCode: 44. Wildcard Matching
LeetCode: 44. Wildcard Matching 题目描述 Implement wildcard pattern matching with support for '?' and '* ...
最新文章
- 卷积层和全连接层的区别_1*1的卷积核和全连接层有什么异同?
- JavaScript要点 (二) 使用误区
- Graphviz:可视化工具Graphviz的简介、安装、使用方法、经典案例之详细攻略
- JQUERY使选定DOM元素还原end
- 【数据结构与算法】之N个数中有K个数可能的组合算法
- linux 下环境变量设置
- SQL Server 2017 AlwaysOn AG 自动初始化(七)
- 181129每日一句
- Go语言内存对齐详解
- 何恺明组新论文:只用ViT做主干也可以做好目标检测
- Opencv4学习-3、进阶图像基本操作1
- Microsoft Visio 2010 - 编辑属性值
- 小额支付管理平台的设计与实现
- 使用 MVVMLight 消息通知
- c语言符号运算优先级6,c语言运算符号的优先级
- 「镁客·请讲」海聊颜志威:推进卫星通讯手机民用化,不让一个人丢在探险的路上...
- 交叉墒与类不均衡问题
- Python爬虫:制作一个属于自己的IP代理模块2
- adas记录仪app_免费用的ADAS 极目启行APP道路测试
- HTML期末大作业(HTML+CSS+JavaScript响应式游戏资讯网站bootstrap网页)
热门文章
- Navicat for SQL Server(SQLServer数据库管理)
- Malformed server response 解决方案
- [译]高效的TensorFlow 2.0:应用最佳实践以及有什么变化
- TCP及IP报头及协议
- scau 1079 三角形(暴力)
- jQuery实现表格拖动排序
- Spring Boot(Spring的自动整合框架)
- MVC验证05-自定义验证规则、验证2个属性值不等
- 阿里云护航罗振宇2018“时间的朋友”跨年演讲,与千万观众一起跨年
- 阿里云双十一1折,1C2G 1年仅99 !!一起来拼团!