一、关于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)的使用的更多相关文章

  1. SQL Server 通配符 Wildcard character

    SQL Server 通配符 Wildcard character %        任意长度的字符串,如:'%computer%' _        单个字符,如:'_ean' []        ...

  2. GeoTrust 企业(OV)型 通配符(Wildcard) SSL证书

      GeoTrust 企业(OV)型 通配符(Wildcard)SSL证书(GeoTrust True BusinessID Wildcard SSL Certificates),支持通配符(Wild ...

  3. Linux Shell/Bash wildcard通配符、元字符、转义符使用

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

  4. Linux Shell 通配符、元字符、转义符【转帖】

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

  5. [改善Java代码]不同的场景使用不同的泛型通配符

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

  6. 如何在SharePoint的列表中使用通配符来filter出ListItem?

    一个朋友问我这样一个问题, 他想要快速从SharePoint的文档库中filter出来名字中先带有一个Q, 接着一些其他的字符, 后面再跟着有一个数字20这样的文件.   第一个想法就是修改Share ...

  7. 【Shell】通配符与特殊符号

    ——来自<鸟哥的Linux私房菜> 在 bash 的操作环境中还有一个非常有用的功能,那就是通配符 (wildcard) ! 我们利用 bash 处理数据就更方便了!底下列出一些常用的通配 ...

  8. Shell 通配符、元字符、转义符*****

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

  9. Oracle数据库基础知识

    oracle数据库plsql developer   目录(?)[-] 一     SQL基础知识 创建删除数据库 创建删除修改表 添加修改删除列 oracle cascade用法 添加删除约束主键外 ...

  10. SQL 必知必会

    本文介绍基本的 SQL 语句,包括查询.过滤.排序.分组.联结.视图.插入数据.创建操纵表等.入门系列,不足颇多,望诸君指点. 注意本文某些例子只能在特定的DBMS中实现(有的已标明,有的未标明),不 ...

随机推荐

  1. Python基础【day03】:文件操作(七)

    零.本节内容 1.文件常用操作汇总 2.打开文件 3.操作文件 4.关闭文件 一.文件常用操作汇总 二.打开文件 1.普通打开模式 r,英文:read,只读模式(默认) w,英文:write,只写模式 ...

  2. Lucene Query In Kibana

    1. Terms 一个查询由词条与操作组成.词条可以是单词,或者短语. hello #单独项 "hello pzdn" #双引号引起来短语 2. Field Lucene 支持字段 ...

  3. vue 裁剪图片,插件Cropper的使用

    全局安装    npm install cropperjs 如果想本项目安装,方便移植:   import Cropper from 'cropperjs'   --save    这样的话,本地 p ...

  4. __weak 修饰符

    在 HAL 库中,很多回调函数前面使用__weak 修饰符,这里我们有必要给大家讲解__weak 修饰符的作用. weak 顾名思义是“弱”的意思,所以如果函数名称前面加上__weak 修饰符,我们一 ...

  5. C# redis简单的使用

    1.项目一:用于在Redis中添加数据 using System; using System.Collections.Generic; using System.Linq; using System. ...

  6. Elastic Job入门(1) - 简介

    介绍 构建一般的业务系统来说,使用Quartz或者Spring Task即可基本满足我们的单体服用应用需要.然而随着线上业务量的不断发展,这两种定时任务已经日渐无法满足我们的需求.一般,使用这两种定时 ...

  7. luogu P1070 道路游戏

    传送门 这里设\(f_i\)表示时刻\(i\)的答案 转移的话在\([i-p+1,i-1]\)之间枚举j,然后考虑从哪个点走过来 复杂度为\(O(n^3)\) // luogu-judger-enab ...

  8. luogu P4342 [IOI1998]Polygon

    IOI早期这么多dp? 题目要求断掉环上的一边,我们可以断环为链,开两倍数组 容易想到dp,设\(f_{i,j}\)为区间\([i,j]\)的最大值,然后就是个枚举断点的区间dp 不过可能会有负数出现 ...

  9. E - tower HYSBZ - 4657 (网络流割点)

    题目链接:https://cn.vjudge.net/contest/281959#problem/E 题目大意:中文题目 具体思路:首先,有矛盾的时候就是两个导弹的运动轨迹会相交的时候,那么我们可以 ...

  10. Android勒索软件研究报告

    Android勒索软件研究报告 Author:360移动安全团队 0x00 摘要 手机勒索软件是一种通过锁住用户移动设备,使用户无法正常使用设备,并以此胁迫用户支付解锁费用的恶意软件.其表现为手机触摸 ...