struts.xml配置详解

首先配置WebContent/WEB-INF文件夹下的web.xml

    <filter>
        <filter-name>struts2</filter-name>
        <filter-class>
            org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter
        </filter-class>
    </filter>
    
    <filter-mapping>
        <filter-name>struts2</filter-name>
        <url-pattern>/*</url-pattern> ====>/*表示所有的url都被struts过滤器解析,可以改为/*.action,/*.do等
    </filter-mapping>
    
简单的web.xml配置如下

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xmlns="http://java.sun.com/xml/ns/javaee" 
   xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
   xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
   http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
   id="WebApp_ID" version="3.0">
   
   <display-name>Struts 2</display-name>
   <welcome-file-list>
      <welcome-file>index.jsp</welcome-file>
   </welcome-file-list>
   
   <filter>
      <filter-name>struts2</filter-name>
      <filter-class>
         org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter
      </filter-class>
   </filter>

   <filter-mapping>
      <filter-name>struts2</filter-name>
      <url-pattern>/*</url-pattern>    
   </filter-mapping>

</web-app>

现在开始配置struts.xml

    首先配置文件头:
        <?xml version="1.0" encoding="UTF-8"?>
        <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd">
        
    
    然后配置根目录
    
        <struts>
        
            常用子标签:
                1、<include>
                    作用:引入其他配置文件
                    
                    <include file="test.xml"/>
        
                2、<constant> 详解请参考:https://ceoajun.iteye.com/blog/1442479
                    作用:改变struts的默认行为
                    
                    设置匹配/*.action的请求都由struts2处理
                    <constant name="struts.action.extension" value="action"/>
                    
                    指定编码集为utf-8
                    <constant name="struts.i19n.encoding" value="utf-8" />
                    
                    设置浏览器是否缓存静态内容,默认true,建议开发阶段关闭
                    <constant name="struts.server.static.browserCache" value="false"/>
                    
                    当struts配置文件修改后,是否自动重载该文件,默认false,建议开发阶段开启
                    <constant name="struts.configuration.xml.reload" value="true" />
                    
                    开启开发者模式,方便查看错误信息
                    <constant name="struts.devMode" value="true"/>
                                        
                    设置multipart请求信息的最大字节数
                    <constant name="struts.multipart.maxSize" value="1024000000"/>
                    
                    设置支持动态方法调用
                    <constant name="struts.enable.DynamicMethodInvocation" value="true"/>
                    
                    允许标签中使用表达式语法
                    <constant name="struts.tag.altSyntax" value="true"/>
                    
                    
                3、<pacgage>
                    作用:管理action、result、interceptor、interceptor-stack等信息
                    
                    属性:
                        name:package的名称,具有唯一性
                        extends:继承父package的名称
                        abstract:设置package为抽象的,抽象不能定义action,默认为false
                        namespace:package命名空间,影响访问url的地址
                    
                    子标签:
                        a、<interceptors>
                        
                            定义拦截器
                            <interceptor name="timer" class="com.dsb.test.interceptor.timer" />
                            <interceptor name="logger" class="com.dsb.test.interceptor.logger" />
                            
                            定义拦截器栈
                            <interceptor-stack name="mystack">
                                <interceptor-ref name="timer" />
                                <interceptor-ref name="logger" />
                            </interceptor-stack>
                            
                          </interceptors>
                          
                        b、<default-interceptor-ref>
                            如果action中引用了其他的拦截器,默认的拦截器将无效
                            <default-interceptor-ref name="mystack"></default-interceptor-ref>
                    
                        c、<global-results>
                            全局results配置
                            <global-results>
                                <result name="input">/error.jsp</result>
                            </global-results>
                            
                        d、<action>
                            <action name="login" class="com.dsb.test.action.LoginAction">
                                引用拦截器
                                <interceptor-ref name="timer"></interceptor-ref>
                                
                                返回结果
                                <result name="success" type="dispatcher">success.jsp</result>
                                    type:详情请参考:https://www.cnblogs.com/wkrbky/p/5889328.html
                                        A、dispatcher,默认类型,用于转发到服务器上的servlet、jsp、html等页面(通常处理jsp)
                                        
                                        B、chain,用来处理action链(可以传递自身的参数)
                                        
                                        C、redirect,重定向到一个url
                                        
                                        D、redirectAction,重定向到action
                                        
                                带参结果
                                <result name="success" type="redirectAction>
                                    <param name="actionName">login</param> ====>跳转的action页面(必填)
                                    <param name="suerId">${userId}</param> ====>传递的参数名(需在原Action中生成get/set方法)
                                    <param name="password">${pssword}</param>
                                </result>
                                        
                            </action>
                            
        
        </struts>
        
        
        
以下是简单的struts.xml的配置
        
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
    <!-- 所有匹配*.action的请求都由struts2处理 -->
    <constant name="struts.action.extension" value="action" />
    <!-- 是否启用开发模式 -->
    <constant name="struts.devMode" value="true" />
    <!-- struts配置文件改动后,是否重新加载 -->
    <constant name="struts.configuration.xml.reload" value="true" />
    <!-- 设置浏览器是否缓存静态内容 -->
    <constant name="struts.serve.static.browserCache" value="false" />
    <!-- 请求参数的编码方式 -->
    <constant name="struts.i18n.encoding" value="utf-8" />
    <!-- 每次HTTP请求系统都重新加载资源文件,有助于开发 -->
    <constant name="struts.i18n.reload" value="true" />
    <!-- 文件上传最大值 -->
    <constant name="struts.multipart.maxSize" value="104857600" />
    <!-- 让struts2支持动态方法调用 -->
    <constant name="struts.enable.DynamicMethodInvocation" value="true" />
    <!-- Action名称中是否还是用斜线 -->
    <constant name="struts.enable.SlashesInActionNames" value="false" />
    <!-- 允许标签中使用表达式语法 -->
    <constant name="struts.tag.altSyntax" value="true" />
    <!-- 对于WebLogic,Orion,OC4J此属性应该设置成true -->
    <constant name="struts.dispatcher.parametersWorkaround" value="false" />

    <package name="basePackage" extends="struts-default">
    
    <package name="com.dsb.test.struts2" extends="struts-default" namespace="/test">
        <interceptors>
            <!-- 定义拦截器 
                name:拦截器名称
                class:拦截器类路径
             -->
            <interceptor name="timer" class="com.dsb.test.struts2.interceptor.timer"></interceptor>
            <interceptor name="logger" class="com.dsb.test.struts2.interceptor.logger"></interceptor>
            <!-- 定义拦截器栈 -->
            <interceptor-stack name="mystack">
                <interceptor-ref name="timer"></interceptor-ref>
                <interceptor-ref name="logger"></interceptor-ref>
            </interceptor-stack>
        </interceptors>
        
        <!-- 定义默认的拦截器 每个Action都会自动引用
         如果Action中引用了其它的拦截器 默认的拦截器将无效 -->
        <default-interceptor-ref name="mystack"></default-interceptor-ref>
        
        
        <!-- 全局results配置 -->
        <global-results>
            <result name="input">/error.jsp</result>
        </global-results>
        
        <!-- Action配置 一个Action可以被多次映射(只要action配置中的name不同)
             name:action名称
             class: 对应的类的路径
             method: 调用Action中的方法名
        -->
        <action name="hello" class="com.kay.struts2.Action.LoginAction">
            <!-- 引用拦截器
                name:拦截器名称或拦截器栈名称
             -->
            <interceptor-ref name="timer"></interceptor-ref>
        
            <!-- 节点配置
                name : result名称 和Action中返回的值相同
                type : result类型 不写则选用superpackage的type struts-default.xml中的默认为dispatcher
             -->
         <result name="success" type="dispatcher">/talk.jsp</result>
         
         <!-- 参数设置 
             name:对应Action中的get/set方法 
         -->
         <result name="success" type="redirectAction>
            <param name="actionName">login</param> ====>跳转的action页面(必填)
            <param name="suerId">${userId}</param> ====>传递的参数名(需在原Action中生成get/set方法)
            <param name="password">${pssword}</param>
         </result>
        </action>
    </package>


    </package>

</struts>    
        

本文是参考一下两位大佬的详解而写的
https://ceoajun.iteye.com/blog/1442479    
https://www.cnblogs.com/wkrbky/p/5889328.html    
        
        
        
        
        
        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值