Struts2學習(二):struts2配置詳解!

Struts2框架按照如下搜索順序加載Struts2常量: html

1.struts-default.xml---該文件保存在struts2-core-2.x.x.jar文件中 java

2.struts-pluugin.xml---在struts2一些插件jar包裏,好比struts2-xxx-plugin-2.3.x.x.jar web

3.struts.xml---Web應用默認的Struts2配置文件 ajax

4.struts.properties---Web應用默認的Struts2配置文件 spring

5.web.xml--Web應用的配置文件 apache

若是多個文件中配置同一個常量,則後者覆蓋前者,常量的配置爲兩個屬性,常量name和常量value 編程

1、常量配置 瀏覽器

Struts2中配置常量一般都是在struts.xml中配置,由於方便管理還有統一,固然也能夠在struts.properties文件來配置,專門用做於struts2的常量配置文件,還有一種是在web.xml裏配置。對於既配置了struts.xml又配置了struts.properties,則起做用的是struts.properties 緩存

1.struts.xml-----一般推薦配置在這裏 服務器

<struts>
	<constant name="struts.i18n.encoding" value="UTF-8"/>
	......
</struts>

2.struts.properties--<K-V>形式,K-name V-value,它出如今struts2-core-2.x.x.x.jar下面的org.apache.struts2 下面的 static包裏的default.properties。原理是經過自建的配置(僅限已配置的參數)覆蓋掉該默認對應配置參數

### 設置Web應用的字符編碼  
struts.i18n.encoding=UTF-8

3.web.xml-----未試驗過

<filter>
 	 <!-- 定義核心Filter的名字和實現類 -->
  	<filter-name>struts2</filter-name>
  	<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
  	
  	<init-param>
  		<param-name>struts.i18n.encoding</param-name>
  		<param-value>UTF-8</param-value>
  	</init-param>
  </filter>

2、常量詳解

