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

 我们知道,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
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值