亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

Struts2學習筆記(二)——配置詳解

2019-11-15 00:47:51
字體:
來源:轉載
供稿:網友
Struts2學習筆記(二)——配置詳解

1、Struts2配置文件加載順序:

  • default.PRoperties(默認常量配置)
  • struts-default.xml(默認配置文件,主要配置bean和攔截器)
  • struts-plugin.xml(配置插件)
  • struts.xml(配置action或者常量等)
  • struts.properties(常量配置)
  • web.xml(配置javaEE,如:監聽器和過濾器)

2、Struts2配置文件詳解

1)default.properties

default.properties是Struts2的全局常量配置文件,default.default.properties的默認配置:

 1 //Struts2默認的編碼類型是UTF-8 2 struts.i18n.encoding=UTF-8 3 //指定jakarta為Struts的默認文件上傳包,即默認使用apache的fileupload組件。 4 struts.multipart.parser=jakarta 5 //上傳文件的最大字節數 6 struts.multipart.maxSize=2097152 7 //表單提交或者url請求時地址的后綴,如果需要指定多個請求后綴,則以英文逗號隔開 8 struts.action.extension=action,, 9 //Struts中action創建都是由對應的工廠創建。10 struts.objectFactory = spring11 //指定spring框架的自動裝配類型,默認值為name,即默認根據bean的name屬性自動裝配12 struts.objectFactory.spring.autoWire = name13 //動態方法調用14 struts.enable.DynamicMethodInvocation = true15 //是否為開發模式16 struts.devMode = false17 //對于開發來講還是必將重要的。設置為true時,在每次請求時,資源包就會被重載。18 struts.i18n.reload=false19 //設置為true時,我們每次修改struts.xml文件后,框架會自動加載這個文件。20 struts.configuration.xml.reload=false21 //頁面使用靜態方法。通過ognl標簽調用值棧action中的方法。22 struts.ognl.allowStaticMethodaccess=false

default.properties是不能直接修改的,我們如果要修改,有兩種方式:

  • 在src下創建struts.properties
    • 例如:struts.enable.DynamicMethodInvocation = true
  • 在struts.xml中配置(推薦使用)
    • 例如:<constant name="struts.devMode" value=”true” />

2)struts-default.xml

struts-default.xml文件是struts2框架默認加載的配置文件。它定義struts2一些核心的bean和攔截器。這些攔截器是以key-value對的形式配置在struts-default.xml中,其中name是攔截器名字,就是后面使用該攔截器的引用點,value則指定攔截器的實現類。

