一、关于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. myeclipse 怎么安装与激活

    摘录自:http://blog.csdn.net/u012318074/article/details/71310553 第一步:安装完成后不要运行MyEclipse 第二步:下载对应的破解文件 第三 ...

  2. .NET Framework自带的文件内存映射类

    最近一直为文件内存映射发愁,整个两周一直折腾这个东西.在64位系统和32位系统还要针对内存的高低位进行计算.好麻烦..还是没搞定 偶然从MSDN上发现.NET 4.0把内存文件映射加到了.NET类库中 ...

  3. PHP 日志专题

    PHP堆栈跟踪(php stack trace) PHP message: PHP Stack trace: PHP message: PHP . {main}() PHP message: PHP ...

  4. webuploader

    https://www.cnblogs.com/study-fanzeng/p/8930939.html http://fex.baidu.com/webuploader/doc/index.html ...

  5. c#中如何在一个panel中放入窗体

    Form2 f2 = new Form2(); //实例化窗体FORM2 f2.TopLevel = false; //设置为非顶级窗体 f2.FormBorderStyle = FormBorder ...

  6. Linux之Ubuntu安装搜狗输入法

    1.下载搜狗输入法安装包 搜狗官网:https://pinyin.sogou.com/linux/ 2.更新ubuntu内置的包管理器apt-get的软件源[如果中途安装失败,经常是此原因造成的] s ...

  7. Android 中查看内存的使用情况集常用adb命令

    http://blog.csdn.net/bigconvience/article/details/35553983 http://blog.csdn.net/duantihi/article/det ...

  8. VMware xp系统联网

    1.

  9. LibreOJ 题解汇总

    目录 #1. A + B Problem #2. Hello, World! #3. Copycat #4. Quine #7. Input Test #100. 矩阵乘法 #101. 最大流 #10 ...

  10. python2和3使用pip时的问题

    win10,电脑之前装有Anaconda,python2.因为需要用到python3,所以直接下载安装了python3.python3默认路径在c盘.我将其移到D盘并修改了两个环境变量.这时电脑的默认 ...