zoukankan      html  css  js  c++  java
  • Struts2 struts.xml配置

    <struts>
        <package name="action" namespace="/" extends="struts-default">
            <action name="LoginAction" class="action.LoginAction" method="execute">
                <result name="teacher">/teacher.jsp</result>
                <result name="student">/student.jsp</result>
                <result name="error">/error.jsp</result>
            </action>
        </package>
    
        <include file=""></include>
    </struts>

    当xml文件较大时,可以使用多个xml文件来配置,比如在每个包下使用一个xml来配置这个包的action,在struts.xml中使用<include>把其他xml配置文件包含进来即可。

    配置命名空间

    <package name="action" namespace="/" extends="struts-default">
            
    </package>

    命名空间常配置为 /  或  /包名。

    配置为 / 时,表示这个包下的action都在这个WebApp的命名空间中,可直接通过action的name来引用。

    <package name="action" namespace="/" extends="struts-default">
            <action name="LoginAction" class="action.LoginAction" method="execute">
                <result name="teacher">/teacher.jsp</result>
                <result name="student">/student.jsp</result>
                <result name="error">/error.jsp</result>
            </action>
        </package>
    <form action="LoginAction">   <!--直接通过action的name来引用-->
     
    </form>

    配置为 /xxx  时,表示这个包下的action都在命名空间xxx中,要通过命名空间来引用。

    <package name="action" namespace="/action" extends="struts-default">   <!--指定命名空间是此WebApp下的action-->
            <action name="LoginAction" class="action.LoginAction" method="execute">
                <result name="teacher">/teacher.jsp</result>
                <result name="student">/student.jsp</result>
                <result name="error">/error.jsp</result>
            </action>
        </package>
    <form action="action/LoginAction">   <!--需通过命名空间action来引用-->
     
    </form>

    注意最前面没有 / 

    <form action="/LoginAction">  
    
    </form>

    最前面的/表示域名根目录(localhost),不是表示当前WebApp的根目录。这种写法是定位到   http://localhost:8080/LoginAction

    设置处理请求的方法

    <package name="action" namespace="/action" extends="struts-default">
    <action name="loginAction" class="action.LoginAction" method="exe">
    </action>
    </package>

    可在<action>中使用method属性来设置。缺省时默认为execute。

    配置结果处理

    <package name="action" namespace="/" extends="struts-default">
    <global-results>
    <result name="" type=""></result>
    <result name="" type=""></result>
    </global-results>

    <action name="" class="" method="">
    <result name="" type=""></result>
    <result name="" type=""></result>
    </action>

    </package>

    可在当前action中配置当前action的,也可以在<global-results>配置整个包的。

    <result>的name指定逻辑视图名(返回的字符串),元素体指定物理视图名,type指定视图处理方式。

    视图处理方式可以使用type属性来设置,缺省时默认为dispatcher,也可以在struts-default.xml中设置全局的:将default属性设置为true即可

    <result-types>
                <result-type name="chain" class="com.opensymphony.xwork2.ActionChainResult"/>
                <result-type name="dispatcher" class="org.apache.struts2.result.ServletDispatcherResult" default="true"/>
                <result-type name="freemarker" class="org.apache.struts2.views.freemarker.FreemarkerResult"/>
                <result-type name="httpheader" class="org.apache.struts2.result.HttpHeaderResult"/>
                <result-type name="redirect" class="org.apache.struts2.result.ServletRedirectResult"/>
                <result-type name="redirectAction" class="org.apache.struts2.result.ServletActionRedirectResult"/>
                <result-type name="stream" class="org.apache.struts2.result.StreamResult"/>
                <result-type name="velocity" class="org.apache.struts2.result.VelocityResult"/>
                <result-type name="xslt" class="org.apache.struts2.views.xslt.XSLTResult"/>
                <result-type name="plainText" class="org.apache.struts2.result.PlainTextResult" />
                <result-type name="postback" class="org.apache.struts2.result.PostbackResult" />
            </result-types>

     

    chain    链式处理,由下一个action接着处理

    <result name="" type="chain">
                    <param name="actionName">LoginAction</param>
                    <param name="namespace">/</param>
              <!--  <param name="namespace">/action</param>    -->
    </result>

    需要用2个<param>指定下一个action的信息,actionName指定下一个Action的name,namespace指定下一个action的namespce(一般是 / 或者 /包名 )。

    dispatcher   转发给jsp,由jsp来响应。默认值。

    <result name="" type="dispatcher">/xxx.jsp</result>

    redirect     重定向到新的url,可以是任何类型的url。直接写url即可。

    <result name="" type="redirect">/XxxAction</result>
    <result name="" type="redirect">/xxx.jsp</result>

    重定向到action:命名空间是/,写为/action名;命名空间是/xxx,写为/xxx/action名。

    用redirect重定向到action,IDEA会报红,但能通过编译,效果正常。建议用redirectAction,更专业。

    redirectAction   重定向到另一个action

    <result name="" type="redirectAction">
                    <param name="actionName">LoginAction</param>
                    <param name="namespace">/</param>
              <!--  <param name="namespace">/action</param>    -->
    </result>

    plainText    显示指定页面的源码

    <result name="" type="plainText">/xxx.jsp</result>

    只能显示jsp、html等的源码,不能显示action的源码。

    stream   向浏览器返回一个InputStream,一般用于文件下载

    设置拦截器

    <package name="action" namespace="/action" extends="struts-default">
            <interceptors>
                <interceptor name="" class=""></interceptor>
                <interceptor-stack name="">
                    <interceptor-ref name="" />
                    <interceptor-ref name="" />
                </interceptor-stack>
            </interceptors>
    
            <default-interceptor-ref name=""></default-interceptor-ref>
    
            <action name="loginAction" class="action.LoginAction" method="exe">
                <interceptor-ref name=""></interceptor-ref>
                <interceptor-ref name=""></interceptor-ref>
                
            </action>
        </package>

    在<interceptors>中注册拦截器、拦截器栈。

    <interceptor>注册一个拦截器,name指定拦截器名,class指定拦截器对应的java类。

    <interceptor-stack>注册一个拦截器栈,name指定拦截器栈的名字。<interceptor-ref />指定要引用的拦截器。

    可以在<action>中使用<interceptor-ref name=""></interceptor-ref>设置当前<action>要使用的拦截器、拦截器栈,一个<interceptor-ref name=""></interceptor-ref>引用一个拦截器、拦截器栈,可同时使用多个<interceptor-ref name=""></interceptor-ref>。

    也可在<default-interceptor-ref name=""></default-interceptor-ref>中设置整个包的默认拦截器、拦截器栈,对此包下所有的action都有效。

    引用的拦截器、拦截器栈可以是自己定义的,也可以是structs-default.xml中自带的。

    <package>的子元素有一定的顺序,<action>要放到最后。

    <action>中的子元素也有一定的顺序,不能随意放置。

    可仿照structs-default.xml进行配置。

    可直接对 extends="struts-default" 中的struts-default,Ctrl+B找到struts-default.xml,也可以在struts2-core.jar的根目录下找。

    Struts2配置中的默认值

        <package name="action" namespace="/" extends="struts-default">
            <default-interceptor-ref name=""></default-interceptor-ref>
            <default-action-ref name=""></default-action-ref>
            <default-class-ref class=""></default-class-ref>
        
            <action name="" class="" method="">
                <result name="" type=""></result>
                <result name="" type=""></result>
            </action>
    
        </package>

    <default-interceptor-ref name=""></default-interceptor-ref>配置默认的拦截器、拦截器栈,name指定要引用的拦截器、拦截器栈。

    <default-action-ref name=""></default-action-ref>配置默认action,name指定要引用的action的name,当命名空间中没有指定的action时,会调用默认action来处理。

    <default-class-ref class=""></default-class-ref>配置action的默认处理类,class指定一个action类,当action缺省class属性时,会设置为默认的Class。

    <action>缺省method属性时,默认为execute;

    <result>缺省name属性时,默认为success;缺省type属性时,默认为dispatcher(转发)。

    struts-default.xml中的默认配置:

     <default-interceptor-ref name="defaultStack"/>
     <default-class-ref class="com.opensymphony.xwork2.ActionSupport" />

    ActionSupport类的execute()方法:

    public String execute() throws Exception {
            return "success";
        }
  • 相关阅读:
    十个html5代码片段,超实用,一定要收藏
    零基础学编程,我想给你这五条建议
    Java 程序员开发常用的工具(二)
    Java 程序员开发常用的工具(一)
    前端人才饱和?平均年薪25W难求优质程序员!
    java基础学习 了解这些很有必要
    初学HTML5技术开发笔记整理
    HTML5移动开发学习笔记之02-CH4-HTML5 Web表单
    web前端笔记之Web前端的安全与漏洞
    5.SSH 免密码登陆
  • 原文地址:https://www.cnblogs.com/chy18883701161/p/11454591.html
Copyright © 2011-2022 走看看