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文件
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
<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包含属于静态包含,所以包含的内容不能冲突。