Struts2笔记(三)、struts.xml配置

1、package配置

<package name="default" namespace="/test" extends="struts-default">
        <action name="login" class="com.project.actions.LoginAction" method="execute">
            <result name="success" type="redirect">/success.html</result>
            <result name="fail">/fail.html</result>
        </action>
</package>

name属性:配置包时必须有name属性,该属性值可以随意取名,但是必须唯一,与java中包和类无关系,若有其他包要继承该包,就必须使用这个名字。
namespace属性:用于定义该包的命名空间,命名空间是访问该包下action路径的一部分,该属性是必须的,且不能为空。
注:命名空间可以改为"/"

2、action配置

一般会访问服务器的action,由action来跳转视图

<package name="default" namespace="/test" extends="struts-default">
        <action name="login" class="com.project.actions.LoginAction" method="execute">
            <result name="success" type="redirect">/success.html</result>
        </action>
        <!-- 不需要加上class属性也可以访问访问 -->
        <action name="register">
            <result name="success">/success.html</result>
        </action>
</package>
<a href="test/register">注册</a>

注:为什么不需要class属性也可以访问到success页面呢
找到strurs-default.xml文件
.xml
method属性:指定要执行的方法。如果不写,默认执行execute()

3、result配置

<package name="default" namespace="/test" extends="struts-default">
        <action name="login" class="com.project.actions.LoginAction">
            <result>/success.html</result>
        </action>
</package>

name:如果不指定默认值"success"
type: strurs-default.xml定义了所有的type
在这里插入图片描述
这里的result-type比较重要,下面一一说明:

1、dispatcher

它代表的是请求转发,也是默认值。一般用于action跳转页面。该结果类型有一个location参数,它是一个默认参数

<action name="register" class="com.project.actions.RegisterAction">
     <result name="success" type="dispatcher">/show.jsp</result>
</action>
<result name="success" type="dispatcher">
     <param name="location">/show.jsp</param>
</result>

2、redirect

重定向,用于action跳转到页面。
location: 用来给出重定向的目的地

<action name="AddAction" class="com.project.actions.AddAction">
        <result name="success" type="redirect">
            <param name="location">/show.jsp</param>
        </result>
</action>

3、redirectAction

重定向,一个action跳转到另一个action
actionName: 指定 “目的地” 动作的名字. 它是默认属性
namespace: 用来指定 “目的地” 动作的命名空间. 如果没有配置该参数, Struts 会把当前 Action 所在的命名空间作为 “目的地” 的命名空间

<!-- action到action跳转 -->
    <action name="FirstAction" class="com.project.actions.FirstAction">
        <result name="success" type="redirectAction">
            <param name="actionName">SecondAction</param>
            <param name="uname">${name}</param>
            <param name="upwd">${pwd}</param>
        </result>
    </action>

    <action name="SecondAction" class="com.project.actions.SecondAction">
        <result name="success" type="dispatcher">
            <param name="location">/success.html</param>
        </result>
    </action>

4、chain

相当于请求转发,用于从一个action跳转到另一个action

<action name="FirstAction" class="com.project.actions.FirstAction">
        <result name="success" type="chain">
            <param name="actionName">SecondAction</param>
        </result>
    </action>

    <action name="SecondAction" class="com.project.actions.SecondAction">
        <result name="success" type="dispatcher">
            <param name="location">/show.jsp</param>
        </result>
</action>

4、全局视图

包范围的全局视图

<package>
    <action name="result" class="cn.itcast.struts2.demo6.ResultAction">
                <!-- 局部结果  当前Action使用 -->
                <result name="success">/demo6/result.jsp</result> 
    </action>

    <global-results>
                <!-- 全局结果 当前包中 所有Action都可以用-->
                <result name="success">/demo6/result.jsp</result>
    </global-results>
</package>

应用范围的全局配置
利用继承的方式来实现,abstract=true 表示抽象,当前package不能写action
在这里插入图片描述

5、为应用指定多个xml文件

在开发中strus.xml文件中写的action越来越多,以后维护起来很麻烦,为了方便,将struts.xml文件拆分为多个文件,在包含在一起
在这里插入图片描述
struts-action

扫描二维码关注公众号,回复: 4111957 查看本文章
 <struts>
    <package name="default" namespace="/test" extends="base">
        <action name="login" class="com.project.actions.LoginAction" method="execute">
        </action>
    </package>
</struts>

struts-base

<struts>   
    <package name="base" extends="struts-default" abstract="true">
        <global-results>
             <!-- 全局结果 当前包中 所有Action都可以用-->
             <result name="success">/success.html</result>
             <result name="fail">/fail.html</result>
        </global-results>
    </package>
</struts>

struts.xml

<struts>
    <include file="struts-base.xml"/>
    <include file="struts-action.xml"/>
</struts>

注意:因为include包含属于静态包含,所以包含的内容不能冲突。

猜你喜欢

转载自blog.csdn.net/candy_27/article/details/83963383