struts核心配置文件详解(package)

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>

0 人点赞