WildCard的使用

一、关于WildCard:一个web应用,有成千上万个action声明,可以利用struts2提供的映射机制把多个彼此相似的映射关系简化成一个映射关系,即通配符。

1.新建类 ActionWildCard,验证通配符的方法

WildCard的使用

WildCard的使用

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必须要大写

WildCard的使用

里面只需输出一句话:

<body>    Student Add Success! <br>   </body>

3.2 Studentdelete_success.jsp:方法同上

WildCard的使用

同样只需要输出一句话即可

<body>     Student Delete Success!<br>   </body>

3.3 Teacher_add_success.jsp:注意此处的T必须要大写

 WildCard的使用

只需输出一句话即可。

<body>   Teacher Add SUCCESS!<br>   </body>

3.4 Teacher_delete_success.jsp:注意此处的T必须要大写

WildCard的使用

输出一句话提示语:

<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上——>打开浏览器——>在地址栏输入该项目的名称——>回车

WildCard的使用

6.1 点击“添加学生”可以发现地址栏变化:action可以成功找到Student的“add”方法

WildCard的使用

6.2 点击“删除学生”可以发现地址栏变化:action可以成功找到Student的“delete”方法

WildCard的使用

6.3 点击“添加老师”可以发现地址栏变化:action可以成功找到Teacher的“add”方法

WildCard的使用

6.4 点击“删除老师”可以发现地址栏变化:action可以成功找到Teacher的“delete”方法

WildCard的使用

7.总结、教训

1)当找到多个匹配,则没有通配符的那个胜出;

2)若指定的动作不存在,struts将会把这个URI与任何一个通配符包含“*”的动作名进行匹配;

3)需要注意的是,配置“struts.xml”文件时,相对应的“action”动作要与之一致,否则将找不到访问对象,报404错误。

4)遵循“约定优于配置”原则,可以使自己在配置时省事。比如类的首字母需要大写,而方法名需要小写。