<?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>    <!--         package:是struts2框架底層提供出來的            * name:用于讓其他包來繼承的            * abstract:設置為抽象包,下面不能定義action標簽     -->    <package name="struts-default" abstract="true">        <!--             result-types:聲明結果類型                * name:結果類型的名稱                * class:結果類型對應類的完整路徑                * default:設置其為默認,true是默認         -->        <result-types>            <!-- 轉發到action -->            <result-type name="chain" class="com.opensymphony.xwork2.ActionChainResult"/>            <!-- 轉發到jsp -->            <result-type name="dispatcher" class="org.apache.struts2.dispatcher.ServletDispatcherResult" default="true"/>            <result-type name="freemarker" class="org.apache.struts2.views.freemarker.FreemarkerResult"/>            <result-type name="httpheader" class="org.apache.struts2.dispatcher.HttpHeaderResult"/>            <!-- 重定向到jsp -->            <result-type name="redirect" class="org.apache.struts2.dispatcher.ServletRedirectResult"/>            <!-- 重定向到action -->                                                          <result-type name="redirectAction" class="org.apache.struts2.dispatcher.ServletActionRedirectResult"/>            <!-- 用于下載 -->            <result-type name="stream" class="org.apache.struts2.dispatcher.StreamResult"/>            <result-type name="velocity" class="org.apache.struts2.dispatcher.VelocityResult"/>            <result-type name="xslt" class="org.apache.struts2.views.xslt.XSLTResult"/>            <result-type name="plainText" class="org.apache.struts2.dispatcher.PlainTextResult" />        </result-types>        <!--             interceptors                * interceptor:聲明攔截器                    * name:攔截器的名稱                    * class:對應攔截器類的完整路徑         -->        <interceptors>            <interceptor name="alias" class="com.opensymphony.xwork2.interceptor.AliasInterceptor"/>            <interceptor name="autowiring" class="com.opensymphony.xwork2.spring.interceptor.ActionAutowiringInterceptor"/>            <interceptor name="chain" class="com.opensymphony.xwork2.interceptor.ChainingInterceptor"/>            <interceptor name="conversionError" class="org.apache.struts2.interceptor.StrutsConversionErrorInterceptor"/>            <interceptor name="cookie" class="org.apache.struts2.interceptor.CookieInterceptor"/>            <interceptor name="clearsession" class="org.apache.struts2.interceptor.ClearSessionInterceptor" />            <interceptor name="createSession" class="org.apache.struts2.interceptor.CreateSessionInterceptor" />            <interceptor name="debugging" class="org.apache.struts2.interceptor.debugging.DebuggingInterceptor" />            <interceptor name="execAndWait" class="org.apache.struts2.interceptor.ExecuteAndWaitInterceptor"/>            <interceptor name="exception" class="com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor"/>            <interceptor name="fileUpload" class="org.apache.struts2.interceptor.FileUploadInterceptor"/>            <interceptor name="i18n" class="com.opensymphony.xwork2.interceptor.I18nInterceptor"/>            <interceptor name="logger" class="com.opensymphony.xwork2.interceptor.LoggingInterceptor"/>            <interceptor name="modelDriven" class="com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor"/>            <interceptor name="scopedModelDriven" class="com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor"/>            <interceptor name="params" class="com.opensymphony.xwork2.interceptor.ParametersInterceptor"/>            <interceptor name="actionMappingParams" class="org.apache.struts2.interceptor.ActionMappingParametersInteceptor"/>            <interceptor name="prepare" class="com.opensymphony.xwork2.interceptor.PrepareInterceptor"/>            <interceptor name="staticParams" class="com.opensymphony.xwork2.interceptor.StaticParametersInterceptor"/>            <interceptor name="scope" class="org.apache.struts2.interceptor.ScopeInterceptor"/>            <interceptor name="servletConfig" class="org.apache.struts2.interceptor.ServletConfigInterceptor"/>            <interceptor name="timer" class="com.opensymphony.xwork2.interceptor.TimerInterceptor"/>            <interceptor name="token" class="org.apache.struts2.interceptor.TokenInterceptor"/>            <interceptor name="tokenSession" class="org.apache.struts2.interceptor.TokenSessionStoreInterceptor"/>            <interceptor name="validation" class="org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor"/>            <interceptor name="workflow" class="com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor"/>            <interceptor name="store" class="org.apache.struts2.interceptor.MessageStoreInterceptor" />            <interceptor name="checkbox" class="org.apache.struts2.interceptor.CheckboxInterceptor" />            <interceptor name="profiling" class="org.apache.struts2.interceptor.ProfilingActivationInterceptor" />            <interceptor name="roles" class="org.apache.struts2.interceptor.RolesInterceptor" />            <interceptor name="annotationWorkflow" class="com.opensymphony.xwork2.interceptor.annotations.AnnotationWorkflowInterceptor" />            <interceptor name="multiselect" class="org.apache.struts2.interceptor.MultiselectInterceptor" />                        <!-- 聲明自定義攔截器 -->            <interceptor name="expessionInterceptor" class="cn.itcast.aop.ExpessionInterceptor"></interceptor>            <!-- Basic stack -->            <interceptor-stack name="basicStack">                <interceptor-ref name="exception"/>                <interceptor-ref name="servletConfig"/>                <interceptor-ref name="prepare"/>                <interceptor-ref name="checkbox"/>                <interceptor-ref name="multiselect"/>                <interceptor-ref name="actionMappingParams"/>                <interceptor-ref name="params">                    <param name="excludeParams">dojo/..*,^struts/..*,^session/..*,^request/..*,^application/..*,^servlet(Request|Response)/..*,parameters/...*</param>                </interceptor-ref>                <interceptor-ref name="conversionError"/>            </interceptor-stack>            <!--                 interceptor-stack:攔截器棧                    * struts2框架通過使用攔截器棧,進而使用上面聲明好的攔截器                    * 在攔截器棧里面,存放了一些上面聲明好的攔截器                    * 攔截器棧相當于一個list集合,執行的時候是按照存放的先后順序來執行             -->            <interceptor-stack name="defaultStack">                <interceptor-ref name="exception"/>                <interceptor-ref name="alias"/>                <interceptor-ref name="servletConfig"/>                <interceptor-ref name="i18n"/>                <interceptor-ref name="prepare"/>                <interceptor-ref name="chain"/>                <interceptor-ref name="scopedModelDriven"/>                <interceptor-ref name="modelDriven"/>                <interceptor-ref name="fileUpload">                    <param name="maximumSize">20971520</param>                    <param name="allowedTypes">text/plain</param>                    <param name="allowedExtensions">.txt</param>                </interceptor-ref>                <interceptor-ref name="checkbox"/>                <interceptor-ref name="multiselect"/>                <interceptor-ref name="staticParams"/>                <interceptor-ref name="actionMappingParams"/>                <interceptor-ref name="params">                    <param name="excludeParams">dojo/..*,^struts/..*,^session/..*,^request/..*,^application/..*,^servlet(Request|Response)/..*,parameters/...*</param>                </interceptor-ref>                <interceptor-ref name="conversionError"/>                <interceptor-ref name="validation">                    <param name="excludeMethods">input,back,cancel,browse</param>                </interceptor-ref>                <interceptor-ref name="workflow">                    <param name="excludeMethods">input,back,cancel,browse</param>                </interceptor-ref>                <interceptor-ref name="debugging"/>                                <!-- 配置使用自定義攔截器 -->                <interceptor-ref name="expessionInterceptor"/>                            </interceptor-stack>       </interceptors>        <!-- 配置在struts2框架運行時,默認要執行的是哪個攔截器棧,defaultStack -->        <default-interceptor-ref name="defaultStack"/>        <!-- 配置在struts2框架運行時,如果沒有為action指定class的話,默認要執行的class的類名 -->        <default-class-ref class="com.opensymphony.xwork2.ActionSupport" />    </package></struts>