<struts>  
    <!-- 指定Web應用的默認編碼集,至關於調用HttpServletRequest的setCharacterEncoding方法 -->  
    <constant name="struts.i18n.encoding" value="UTF-8" />  
  
    <!--  
        該屬性指定須要Struts 2處理的請求後綴,該屬性的默認值是action,即全部匹配*.action的請求都由Struts2處理。  
        若是用戶須要指定多個請求後綴,則多個後綴之間以英文逗號(,)隔開。  
    -->  
    <constant name="struts.action.extension" value="do" />  
  
    <!-- 設置瀏覽器是否緩存靜態內容,默認值爲true(生產環境下使用),開發階段最好關閉 -->  
    <constant name="struts.serve.static.browserCache" value="false" />  
  
    <!-- 當struts的配置文件修改後,系統是否自動從新加載該文件,默認值爲false(生產環境下使用),開發階段最好打開 -->  
    <constant name="struts.configuration.xml.reload" value="true" />  
  
    <!-- 開發模式下使用,這樣能夠打印出更詳細的錯誤信息 -->  
    <constant name="struts.devMode" value="true" />  
  
    <!-- 默認的視圖主題 -->  
    <constant name="struts.ui.theme" value="simple" />  
  
    <!-- spring 託管 -->  
    <constant name="struts.objectFactory" value="spring" />  
  
    <!--  
        指定加載struts2配置文件管理器,默認爲org.apache.struts2.config.DefaultConfiguration  
        開發者能夠自定義配置文件管理器,該類要實現Configuration接口,能夠自動加載struts2配置文件。  
    -->  
    <constant name="struts.configuration"  
        value="org.apache.struts2.config.DefaultConfiguration" />  
  
    <!-- 設置默認的locale和字符編碼 -->  
    <constant name="struts.locale" value="zh_CN" />  
    <constant name="struts.i18n.encoding" value="GBK" />  
  
    <!-- 指定Struts的工廠類 -->  
    <constant name="struts.objectFactory" value="spring"></constant>  
  
    <!--  
        指定spring框架的裝配模式,裝配方式有: name, type, auto, and constructor (name  
        是默認裝配模式)  
    -->  
    <constant name="struts.objectFactory.spring.autoWire" value="name" />  
  
    <!-- 該屬性指定整合spring時,是否對bean進行緩存,值爲true or false,默認爲true -->  
    <cosntant name="struts.objectFactory.spring.useClassCache" />  
  
    <!-- 指定類型檢查,包含tiger和notiger -->  
    <cosntant name="struts.objectTypeDeterminer" value="tiger" />  
  
    <!-- 該屬性指定處理 MIME-type multipart/form-data,文件上傳 -->  
    <constant name="struts.multipart.parser" value="cos" />  
    <constant name="struts.multipart.parser" value="pell" />  
    <constant name="struts.multipart.parser" value="jakarta" />  
  
    <!-- 指定上傳文件時的臨時目錄,默認使用 javax.servlet.context.tempdir -->  
    <constant name="struts.multipart.saveDir" value="/tmpuploadfiles" />  
  
    <!-- 該屬性指定Struts 2文件上傳中整個請求內容容許的最大字節數 -->  
    <constant name="struts.multipart.maxSize" value="2097152" />  
  
    <!--  
        該屬性指定Struts2應用加載用戶自定義的屬性文件,該自定義屬性文件指定的屬性不會覆蓋  
        struts.properties文件中指定的屬性。若是須要加載多個自定義屬性文件,多個自定義屬性文  
        件的文件名以英文逗號(,)隔開。(也就是說不要改寫struts.properties!)  
    -->  
    <constant name="struts.custom.properties"  
        value="application,org/apache/struts2/extension/custom" />  
  
    <!-- 
        指定請求url與action映射器,默認爲org.apache.struts2.dispatcher.mapper.DefaultActionMapper 
    -->  
    <constant name="struts.mapper.class"  
        value="org.apache.struts2.dispatcher.mapper.DefaultActionMapper" />  
  
    <!-- 指定action的後綴,默認爲action -->  
    <constant name="struts.action.extension" value="do" />  
  
    <!-- 被 FilterDispatcher使用指定瀏覽器是否緩存靜態內容,測試階段設置爲false,發佈階段設置爲true. -->  
    <constant name="struts.serve.static.browserCache" value="true" />  
  
    <!-- 設置是否支持動態方法調用,true爲支持,false不支持. -->  
    <constant name="struts.enable.DynamicMethodInvocation" value="true" />  
  
    <!-- 設置是否能夠在action中使用斜線,默認爲false不能夠,想使用需設置爲true. -->  
    <constant name="struts.enable.SlashesInActionNames" value="true" />  
  
    <!-- 是否容許使用表達式語法,默認爲true. -->  
    <constant name="struts.tag.altSyntax" value="true" />  
  
    <!-- 設置當struts.xml文件改動時,是否從新加載 -->  
    <cosntant name="struts.configuration.xml.reload" value="true" />  
  
    <!-- 設置struts是否爲開發模式,默認爲false,測試階段通常設爲true. -->  
    <cosntant name="struts.devMode" value="true" />  
  
    <!-- 設置是否每次請求,都從新加載資源文件,默認值爲false. -->  
    <cosntant name="struts.i18n.reload" value="false" />  
  
    <!-- 標準的UI主題,默認的UI主題爲xhtml,能夠爲simple,xhtml或ajax -->  
    <cosntant name="struts.ui.theme" value="xhtml" />  
  
    <!-- 模板目錄 -->  
    <cosntant name="struts.ui.templateDir" value="template" />  
  
    <!-- 設置模板類型. 能夠爲 ftl, vm, or jsp -->  
    <cosntant name="struts.ui.templateSuffix" value="ftl" />  
  
    <!-- 定位velocity.properties 文件. 默認velocity.properties -->  
    <cosntant name="struts.velocity.configfile" value="velocity.properties" />  
  
    <!-- 設置velocity的context. -->  
    <cosntant name="struts.velocity.contexts" value="...." />  
  
    <!-- 定位toolbox -->  
    <cosntant name="struts.velocity.toolboxlocation" value="...." />  
  
    <!-- 指定web應用的端口 -->  
    <cosntant name="struts.url.http.port" value="80" />  
  
    <!-- 指定加密端口 -->  
    <cosntant name="struts.url.https.port" value="443" />  
  
    <!-- 設置生成url時,是否包含參數.值能夠爲: none,get or all -->  
    <cosntant name="struts.url.includeParams" value="get" />  
  
    <!-- 設置要加載的國際化資源文件,以逗號分隔. -->  
    <cosntant name="struts.custom.i18n.resources" value="application" />  
  
    <!--  
        對於一些web應用服務器不能處理HttpServletRequest.getParameterMap(), 像  
        WebLogic,Orion, and OC4J等,須設置成true,默認爲false.  
    -->  
    <cosntant name="struts.dispatcher.parametersWorkaround" value="false" />  
  
    <!-- 指定freemarker管理器 -->  
    <cosntant name="struts.freemarker.manager.classname"  
        value="org.apache.struts2.views.freemarker.FreemarkerManager" />  
  
    <!-- 設置是否對freemarker的模板設置緩存,效果至關於把template拷貝到 WEB_APP/templates. -->  
    <cosntant name="struts.freemarker.templatesCache" value="false" />  
  
    <!-- 一般不須要修改此屬性. -->  
    <cosntant name="struts.freemarker.wrapper.altMap" value="true" />  
  
    <!-- 指定xslt result是否使用樣式表緩存.開發階段設爲true,發佈階段設爲false. -->  
    <cosntant name="struts.xslt.nocache" value="false" />  
  
    <!-- 設置struts自動加載的文件列表. -->  
    <cosntant name="struts.configuration.files"  
        value="struts-default.xml,struts-plugin.xml,struts.xml" />  
  
    <!-- 設定是否一直在最後一個slash以前的任何位置選定namespace. -->  
    <cosntant name="struts.mapper.alwaysSelectFullNamespace"  
        value="false" />  
