Struts2的配置文件方法小結(jié)
Struts2
JAVA基礎(chǔ)學(xué)完,肯定是要面臨三大框架的學(xué)習(xí)的,作為初學(xué)者,了解三大框架的原理,設(shè)計(jì)目的是首要任務(wù),只有在把握了框架的設(shè)計(jì)目的以后,才能有針對(duì)性的取學(xué)習(xí)使用框架,這里就要介紹下strue2框架了。
什么是Struts2?
Struts2 是一個(gè)非常優(yōu)秀的MVC框架,基于Model2 設(shè)計(jì)模型
由傳統(tǒng)Struts1和WebWork兩個(gè)經(jīng)典框架發(fā)展而來(lái)
Strust2 核心功能
(1)允許POJO(Plain Old Java Objects)對(duì)象 作為Action
(2)Action的execute 方法不再與Servlet API耦合,更易測(cè)試
(3)支持更多視圖技術(shù)(JSP、FreeMarker、Velocity)
(4)基于Spring AOP思想的攔截器機(jī)制,更易擴(kuò)展
(5)更強(qiáng)大、更易用輸入校驗(yàn)功能
struts2 配置文件的 result 節(jié)點(diǎn)
result 節(jié)點(diǎn)是 action 節(jié)點(diǎn)的子節(jié)點(diǎn),他代表著 action 方法執(zhí)行后可能去的一個(gè)目的地;
Action 方法名和 action 節(jié)點(diǎn)的 method 屬性相對(duì)應(yīng);
每個(gè) Action 方法都會(huì)返回一個(gè) String 類(lèi)型的值且一一對(duì)應(yīng) result 節(jié)點(diǎn)的 name 屬性,而 result 節(jié)點(diǎn)根據(jù) name 屬性值決定響應(yīng)不一樣的結(jié)果;
result 節(jié)點(diǎn)擁有兩個(gè)屬性,name(結(jié)果的名字,即 action 方法的返回值,默認(rèn)為 SUCCESS) 和 type(響應(yīng)結(jié)果的類(lèi)型,默認(rèn)值為 dispatcher)

如上圖中圈 1 所, result 節(jié)點(diǎn)的值代表著此次 struts2 請(qǐng)求將會(huì)去的一個(gè)目的地
result 節(jié)點(diǎn)的結(jié)果類(lèi)型(type)
dispatcher(轉(zhuǎn)發(fā))
dispatcher 是 struts2 框架的默認(rèn)結(jié)果類(lèi)型,也是最常用的結(jié)果類(lèi)型,該類(lèi)型有一個(gè)默認(rèn)的參數(shù) location,一般情況省略,如下兩種寫(xiě)法等價(jià):


dispatcher 結(jié)果類(lèi)型將控制權(quán)轉(zhuǎn)發(fā)給應(yīng)用程序中的指定資源,若需要把控制權(quán)轉(zhuǎn)發(fā)給 一個(gè)外部資源,則應(yīng)使用 redirect 結(jié)果類(lèi)型
redirect(重定向)
- redirect 結(jié)果類(lèi)型將把響應(yīng)重定向到另一個(gè)資源,而不是轉(zhuǎn)發(fā)給該資源
- redirect 也擁有默認(rèn)參數(shù) location,同時(shí)還有一個(gè) parse 參數(shù),用來(lái)表明是否把 location 值視為一個(gè) OGNL 表達(dá)式來(lái)解釋?zhuān)J(rèn)值為 true
chain (轉(zhuǎn)發(fā)到一個(gè) action)
- 指定 result 結(jié)果響應(yīng)類(lèi)型為 chain,其可以用來(lái)構(gòu)成一個(gè) action 鏈,即前一個(gè) action 把控制權(quán)轉(zhuǎn)發(fā)給后一個(gè) action,而前一個(gè) action 的狀態(tài)在后一個(gè) action 中依然保存
- chain 可接受的參數(shù)有 actionName 和 method,其中 actionName 指定目標(biāo) action 的名字,它是默認(rèn)屬性,method 指定目標(biāo) action 的方法,默認(rèn)值為 execute
redirectAction (重定向到一個(gè) action)
- redirectAction 把響應(yīng)重定向到另一個(gè) action,同時(shí)擁有默認(rèn)參數(shù) actionName
- 重定向到一個(gè) action 可以使用 redirect 簡(jiǎn)潔的進(jìn)行實(shí)現(xiàn),但是轉(zhuǎn)發(fā)到一個(gè) action 不能使用 dispatcher 實(shí)現(xiàn),如下兩種寫(xiě)法等價(jià)


