一、关于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)的使用相关推荐

  1. java 泛型 类型形参(Type Parameters) 通配符(wildcard)边界(Bound)

    ? extends Type 表示Type的子类型(subtypes),Type也包含在内,被称为上界(upper bound) ? super Type表示Type的父类型(supertypes), ...

  2. 通配符(WildCard)与正则表达式(Regular Expression)

    1.通配符(wildcard)就是万用牌的意思 * 表示匹配任意长度的任意字符 ? 表示匹配一个任意字符 [-]则表示匹配括号中列出的字符中的任意一个 [!..]表示不匹配括号中列出的字符中的任意一个 ...

  3. Java不同场景加载不同类_[改善Java代码]不同的场景使用不同的泛型通配符

    Java泛型支持通配符(Wildcard),可以单独使用一个"?"表示任意类,也可以使用extends关键字标识某一类(接口)的子类型,还可以使用super关键字标识某一类(接口) ...

  4. Linux Shell 通配符、元字符、转义符使用实例介绍

    说到shell通配符(wildcard),大家在使用时候会经常用到.下面是一个实例: ? 1 ? 1 2 3 4 [chengmo@localhost ~/shell]$ ls a.txt  b.tx ...

  5. linux 通配符 元字符 转义字符

    说到shell通配符(wildcard),大家在使用时候会经常用到.下面是一个实例: 1 1 2 3 4 [chengmo@localhost ~/shell]$ ls a.txt  b.txt  c ...

  6. mysql in 通配符_mysql必知必会--用通配符进行过滤

    LIKE 操作符 前面介绍的所有操作符都是针对已知值进行过滤的.不管是匹配一 个还是多个值,测试大于还是小于已知值,或者检查某个范围的值,共 同点是过滤中使用的值都是已知的.但是,这种过滤方法并不是任 ...

  7. Elasticsearch学习--查询(prefix、wildcard、regexp、fuzzy)

    一.前缀搜索 prefix 不计算相关度评分 性能较差 前缀搜索匹配的是分词后的词项 前缀搜索没有缓存 前缀搜索尽可能把前缀长度设置的更长 GET product/_search {"que ...

  8. ACL原理和作用,ACL类型和特点,ACL匹配和通配符使用

    ACL原理和作用,ACL类型和特点,ACL匹配和通配符使用 https://www.toutiao.com/i6944913479459553795/?tt_from=weixin&utm_c ...

  9. 专家系统 - CLIPS学习(2)depth strategy 各种指令 变量与通配符

    Part Three: Depth Strategy 首先,声明几个关键词:agenda, salience, conflict resolution,在规则的定义中,RHS(=>右侧的活动列) ...

  10. LeetCode: 44. Wildcard Matching

    LeetCode: 44. Wildcard Matching 题目描述 Implement wildcard pattern matching with support for '?' and '* ...

最新文章

  1. 卷积层和全连接层的区别_1*1的卷积核和全连接层有什么异同?
  2. JavaScript要点 (二) 使用误区
  3. Graphviz:可视化工具Graphviz的简介、安装、使用方法、经典案例之详细攻略
  4. JQUERY使选定DOM元素还原end
  5. 【数据结构与算法】之N个数中有K个数可能的组合算法
  6. linux 下环境变量设置
  7. SQL Server 2017 AlwaysOn AG 自动初始化(七)
  8. 181129每日一句
  9. Go语言内存对齐详解
  10. 何恺明组新论文:只用ViT做主干也可以做好目标检测
  11. Opencv4学习-3、进阶图像基本操作1
  12. Microsoft Visio 2010 - 编辑属性值
  13. 小额支付管理平台的设计与实现
  14. 使用 MVVMLight 消息通知
  15. c语言符号运算优先级6,c语言运算符号的优先级
  16. 「镁客·请讲」海聊颜志威:推进卫星通讯手机民用化,不让一个人丢在探险的路上...
  17. 交叉墒与类不均衡问题
  18. Python爬虫:制作一个属于自己的IP代理模块2
  19. adas记录仪app_免费用的ADAS 极目启行APP道路测试
  20. HTML期末大作业(HTML+CSS+JavaScript响应式游戏资讯网站bootstrap网页)

热门文章

  1. Navicat for SQL Server(SQLServer数据库管理)
  2. Malformed server response 解决方案
  3. [译]高效的TensorFlow 2.0:应用最佳实践以及有什么变化
  4. TCP及IP报头及协议
  5. scau 1079 三角形(暴力)
  6. jQuery实现表格拖动排序
  7. Spring Boot(Spring的自动整合框架)
  8. MVC验证05-自定义验证规则、验证2个属性值不等
  9. 阿里云护航罗振宇2018“时间的朋友”跨年演讲,与千万观众一起跨年
  10. 阿里云双十一1折,1C2G 1年仅99 !!一起来拼团!