天天看點

Struts2檔案配置介紹Struts2檔案配置介紹

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

    屬性表示繼承,

    struts-default

    是struts2給我們提供的一個package

action标簽

action

标簽表示配置一個請求
  • name

    屬性表示請求路徑的字尾,一般表示功能子產品中的具體請求,name的名字就代

    表通路路徑的名稱

  • class

    屬性表示當有請求過來的時候調用的是哪個類中的方法,配置全類名
  • method

    表示class 請求調用的是class 中的哪個方法,指的是具體的方法名

result标簽

result 結果配置,用于設定不同的方法傳回值,可以配置不同的傳回值對應不同的視圖
  • name

    屬性表示結果處理名稱,與action中的傳回值對應
  • type

    屬性表示指定哪個result 類來處理顯示的頁面,預設是内部轉發,可以

    在struts-default 的檔案中進行檢視

  • 标簽體

    表示相對路徑,相對于web應用開始

常量配置

預設的常量配置在structs核心包中
Struts2檔案配置介紹Struts2檔案配置介紹

修改常量配置方式及加載順序

對于常量的配置, 預設加載的是structs核心包中的default.properties,如果通過以下3種進行配置,就會按照預設–>1–>2–>3 的順序加載,後面設定的常量會覆寫之前設定的常量
  1. 在structs.xml檔案中,在structs的根标簽下,書寫constant 标簽進行配置,在項目中主要使用這種方式
  2. 在src下建立structs.properties檔案,将内容複制到此檔案進行修改
  3. 在web.xml檔案中,配置context-param
Struts2檔案配置介紹Struts2檔案配置介紹

第一種方式

Struts2檔案配置介紹Struts2檔案配置介紹

第二種方式

Struts2檔案配置介紹Struts2檔案配置介紹

第三種方式

常用常量設定

  • 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

  • result

    的type的預設值是

    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