通配符映射
struts2 提供通配符映射機(jī)制將多個(gè)彼此相似的映射關(guān)系簡(jiǎn)化為一個(gè)映射關(guān)系
通配符映射規(guī)則
- 若一個(gè) action 請(qǐng)求找到多個(gè)匹配的 action,沒(méi)有通配符的那個(gè)將會(huì)獲勝
- 若找不到指定的 action,struts2 將會(huì)嘗試把這個(gè) URL 與任何一個(gè)包含著通配符的動(dòng)作匹配
- 被通配符匹配到的 URI 字符串的子串可以利用 {1} {2} 來(lái)引用,比如四個(gè) action 分別為
- update-hello、query-hello、delete-hello、save-hello 那么在 struts.xml 文件中的 action
- 的 name 屬性則可以為 name = -hello,且在整個(gè) action 節(jié)點(diǎn)中可以用 {1} 代表 所占用
- 的字符串,class 中也可以使用 {1} 來(lái)代表類(lèi)名
- {0} 匹配整個(gè) URL
- 若 struts2 找到帶有通配符的匹配有多個(gè),則按先后順序進(jìn)行匹配

如圖所示,在第一個(gè) package 中,* 可代表第二個(gè) package 中的他們四個(gè)。
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。
- Struts2的配置 struts.xml Action詳解
- 詳解在Java的Struts2框架中配置Action的方法
- Struts 2中的constant配置詳解
- struts2中使用注解配置Action方法詳解
- Struts2開(kāi)發(fā) 基本配置與類(lèi)型轉(zhuǎn)換
- Struts2學(xué)習(xí)筆記(9)-Result配置全局結(jié)果集
- struts2開(kāi)發(fā)流程及詳細(xì)配置
- struts2配置靜態(tài)資源代碼詳解
- struts2入門(mén)(搭建環(huán)境、配置、示例)詳解
- Struts2.5版本struts.xml與web.xml配置的更改方法
相關(guān)文章
一文詳解Spring任務(wù)執(zhí)行和調(diào)度(小結(jié))
這篇文章主要介紹了一文詳解Spring任務(wù)執(zhí)行和調(diào)度(小結(jié)),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08
SpringDataJpa創(chuàng)建聯(lián)合索引的實(shí)現(xiàn)
這篇文章主要介紹了SpringDataJpa創(chuàng)建聯(lián)合索引的實(shí)現(xiàn),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-12-12
IntelliJ IDEA中properties文件顯示亂碼問(wèn)題的解決辦法
今天小編就為大家分享一篇關(guān)于IntelliJ IDEA中properties文件顯示亂碼問(wèn)題的解決辦法,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2018-10-10
SpringBoot入口類(lèi)和@SpringBootApplication講解
這篇文章主要介紹了SpringBoot入口類(lèi)和@SpringBootApplication講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-03-03
Java代理的幾種實(shí)現(xiàn)方式總結(jié)
本文將通過(guò)例子說(shuō)明java代理的幾種實(shí)現(xiàn)方式,并比較它們之間的差異,文中通過(guò)代碼示例給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的參考價(jià)值,需要的朋友可以參考下2023-12-12
jfinal中stateless模式嵌入shiro驗(yàn)證的實(shí)現(xiàn)方式
這篇文章主要介紹了jfinal中stateless模式嵌入shiro驗(yàn)證,今天,我們就來(lái)嘗試一種通過(guò)攔截器來(lái)實(shí)現(xiàn)的Stateless Jfinal嵌入方式,需要的朋友可以參考下2022-06-06
解析Oracle數(shù)據(jù)庫(kù)中的對(duì)象集合schema
這篇文章主要介紹了Oracle數(shù)據(jù)庫(kù)中的對(duì)象集合schema,是Oracle數(shù)據(jù)庫(kù)入門(mén)學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2015-11-11
Spring框架配置java web實(shí)現(xiàn)實(shí)例化
這篇文章主要介紹了Spring框架配置java web實(shí)現(xiàn)實(shí)例化,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-04-04