3)struts-plugin.xml

如果不是開發插件的話,是不需要編寫這個配置文件的,一般是使用插件。

4)struts.xml

struts.xml 為Struts 2的核心配置文件,主要負責管理應用中的Action映射,以及該Action包含的Result定義等。

  • 常量配置
  • 包配置
  • include包含配置
  • 攔截器配置
  • 全局result設置
 1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE struts PUBLIC 3     "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" 4     "http://struts.apache.org/dtds/struts-2.3.dtd"> 5 <struts> 6     <!--  7         1、constant:配置常量 8             * name:指定的是struts2框架底層提供的default.properties資源文件中配置的"常量" 9             * value:指定的是配置常量的值10             * 在struts.xml文件中,配置的常量的值會覆蓋底層提供的default.properties資源文件中配置的常量的值11         12         * 配置struts2框架的頁面中請求連接的后綴名,如果指定多個的話,用","隔開13         * 如果在struts.xml中和struts.properties資源文件中同時進行配置,struts.properties的配置起作用14         * 因為常量可以在多個配置文件中進行定義,所以我們需要了解下struts2加載常量的搜索順序:15             1 struts-default.xml16             2 struts-plugin.xml17             3 struts.xml18             4 struts.properties(自己創建)19             5 web.xml20      -->21     <constant name="struts.devMode" value="true"></constant>22         23     <!-- 24         配置所有資源文件,省略后綴名,如果配置多個資源文件時,用","隔開。不僅是國際化資源文件25         * 類型轉換器的錯誤提示資源文件26         * 國際化資源文件27         * 上傳文件的錯誤提示信息資源文件28      -->29     <constant name="struts.custom.i18n.resources" 30             value="cn.sunny.converter.converter,31                     cn.sunny.i18n.resources,32                     cn.sunny.upload.fileuploadmessage">33     </constant>34     35     <!-- 配置文件上傳的總大小 -->36     <constant name="struts.multipart.maxSize" value="2097152000"></constant>37     38     39     <!--40         2、包配置41         package:包42           * name:包名,唯一的,必選項43           * namespace:命名空間,唯一的,相當于房間號??蛇x項,省略情況下是"/"。頁面中請求連接的前半部分44           * extends:繼承其他package45             * extends="struts-default":struts2框架底層提供的核心包struts2-core-2.3.3.jar下的struts-default.xml文件46     -->47     <package name="default" namespace="/" extends="struts-default">48         <!-- 49             action:50                 * name:對應頁面中請求連接的后面半部分51                 * class:對應要執行的類的完整路徑52                 * method:要執行的方法名稱,默認為execute方法53          -->54         <action name="testAction" class="com.sunny.action.TestAction" method="test">55             <!-- 56                 result:結果類型57                     * name:對應的是執行的類的方法的返回值58                     * 后半部分的文本內容:要轉向到的頁面59              -->60             <result name="success">/success.jsp</result>61         </action>62     </package>63     64     <!-- 65         3、引入自定義配置文件 66         include節點是struts2中組件化的方式,67         可以將每個功能模塊獨立到一個xml配置文件中,68         然后用include節點引用 69     -->70     <include file="struts_user.xml"/>71 72     <!--4、攔截器配置,后面講攔截器的時候還會具體講解-->73     <interceptors>74         <!-- 定義攔截器 75             name:攔截器名稱76             class:攔截器類路徑77          -->78         <interceptor name="logger" class="com.sunny.logger"/>79         <!-- 定義攔截器棧 -->80         <interceptor-stack name="mystack">81             <interceptor-ref name="defaultStack"/>82             <interceptor-ref name="logger"/>83         </interceptor-stack>84     </interceptors>85     <!-- 配置修改struts2框架運行時,默認執行的是自定義攔截器棧 -->86     <default-interceptor-ref name="expessionStack" />87 88     <!-- 5、全局results配置 -->89     <global-results>90         <result name="input">/error.jsp</result>91     </global-results>92 </struts>

