三大框架学习之----struts2 通配符的使用(二)

来源:互联网 发布:c语言在线编程 编辑:程序博客网 时间:2024/05/07 12:02

 我们知道,struts2是基于servlet的框架,而servlet的缺点之一就在于web.xml繁多,给团队开发带来不便。 

在讲通配符之前,我们先来介绍<include>标签

通过上一篇,我们知道要想正确搭建struts2框架,必须要配置struts.xml。但是这么一来,貌似与web.xml并没有太大的区别。

在struts中,为了解决这一问题,提供了可使一个或多个action类使用的配置文件。

首先,我们来看单个类对应的配置文件,这就用到了我们提到的<include>标签

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN""http://struts.apache.org/dtds/struts-2.3.dtd"><struts><package name="actiontest11111"  namespace="/base"  extends="struts-default"><action name="hellowordaction" class="com.struts2.actiontest.hellowordaction"><result name="sucess">/test/SUCESS.jsp</result></action></package><pre name="code" class="html"><span style="white-space:pre"></span></include>
<span style="white-space:pre"></span><!-- file 代表所要引进的xml路径,teacher_struts.xml即TeacherAction 的xml文件,此时的配置文件名自定义-->
<include file="com/struts2/teacheraction/teacher_struts.xml"></include><!-- file </struts>


对于单个类对应配置文件,很好理解,但是,当我们需要调用action中的不同方法,或是调用不同action中的相同方法时,好像问题又回到了原点,这时,通配符就能帮我们解决这个棘手的问题

(一)不同的链接(可以理解不同的权限)请求相同函数。下图是不使用通配符的情况

<span style="white-space:pre"></span><!-- a_add.action、b_add.action、c_add.action全部请求PatternAction的add方法--><action name="a_add" class="cn.heima6.struts2.action.pattern.PatternAction" method="add"><result name="add">successPattern.jsp</result></action><action name="b_add" class="cn.heima6.struts2.action.pattern.PatternAction" method="add"><result name="add">successPattern.jsp</result></action><action name="c_add" class="cn.heima6.struts2.action.pattern.PatternAction" method="add"><result name="add">successPattern.jsp</result></action>

我们可以看到,有几个action就得配置几次,

<span style="white-space:pre"></span><!-- 改进*_add这里*代表任意字符串--><action name="*_add"class="cn.heima6.struts2.action.pattern.PatternAction"method="add"><result name="add">successPattern.jsp</result></action>

(二)不同action请求相同的函数

<!-- 请求PersonAction和StudentAction的add方法--><!-- <action name="personAction_add" class="cn.heima6.struts2.action.pattern.PersonAction" method="add"><result name="add">successPattern.jsp</result></action><action name="studentAction_add" class="cn.heima6.struts2.action.pattern.StudentAction" method="add"><result name="add">successPattern.jsp</result></action>-->
我们可以看到,除去action的名字不同之外,其他的配置都相同

此时,我们使用通配符进行配置

<span style="white-space:pre"></span><!-- 改进 {1}与前面的*号匹配,但是,<span style="background-color: rgb(255, 0, 0);">注意,此时的*号必须是类名,因为class中进行了引用</span>--><action name="*_add"class="cn.heima6.struts2.action.pattern.{1}" method="add"><result name="add">successPattern.jsp</result></action>

(三)请求同一个action类的不同方法


<!-- 请求PatternAction的aa,bb,cc,dd方法--><action name="patternAction_*"class="cn.heima6.struts2.action.pattern.PatternAction"method="{1}"><result name="success">successPattern.jsp</result></action>
(四)请求一一对应的不同类的不同方法
<!-- 请求PersonAction和StudentAction中的aa,bb方法--><action name="*_*" class="cn.heima6.struts2.action.pattern.{1}"method="{2}"><result name="success">successPattern.jsp</result></action>
此时,配置好后,引入struts.xml

0 0
原创粉丝点击