Struts中对通配符的配置说明

在Struts的配置文件里面,如果实现有“约定”的话,可以优先考虑通配符,这样可以大大的简化配置量,可以仅仅去考虑控制器和视图的分配就可以了,下面是我对xml配置文件的关于通配符的配置说一下自己的理解:

首先,通配符*是最为常用的,可以去表示“任何”的意思,那么这里有我的一个配置实例:

<?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="struts_part_1" namespace="/" extends="struts-default">
		<action name="login" class="com.xuning.action.LoginAction">
			<result name="success">/WEB-INF/success.jsp</result>
			<result name="error">/WEB-INF/error.jsp</result>
		</action>
		<!-- 约定大于规则 -->
		<action name="*_*" class="com.xuning.action.{1}Action" method="{2}">
			<!-- 默认不谢的话就是success串,而不是error,所以其他的应该在配置文件里面去写明
				否则会出现错误,{}内的数字分别代表第几个通配符
			 -->
			<result>/WEB-INF/{1}_{2}_success.jsp</result>
			<result name="error">/WEB-INF/error.jsp</result>
		</action>
	</package>
</struts>
在上面的实例中,首先要引入dtd文件,然后根据dtd语法进行配置,有这么几个重要的东西,package,action,和result,第一个是包,这个是完全可以类比java中的包的概念的,说白了就是起到了一个分隔的概念,然后是action,这个其实就是action的一个映射关系,这么几个属性,name就是要在客户端访问的名称,这个名称就是直接指向控制器的,而这个名字是自定义的,那又怎么知道是在应用中是哪一个具体的控制器呢,当然还有一个class属性在一起,这个就是具体的指向应用中的哪一个控制器,这样就形成了一个最为基本的映射关系,然后如果还想指定在控制器的哪一个具体的方法来惊醒处理的话,还可以去使用method属性进行指定,其实系统默认的是execute方法,执行到方法之后距必须要返回一个字符串,这个字符串非常重要,就是给result的result需要指定一个name值,然后result标签内部指定一个视图路径,标签的name属性就是和控制器返回的字符串需要一的对应,如果对应上就要直接进入到那一个人视图里面,反之找不到就会是404错误,而且result还有一个默认name值就是success,不写便是。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章