A. struts2.xml 不放在src下時如何在web.xml中配置路徑
<filter>
<filter-name>struts2</filter-name>
<filter-class>
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
</filter-class>
<init-param>
<迅芹param-name>config<閉鏈/param-name>
<param-value>struts-default.xml,struts-plugin.xml,config/struts.xml</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>*.action</畝態畢url-pattern>
</filter-mapping>
B. struts2在web.xml中配置標簽庫有什麼作用
用struts2框架不需要在web.xml配置標簽庫的位置,因為tomcat會自凳禪虧動在xxx.jar中找META-INF目錄下的xxx.tld文件,如棗神果要是標簽庫文件沒有放到xxx.jar文件中需要在web.xml中配襲液置
C. 教你如何配置Struts2 web.xml文件
Struts 的基本配置
前面大致了解了Struts 框架的基本內容 但這些基本內容都必須建立在Struts 的配置文件基礎之上 這些配置文件的配置信首渣檔息也是Struts 應用的核心部分
配置Struts web xml文件
任何MVC框架都需要與Web應用整合 這就不得不藉助於Struts web xml文件 只有配置在Struts web xml文件中Servlet才會被應用載入
通常 所有的MVC框架都需要Web應用載入一個核心控制器 對於Struts 框架而言 需要載入FilterDispatcher 只要Web應用負責載入FilterDispatcher FilterDispatcher將會載入應用的Struts 框架
因為Struts 將核心控制器設計成Filter 而不是一個普通Servlet 故為了讓Web應用載入FilterDispacher 只需要在Struts web xml文件中配置FilterDispatcher即可
配置FilterDispatcher的代碼片段如下
< ! 配置Struts 核心Filter的名字 >struts< /FILTER NAME> < FILTER CLASS> apache struts dispatcher FilterDispatcher < /FILTER CLASS>< INIT PARAM>< ! 配置Struts 框架默認載入的Action包者亂結構 >< PARAM NAME>actionPackages< /PARAM NAME>< PARAM VALUE> apache struts showcase person< /PARAM VALUE>< /INIT PARAM>< ! 配置Struts 框架的配置提供者類 >< INIT PARAM>< PARAM NAME>configProviders < /PARAM NAME>< PARAM VALUE>lee MyConfigurationProvider< /PARAM VALUE>< /INIT PARAM>< /FILTER>
正如上面看到的 當配置Struts 的FilterDispatcher類時 可以指定一系列的初始化參數 為該Filter配置初始化參數時 其中有 個初始化參數有特殊意義
config 該參數的值是一個以英文逗號( )隔開的字元串 每個字元串都是一個XML配置文件的位置 Struts 框架將自動載入該屬性指定的系列配置文梁孝件
actionPackages 該參數的值也是一個以英文逗號( )隔開的字元串 每個字元串都是一個包空間 Struts 框架將掃描這些包空間下的Action類
configProviders 如果用戶需要實現自己的ConfigurationProvider類 用戶可以提供一個或多個實現了ConfigurationProvider介面的類 然後將這些類的類名設置成該屬性的值 多個類名之間以英文逗號( )隔開
除此之外 還可在此處配置Struts 常量 每個 元素配置一個Struts 常量 其中
子元素指定了常量name 而
子元素指定了常量value
提示 關於Struts 常量的講解 請參閱本書的 節
在Struts web xml文件中配置了該Filter 還需要配置該Filter攔截的URL 通常 我們讓該Filter攔截所有的用戶請求 因此使用通配符來配置該Filter攔截的URL
下面是配置該Filter攔截URL的配置片段
< ! 配置Filter攔截的URL >< FILTER MAPPING>< ! 配置Struts 的核心FilterDispatcher攔截所有用戶請求 >< FILTER NAME>struts< /FILTER NAME>/*< /URL PATTERN>< /FILTER MAPPING>
配置了Struts 的核心FilterDispatcher後 基本完成了Struts 在web xml文件中的配置
如果Web應用使用了Servlet 以前的規范 因為Web應用不會自動載入Struts 框架的標簽文件 因此必須在Struts web xml文件中配置載入Struts 標簽庫
配置載入Struts 標簽庫的配置片段如下
< ! 配置Struts 標簽庫的URI >/s< /TAGLIB URI>< ! 指定Struts 標簽庫定義文件的位置 >< TAGLIB LOCATION>/WEB INF/struts tags tld< /TAGLIB LOCATION>< /TAGLIB>
在上面配置片段中 指定了Struts 標簽庫配置文件物理位置 /WEB INF/struts tags tld 因此我們必須手動復制Struts 的標簽庫定義文件 將該文件放置在Web應用的WEB INF路徑下
如果Web應用使用Servlet 以上的規范 則無需在Struts web xml文件中配置標簽庫定義 因為Servlet 規范會自動載入標簽庫定義文件
提示 Struts 的標簽庫定義文件包含在struts core jar文件里 在struts core jar文件的META INF路徑下 包含了一個struts tag tld文件 這個文件就是Struts 的標簽庫定義文件 Servlet 規范會自動載入該標簽庫文件 對於Servlet 以上的規范 Web應用自動載入該標簽庫定義文件 載入struts tag tld標簽庫定義文件時 該文件的開始部分包含如下代碼片段
< TAGLIB>< ! 定義標簽庫的版本 >< TLIB VERSION> < /TLIB VERSION>< ! 定義標簽庫所需的JSP版 >< JSP VERSION> < /JSP VERSION>< SHORT NAME>s< /SHORT NAME> /struts tags< /URI> < /TAGLIB>
lishixin/Article/program/Java/ky/201311/28777
D. 修改了struts2配置文件的位置,如何在web.xml中配置
struts.properties文件,該文件定義了Struts 2框架的大量屬性,開發者可以通過改變這些屬性來滿足應用的需求.
struts.properties配置文件
struts.properties文件是一個標準的Properties文件,該文件包含了系列的key-value對象,每個key就是一個Struts 2屬性,該key對應的value就是一個Struts 2屬性值.
struts.properties文件通常放在Web應用的WEB-INF/classes路徑下. 實際上, 只要將該文件放在Web應用的CLASSPATH路徑下, Struts 2框架就可以載入該文件.
struts.properties配置文件提供了一種改變框架默認行為的機制. 一般來講我們沒必要修改這個文件,除非你想擁有一個更加友好的開發調試環境。struts.properties文件中所包含的所有屬性都可以在web.xml配置文件中使用"init-param"標簽進行配置,或者在struts.xml文件中使用「constant」標簽進行配置.
可以被修改的屬性允許改變Freemarker選項--改變「action-mapping」類、決定是否允許XML配置文件重載及確定默認用戶介面主題等行為。
一個名為「default.properties」的屬性文件包含在「Struts2-Core」JAR文件中。你可以在你項目源文件路徑的根目錄下創建一個名為「struts.properties」的文件,來對某個屬性進行修改。這樣你就可以增加你想要修改的屬性。新的屬性值將會覆蓋默認值。
以下為struts.properties中定義的Struts 2屬性:
struts.configuration
該屬性指定載入Struts 2配置文件的配置文件管理器.該屬性的默認值是org.apache.Struts2.config.DefaultConfiguration, 這是Struts 2默認的配置文件管理器.如果需要實現自己的配置管理器,開發者則可以實現一個實現Configuration介面的類,該類可以自己載入Struts 2配置文件.
struts.locale
指定Web應用的默認Locale.
struts.i18n.encoding
指定Web應用的默認編碼集.該屬性對於處理中文請求參數非常有用,對於獲取中文請求參數值,應該將該屬性值設置為GBK或者GB2312;
提示:當設置該參數橘型為GBK時,相當於調用HttpServletRequest的setCharacterEncoding方法.
struts.objectFactory
指定Struts 2默認的ObjectFactory Bean,該屬性默認值是spring.
struts.objectFactory.spring.autoWire
指定Spring框架的自動裝配攔伍肆模式, 該屬性的默認值是name, 即默認根據Bean的name屬性自動裝配.
struts.objectFactory.spring.useClassCache
該屬性指定整合Spring框架時,是否緩存Bean實例,該屬性只允許使用true和false兩個屬性值,它的默認簡轎值是true.通常不建議修改該屬性值.
struts.objectTypeDeterminer
該屬性指定Struts 2的類型檢測機制, 通常支持tiger和notiger兩個屬性值.
struts.multipart.parser
該屬性指定處理multipart/form-data的MIME類型(文件上傳)請求的框架,該屬性支持cos,pell和jakarta等屬 性值, 即分別對應使用cos的文件上傳框架,pell上傳及common-fileupload文件上傳框架.該屬性的默認值為jakarta.
注意:如果需要使用cos或者pell的文件上傳方式,則應該將對應的JAR文件復制到Web應用中.例如,使用cos上傳方式,則需要自己下載cos框架的JAR文件,並將該文件放在WEB-INF/lib路徑下.
struts.multipart.saveDir
該屬性指定上傳文件的臨時保存路徑,該屬性的默認值是javax.servlet.context.tempdir.
struts.multipart.maxSize
該屬性指定Struts 2文件上傳中整個請求內容允許的最大位元組數.
struts.custom.properties
該屬性指定Struts 2應用載入用戶自定義的屬性文件,該自定義屬性文件指定的屬性不會覆蓋struts.properties文件中指定的屬性.如果需要載入多個自定義屬性文件,多個自定義屬性文件的文件名以英文逗號(,)隔開.
struts.mapper.class
指定將HTTP請求映射到指定Action的映射器,Struts 2提供了默認的映射器: org.apache.struts2.dispatcher.mapper.DefaultActionMapper.默認映射器根據請求的前綴與Action的name屬性完成映射.
struts.action.extension
該屬性指定需要Struts 2處理的請求後綴,該屬性的默認值是action,即所有匹配*.action的請求都由Struts 2處理.如果用戶需要指定多個請求後綴,則多個後綴之間以英文逗號(,)隔開.
struts.serve.static
該屬性設置是否通過JAR文件提供靜態內容服務,該屬性只支持true和false屬性值,該屬性的默認屬性值是true.
struts.serve.static.browserCache
該屬性設置瀏覽器是否緩存靜態內容.當應用處於開發階段時,我們希望每次請求都獲得伺服器的最新響應,則可設置該屬性為false.
struts.enable.DynamicMethodInvocation
該屬性設置Struts 2是否支持動態方法調用,該屬性的默認值是true.如果需要關閉動態方法調用,則可設置該屬性為false.
struts.enable.SlashesInActionNames
該屬性設置Struts 2是否允許在Action名中使用斜線,該屬性的默認值是false.如果開發者希望允許在Action名中使用斜線,則可設置該屬性為true.
struts.tag.altSyntax
該屬性指定是否允許在Struts 2標簽中使用表達式語法,因為通常都需要在標簽中使用表達式語法,故此屬性應該設置為true,該屬性的默認值是true.
struts.devMode
該屬性設置Struts 2應用是否使用開發模式.如果設置該屬性為true,則可以在應用出錯時顯示更多、更友好的出錯提示.該屬性只接受true和flase兩個值,該屬性的 默認值是false.通常,應用在開發階段,將該屬性設置為true,當進入產品發布階段後,則該屬性設置為false.
struts.i18n.reload
該屬性設置是否每次HTTP請求到達時,系統都重新載入資源文件(允許國際化文件重載).該屬性默認值是false.在開發階段將該屬性設置為true會更有利於開發,但在產品發布階段應將該屬性設置為false.
提示:開發階段將該屬性設置了true,將可以在每次請求時都重新載入國際化資源文件,從而可以讓開發者看到實時開發效果;產品發布階段應該將該屬性設置為false,是為了提供響應性能,每次請求都需要重新載入資源文件會大大降低應用的性能.
struts.ui.theme
該屬性指定視圖標簽默認的視圖主題,該屬性的默認值是xhtml.
struts.ui.templateDir
該屬性指定視圖主題所需要模板文件的位置, 該屬性的默認值是template,即默認載入template路徑下的模板文件.
struts.ui.templateSuffix
該屬性指定模板文件的後綴,該屬性的默認屬性值是ftl.該屬性還允許使用ftl、vm或jsp,分別對應FreeMarker、Velocity和JSP模板.
struts.configuration.xml.reload
該屬性設置當struts.xml文件改變後,系統是否自動重新載入該文件.該屬性的默認值是false.
struts.velocity.configfile
該屬性指定Velocity框架所需的velocity.properties文件的位置.該屬性的默認值為velocity.properties.
struts.velocity.contexts
該屬性指定Velocity框架的Context位置,如果該框架有多個Context,則多個Context之間以英文逗號(,)隔開.
struts.velocity.toolboxlocation
該屬性指定Velocity框架的toolbox的位置.
struts.url.http.port
該屬性指定Web應用所在的監聽埠.該屬性通常沒有太大的用戶,只是當Struts 2需要生成URL時(例如Url標簽),該屬性才提供Web應用的默認埠.
struts.url.https.port
該屬性類似於struts.url.http.port屬性的作用,區別是該屬性指定的是Web應用的加密服務埠.
struts.url.includeParams
該屬性指定Struts 2生成URL時是否包含請求參數.該屬性接受none、get和all三個屬性值,分別對應於不包含、僅包含GET類型請求參數和包含全部請求參數.
struts.custom.i18n.resources
該屬性指定Struts 2應用所需要的國際化資源文件,如果有多份國際化資源文件,則多個資源文件的文件名以英文逗號(,)隔開.
struts.diSPAtcher.parametersWorkaround
對於某些Java EE伺服器,不支持HttpServlet Request調用getParameterMap()方法,此時可以設置該屬性值為true來解決該問題.該屬性的默認值是false.對於 WebLogic、Orion和OC4J伺服器,通常應該設置該屬性為true.
struts.freemarker.manager.classname
該屬性指定Struts 2使用的FreeMarker管理器.該屬性的默認值是org.apache.struts2.views.freemarker.FreemarkerManager,這是Struts 2內建的FreeMarker管理器.
struts.freemarker.wrapper.altMap
該屬性只支持true和false兩個屬性值,默認值是true.通常無需修改該屬性值.
struts.xslt.nocache
該屬性指定XSLT Result是否使用樣式表緩存.當應用處於開發階段時,該屬性通常被設置為true;當應用處於產品使用階段時,該屬性通常被設置為false.
struts.configuration.files
該屬性指定Struts 2框架默認載入的配置文件,如果需要指定默認載入多個配置文件,則多個配置文件的文件名之間以英文逗號(,)隔開.該屬性的默認值為struts- default.xml,struts-plugin.xml,struts.xml,看到該屬性值,所以應該明白為什麼Struts 2框架默認載入struts.xml文件了.
E. struts2 web.xml 配置org.apache.struts2.dispatcher.ng.listener.StrutsListener
<!-- struts2 group begin -->
<filter>
<filter-name>struts-prepare</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareFilter</filter-class>
<!-- <init-param>培舉仿
<param-name>config</param-name>
<param-value>struts-default.xml,struts-plugin.xml,common/struts.xml</param-value>
</init-param> -->
</filter>
<filter>
<filter-name>struts-execute</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts-prepare</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>struts-execute</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<listener>
<listener-class>org.apache.struts2.dispatcher.ng.listener.StrutsListener</listener-class>
</listener>
<filter>配纖
<filter-name>struts-cleanup</filter-name>
<答爛filter-class>org.apache.struts2.dispatcher.ActionContextCleanUp</filter-class>
</filter>
<filter-mapping>
<filter-name>struts-cleanup</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- struts2 group end -->
F. 如何在web.xml配置struts2
具體的過濾器類返亂禪變了,2.0是這樣陪缺配置漏塵 struts2 org.apache.struts2.dispatcher.FilterDispatcher struts2 /* 2.1以後是這樣配置 struts2 org.apache.struts2.dispatcher.ng.filter.StrutsPrepareFilter struts2 /*
G. struts2中web.xml的配置
/* ------->所有的請求 不管你後綴名是什麼 都會攔截到 比如:http://localhost:8080/xxx/index.jsp
*.action ------->請求是以ation 結尾的 會被攔截到 比如:http://localhost:8080/xxx/index.action
H. struts2 web.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">
這個部分一定要與你的struts2的版本對應的一樣。建議你下載官方的包,官網
http://struts.apache.org/download.cgi#struts2181
下載truts-2.1.8.1-all.zip (110mb) [PGP] [MD5]
解壓找到wapps文件。然後找到struts2-blank-2.1.8這個文件,它是一個關於struts2的空白文件,都給我們配置好了我們需要的包和一切環境。
你試一試。這個可能對你很有幫助。
看看struts.xml 如何寫的