Struts2檔案配置介紹
struts2
structs.xml檔案配置
标簽
package标簽
<?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>
<!-- 配置post請求以及repsone的編碼格式 -->
<constant name="struts.i18n.encoding" value="UTF-8"></constant>
<!-- 配置請求路徑的擴充名 -->
<constant name="struts.action.extension" value="action,,"></constant>
<!-- 開啟熱部署 -->
<constant name="struts.devMode" value="true"></constant>
<package name="index" namespace="/" extends="struts-default">
<action name="" class="com.forward.test.web.action.UserAction" method="toLogin">
<result name="toLogin">/WEB-INF/view/login.jsp</result>
</action>
</package>
<include file="com/forward/test/web/action/struts.xml"></include>
</struts>
配置web應用的不同子產品,一般在一個功能子產品下配置一個package,在目前的package下配置這個子產品的多個action
-
屬性給不同的子產品起不同的名字,随便寫,不重複即可name
-
屬性給不同的子產品設定通路的根路徑,可以配置成/namespace
-
屬性表示繼承,extends
是struts2給我們提供的一個packagestruts-default
action标簽
action
标簽表示配置一個請求
-
name
屬性表示請求路徑的字尾,一般表示功能子產品中的具體請求,name的名字就代
表通路路徑的名稱
-
屬性表示當有請求過來的時候調用的是哪個類中的方法,配置全類名class
-
表示class 請求調用的是class 中的哪個方法,指的是具體的方法名method
result标簽
result 結果配置,用于設定不同的方法傳回值,可以配置不同的傳回值對應不同的視圖
-
屬性表示結果處理名稱,與action中的傳回值對應name
-
type
屬性表示指定哪個result 類來處理顯示的頁面,預設是内部轉發,可以
在struts-default 的檔案中進行檢視
-
表示相對路徑,相對于web應用開始标簽體
常量配置
預設的常量配置在structs核心包中![]()
Struts2檔案配置介紹Struts2檔案配置介紹
修改常量配置方式及加載順序
對于常量的配置, 預設加載的是structs核心包中的default.properties,如果通過以下3種進行配置,就會按照預設–>1–>2–>3 的順序加載,後面設定的常量會覆寫之前設定的常量
- 在structs.xml檔案中,在structs的根标簽下,書寫constant 标簽進行配置,在項目中主要使用這種方式
- 在src下建立structs.properties檔案,将内容複制到此檔案進行修改
- 在web.xml檔案中,配置context-param
第一種方式
第二種方式
第三種方式
常用常量設定
- struts.i18n.encoding=UTF-8 用于配置接收參數和向外輸出中文的編碼格式一般設定為UTF-8
- struts.action.extension=action, 指定通路action的路徑的字尾名,使用, 表示可以有兩個字尾名,可以是action也可以是沒有字尾名
- struts.devMode = false 指定structs是否是以開發模式運作,能夠支援修改配置檔案後進行熱部署,是以我們可以将其設定為true
動态方法調用
如果一個業務子產品有多個方法,我們可以使用動态方法調用省略action的配置,設定動态方法調用有兩種方法
- 方法一
- 開啟動态方法調用
<constant name="struts.enable.DynamicMethodInvocation" value="true"></constant>
- 配置action的時候不寫method
- 在通路的時候輸入網址
http://localhost:8080/webapp/namespace/name!method
- 開啟動态方法調用
<constant name="struts.enable.DynamicMethodInvocation" value="true"></constant>
<package name="helloWorld" namespace="/User" extends="struts-default">
<action name="d_" class="com.zhiyou100.struts.web.action.demo3.Demo3Action" >
<result name="success">/hello World.jsp</result>
</action>
</package>
- 方法二 通配符方式
- 關閉動态方法調用
- 對于方法名可以使用一個* 通配符,在後面的class和method可以使用{索引} 來讀取前面的内容
- 通路路徑localhost:8080/webapp/namespace/class_method
<package name="demo3" namespace="/User" extends="struts-default">
<action name="*_*" class="com.zhiyou100.struts.web.action.demo3.{1}" method="{2}">
<result name="success">/helloWorld.jsp</result>
</action>
</package>
structs2中的預設配置
-
的預設值method
execute
-
的預設值是result
success
-
的type的預設值是result
dispatcher
-
的預設值是class
其中有ActionSupport
方法傳回值是execute
success
- 配置
下的預設的package
,當通路目前包下,如果找不到指定action
,就會自動尋找預設的action
action
<package name="default" namespace="/user" extends="struts-default">
<default-action-ref name="demoAction"></default-action-ref>
<action name="demoAction" class="com.forward.test.web.action.UserAction">
<result>/WEB-INF/view/404.jsp</result>
</action>
</package>
結果跳轉的方式
結果的跳轉方式可以通過result的type屬性進行設定
轉發
轉發到指定頁面
對于屬性,預設是
type
,就是轉發到響應界面,可以不用進行配置
dispatcher
轉發到指定action
對于屬性需要設定為
type
,并在其下方配置
chain
标簽
<param>
<result name="error" type="chain">
<param name="namespace">/</param>
<param name="actionName"></param>
</result>
重定向
重定向到指定界面
對于type屬性,設定為 redirect
,就是重定向到界面,如果需要進行重定向就必須進行此處的設定
<result name="error" type="redirectAction">
<param name="namespace">/</param>
<param name="actionName"></param>
</result>
轉載于:https://www.cnblogs.com/forwards/p/7491977.html