1. 程式人生 > >9.Struts 2配置詳解

9.Struts 2配置詳解

1.Struts 2執行過程解析

簡單程式執行流程圖如下:
logon.jsp——>StrutsPrepareAndExecuteFilter——>Action——>Result——>manager.jsp

1.1web.xml

Struts 2框架需要在web.xml中配置其核心控制器——StrutsPrepareAndExecuteFilter
用於對框架進行初始化,以及處理所有的請求。

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter<
/filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> </web-app>

StrutsPrepareAndExecuteFilter作為一個Filter在web應用中執行,他負責攔截所有的使用者請求,當用戶請求達到時,該Filter會過濾使用者請求

2.Action

在Struts 2框架上,控制器由兩部分組成,分別如下:
核心控制器(Filter),用於攔截使用者請求,對請求進行處理.
業務控制器(Action):呼叫相應的Model類實現業務處理,返回結果

<?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>
<action name="login" class="action.UserAction">
			<result name="success">main.jsp</result>
			<result name="error">login.jsp</result>
		</action>
		</struts>

2.Struts 2的配置檔案

2.1Struts.xml

<?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>
<constant name="" value=""/>
<action name="" class="">
			<result name=""></result>
</action>
</struts>

constant元素:用於配置常量,通過常量的配置,改變struts 2框架的一些行為,從而滿足不同應用的需求.name表示敞亮的名稱,value屬性表示常量的值
比如:解決亂碼:

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

name:為必須的並且是唯一的,用來指定包的名稱(被其他包引用)
extends:類似java中extends關鍵字,指定要拓展的包
namespace:可選屬性,指該包中action的名稱空間

2.2 拆分配置檔案

<struts>
  <include file="action/Userstruts.xml"></include>
  <include file="action/Housestruts.xml"></include>
</struts>

3.Action的配置

action的作用:

  1. 最重要的作用是給指定的請求封裝需要做的實際工作(呼叫特定的業務處理類)
  2. 為資料的轉移提供場所
  3. 幫助框架決定由那個結果呈現請求響應

method屬性:
指定具體方法執行處理邏輯

3.1萬用字元的使用

   <action name="*User" class="action.UserAction" method="{1}">
   		<result name="success">{1}_success.jsp</result>
   		<result name="input">{1}.jsp</result>
   		<result name="error">error.jsp</result>
   	</action>

*:只要是User結尾的URL,都可以進入這個action
{1}:使用相對用的,也就是星號所代表的一個字串

3.2配置預設的action

解決:不存在的action
元素:<default-action-ref/》
注意:每個package下只能有一個元素


	<package name="default" namespace="/" extends="struts-default">
	<default-action-ref name="defaultAction">
	<action name="defaultAction">
	<result>error.jsp</result>
</action>
	</package>

4.Result配置

兩部分組成:
所代表的實際資源的位置及result名稱
另一部分是result型別,由result元素的type屬性進行設定

4.1常用結果型別

1.dispatcher型別(預設)
轉發
2.redirect型別
重定向
3.redirectAction型別
重定向到一個action。也就是說,當請求完成後,需要在另一個action中繼續處理請求

4.2動態結果

4.3全域性結果

在一些情況下,多個action可能需要訪問一個結果,這時需要配置全域性結果來滿足多個action共享一個結果的要求

<package name="demo1"  extends="struts-default">
		<global-results>
			<result name="success">showHouse.jsp</result>
			<result name="error">login.jsp</result>
		</global-results>