</struts>

3、strust2配置詳解

1.包配置:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN"
    "http://struts.apache.org/dtds/struts-2.1.dtd">
    
<struts>
	<!-- 常量配置,用到constant標籤 -->
	<constant name="struts.i18n.encoding"  value="UTF-8"/>
	
	<!-- 包配置:通常都要繼承struts-default,由於該包有默認的攔截器等東西 -->
	<!--namespace:命名空間,考慮到可能出現相同的action,若是有命名空間就能夠解決  -->
	<package name="default" namespace="/user" extends="struts-default">
	
		<!-- 定義一個action -->
		<action name="login" class="cn.itcast.Action.LoginAction" method="execute">
		
			<!--  返回一個String常量,轉發至對應的JSP頁面-->
			<result name="success">/welcome.jsp</result>
			<result name="login">/login.jsp</result>
		</action>	
	</package>

</struts>

常量配置:用到 constant 標籤 ,name 和 value 兩屬性

命名空間: namespace=」/user」,http://localhost:8080/user/login.action 查找條件是優先到指定命名空間尋找對應的action,若是找到就用再也不繼續找,若是找不到,則到默認的命名空間找,不然報錯

包含配置:<include>:若是應用規模逐漸增大,系統中的action也愈來愈多,致使struts.xml配置愈來愈臃腫,這時就能夠考慮拆分struts.xml文件。

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
	<include file="test1.xml"/>
	<include file="test2.xml"/>
	<include file="test3.xml"/>
</struts>

攔截器:能夠在Action執行前或執行後啓動,相似於過濾器,主要用到了AOP編程思想

<struts>
	<!-- 常量配置,用到constant標籤 -->
	<constant name="struts.i18n.encoding"  value="UTF-8"/>
	<!-- 包配置:通常都要繼承struts-default,由於該包有默認的攔截器等東西 -->
	<!--namespace:命名空間,考慮到可能出現相同的action,若是有命名空間就能夠解決  -->
	<package name="default" namespace="/user" extends="struts-default">
		
		<interceptors>
		
			<!--定義兩個攔截器,權限檢查和日誌記錄攔截器-->
			<interceptor name="authority" class="cn.java.AuthorityInterceptor"/>
			<interceptor name="log" class="cn.java.LogInterceptor"/>
			
			<!--定義一個攔截器棧,裏面包含權限檢查和日誌記錄攔截器-->
			<interceptor-stack name="">
				<interceptor-ref name="authority"></interceptor-ref>
				<interceptor-ref name="log"></interceptor-ref>
			</interceptor-stack>
		</interceptors>
		
		<!-- 定義一個action -->
		<action name="login" class="cn.java.Action.LoginAction" method="execute">
		
			<!--  返回一個String常量,轉發至對應的JSP頁面-->
			<result name="success">/welcome.jsp</result>
			<result name="login">/login.jsp</result>
			
			<!-- 在Action中使用攔截器或攔截器棧方式都是同樣的 -->
			<interceptor-ref name="log"/>
		</action>	
	</package>
</struts>
相關文章
相關標籤/搜索