2018-05-10 18:52:56
浏览数 (1)
struts核心配置文件详解(package)
包(package)
- 本人独立博客https://chenjiabing666.github.io
- 在核心配置文件中需要配置
<package>
- <package>元素可以把逻辑上相关的一组Action、Result、Intercepter等元素封装起来,形成一个独立的模块,package可以继承其他的package,也可以作为父包被其他的package继承
属性
name
- 这是一个必填的属性,指定包的名字,便于其他的包引用,因为其他的包可以继承这个包
extends
: 该属性是一个选择属性,表示继承其他的包,但是我们一般都会继承struts-default
- 如果我们学到了处理json数据的时候,我们将会继承处理json的包
namespace
:该属性是一个可选属性,指定该包的命名空间,默认的是“/”,以为一个配置文件中可能有相同名字的action,如果配置不同的namespace,那么就可以配置相同的action的名字
- namespace配置的是包的命名空间,同一个命名空间里面不能有同名的Action,当然不同的命名空间里面是可以有同名的Action的。类似于Java的包的功能,namespace可以有效的防止action重名的冲突,因为配置了namespace后,在访问action的时候就需要添加namespace来作为action的前缀。如果不配置namespace,表示是默认的namespace,那么访问的时候不需要添加namespace前缀。
- 比如有一个项目为Web1,在struts.xml的
<package namespace = "/student">
,这个包的下面有一个<action name ="add">
,那么我们要访问这个action使用的url为:http://localhost:8080/Web1/student/add.action
abstract
:这是一个可选属性,表示这个包是否是抽象的,抽象包不能包含action定义
范例
代码语言:javascript
复制<!—指定了继承自strtus-default这个类,namespace指定了命名空间,那么当其中的action访问的时候要必须使用如下:http://localhost:8080/web1/user/*--!>
<package name="Login" extends="struts-default" namespace="/user"></package>
引入另一个包中的action
- 需求: 前面我们都是跳转到指定的视图,但是我们也是可以跳转到指定的action,但是这个要跳转的action和当前的action不是一个包中的。
- 此时我们就需要在当前包中引入另外一个包中的action,那么我们可以如下设置
<param name="namespace">
中的值为另外一个包的namespace<param name="actionName">
中的值为需要跳转到的action名字
代码语言:javascript
复制
<package name="Login" extends="struts-default" namespace="/">
<action name="login" class="com.action.LoginAction">
<result name="success" type="chain">
<!-- namespace指定另外一个包中的namespace,actionName指定action的名字 -->
<param name="namespace">/user</param>
<param name="actionName">regist</param>
</result>
</action>
</package>
<package name="Regist" extends="struts-default" namespace="/user">
<action name="regist" class="com.action.RegistAction">
<result name="success">JSP/success.jsp</result>
</action>
</package>
包含另外一个包(include)
- 一个项目中的配置文件中可能需要定义很多个package和action,那么都写在一个xml文件中,不免有些混乱,因此需要使用include包含其他的配置文件,相当于jsp文件中的
<jsp:include>
,要注意的是配置文件都要放在项目的src目录下
<include file=”user.xml”></include>