5)struts.properties

struts.properties文件是一個標準的Properties文件,該文件包含了系列的key-value對象,每個key就是一個Struts 2屬性,該key對應的value就是一個Struts 2屬性值。

Struts2在default.properties文件中給出了所有屬性的列表,并對其中一些屬性設置了默認值,如果想改變這些默認值或者給那些沒有在default.properties文件中設置值的屬性設置值,則可以使用struts.properties,如果設置了struts.properties文件,那么在該文件中的屬性會覆蓋default.properties文件中的屬性,struts.properties的使用方法和default.properties一樣。

struts.properties一般放在src目錄下。

6)web.xml

任何MVC框架都需要與Web應用整合需要助于web.xml文件,只有配置在web.xml文件中Servlet才會被應用加載。通常,所有的MVC框架都需要Web應用加載一個核心控制器,對于Struts2框架而言,需要加載StrutsPrepareAndExecuteFilter,只要Web應用負責加載StrutsPrepareAndExecuteFilter,StrutsPrepareAndExecuteFilter將會加載Struts2框架。因為Struts2將核心控制器設計成Filter,而不是一個普通Servlet。故為了讓Web應用加載StrutsPrepareAndExecuteFilter,只需要在web.xml文件中配置StrutsPrepareAndExecuteFilter即可。此外web.xml依然可以配置JavaEE信息,比如初始化信息,Servlet、Filter等。

 1 <?xml version="1.0" encoding="UTF-8"?> 2 <web-app id="WebApp_9" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" 3          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4          xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> 5  6     <display-name>Struts Blank</display-name> 7  8     <filter> 9         <filter-name>struts2</filter-name>10         <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>11     </filter>12 13     <filter-mapping>14         <filter-name>struts2</filter-name>15         <url-pattern>/*</url-pattern>16     </filter-mapping>17 18 </web-app>

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
在线观看日韩专区| 在线精品国产欧美| 亚洲日韩欧美视频| 亚洲欧美一区二区三区在线| 午夜精品免费视频| 精品一区二区三区四区| 一区二区av在线| 国产日韩av在线播放| 国产+成+人+亚洲欧洲| 日韩精品极品毛片系列视频| 国产精品91免费在线| 国产精欧美一区二区三区| 亚洲一区二区久久久久久| 久久九九免费视频| 国产午夜一区二区| 91久久精品美女高潮| 亚洲国产精品成人va在线观看| 日韩美女免费线视频| 欧美丝袜美女中出在线| 一区二区三区国产视频| 成人免费网站在线观看| 2019亚洲日韩新视频| 麻豆乱码国产一区二区三区| 国产不卡av在线免费观看| 91精品国产91久久久久福利| 日韩亚洲欧美中文在线| 狠狠躁夜夜躁久久躁别揉| 九九热这里只有精品免费看| 亚洲欧美中文日韩在线v日本| 久久综合亚洲社区| 在线观看日韩www视频免费| 国产成人精品久久二区二区| 宅男66日本亚洲欧美视频| 欧美一级片一区| 欧美一级高清免费| 国内偷自视频区视频综合| 欧美激情视频一区二区| 久久久久久国产| 中文字幕日韩欧美在线视频| 美日韩精品免费观看视频| 欧亚精品中文字幕| 国产日韩综合一区二区性色av| 国产精品免费一区二区三区都可以| 亚洲精品短视频| 亚洲欧美另类中文字幕| 韩国国内大量揄拍精品视频| 久久久久在线观看| 欧美怡春院一区二区三区| 欧美性生交大片免网| 日韩电影免费观看在线观看| 国产午夜精品免费一区二区三区| 久久久av网站| 欧美成人午夜视频| 精品国产拍在线观看| 欧美激情中文字幕在线| 亚洲精品视频中文字幕| 欧亚精品在线观看| 欧美精品www| 欧美大片第1页| 精品无人国产偷自产在线| 日本不卡高字幕在线2019| 亚洲欧美制服丝袜| 精品国产91久久久| 国产成人精品久久| 欧美激情一区二区三级高清视频| 久久久视频精品| 日韩在线视频观看| 97视频免费在线看| 久久久免费精品| 北条麻妃一区二区在线观看| 日本精品va在线观看| 综合国产在线观看| 色综合久综合久久综合久鬼88| 动漫精品一区二区| 亚洲免费av电影| 成人亲热视频网站| 亚洲精品第一页| 日韩中文字幕网| 亲爱的老师9免费观看全集电视剧| 成人444kkkk在线观看| 欧美精品久久久久久久| 国产精品无码专区在线观看| 国产精品久久久久久久7电影| 亚州国产精品久久久| 亚洲最新av网址| 亚洲成人精品av| xxxx欧美18另类的高清| 久久成人国产精品| 欧美成人免费小视频| 欧美精品免费在线| 欧美壮男野外gaytube| 国产精品91久久久| 日本a级片电影一区二区| 91精品免费久久久久久久久| 精品中文字幕在线| 欧美激情成人在线视频| 韩国日本不卡在线| 成人黄色在线观看| 国产精品黄视频| 91福利视频网| 国产精品女人久久久久久| 久久不射热爱视频精品| 91精品国产亚洲| 在线视频免费一区二区| 国产精品久久久久久久久久免费| 91久久久在线| 欧美电影院免费观看| 性色av一区二区三区红粉影视| 国产精品视频一区国模私拍| 亚洲一区二区三区乱码aⅴ| 伊人久久久久久久久久久久久| 欧洲午夜精品久久久| 日韩亚洲一区二区| 91精品国产乱码久久久久久蜜臀| 国产91精品不卡视频| 日韩精品视频免费专区在线播放| 日韩精品视频中文在线观看| 欧美美最猛性xxxxxx| 久久久久这里只有精品| 91网在线免费观看| 九九热精品视频国产| 亚洲成人激情在线| 亚洲电影在线看| 久久久久久久久久久人体| 国产伊人精品在线| 日韩av电影免费观看高清| 精品久久久香蕉免费精品视频| 精品亚洲aⅴ在线观看| 成人久久一区二区| 国产精品免费在线免费| 热久久免费视频精品| 在线观看国产精品91| 久久福利视频网| 91成人福利在线| 美日韩在线视频| 丝袜亚洲欧美日韩综合| 久久亚洲精品成人| 疯狂蹂躏欧美一区二区精品| 欧美激情视频给我| 日韩电影中文字幕| 久久亚洲春色中文字幕| 亚洲xxxx妇黄裸体| 久久成人精品视频| 2024亚洲男人天堂| 亚洲成年人影院在线| 久久精品视频99| 欧美视频在线视频| 国产精品黄页免费高清在线观看| 一道本无吗dⅴd在线播放一区| 亚洲人成伊人成综合网久久久| 国产精品国产三级国产专播精品人| www.日韩不卡电影av| 日韩在线高清视频| 亚洲精品免费在线视频| 欧美日韩国产第一页| 欧美精品videosex性欧美| 亚洲性线免费观看视频成熟| 国产美女直播视频一区| 福利视频一区二区| 国产综合视频在线观看| 欧美激情一级精品国产| 一区二区成人av| 国产成人综合一区二区三区| 国产一区二区丝袜|