日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

简述Struts2 Convention零配置

發(fā)布時間:2025/3/17 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 简述Struts2 Convention零配置 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

struts2.1開始,struts2不再推薦使用Codebehind作為零配置插件,而是改為使用Convention插件來支持零配置,和Codebehind相比,Convention插件更徹底,該插件完全拋棄配置信息,不僅不需要是使用struts.xml文件進(jìn)行配置,甚至不需要使用Annotation進(jìn)行配置,而是由struts2根據(jù)約定自動配置。

如何使用Convention

1.???????struts-Convention-plugin-2.1.6.jar文件復(fù)制到WEB-INF/lib路徑下

2.???????對于Convention插件而言,它會自動搜索位于actionactionsstrutsstruts2包下的所有java類,Convention插件會把如下兩種java類當(dāng)成Action處理:

1)??所有實現(xiàn)了com.opensymphony.xwork2.Actionjava

2)??所有類名以Action結(jié)尾的java

3.???????Convention插件還允許設(shè)置如下三個常量:

1)??struts.Convention.exclude.packges:指定不掃描哪些包下的java類,位于這些包結(jié)構(gòu)下的java類將不會自動映射成Action

2)??struts.convention.package.locators:Convention插件使用該常量指定的包作為搜尋Action的根包。對于actions.fore.LoginAction類,按約定原本應(yīng)映射到/fore/login;如果將該常量設(shè)為fore,則該Action將會映射到/login

3)??struts.convention.action.packages:Convention插件以該常量指定包作為根包來搜索Action類。Convention插件除了掃描action,actions,struts,struts2四個包的類以外,還會掃描該常量指定的一個或多個包,Convention會試圖從中發(fā)現(xiàn)Action類。

注意:struts.convention.package.locatorsstruts.convention.action.packages兩個常量的作用比較微妙,開發(fā)者在利用這兩個常量時務(wù)必小心。

如:下面Action所在包被映射的命名空間如下:

com.fun.actions.LoginAction?映射到???/

com.fun.actions.myoffice.CarInfoAction?映射到?/myoffice

com.fun.struts.myoffice.EntINfoAction?映射到?/myofiice

4.???????映射Actionname時,遵循如下兩步規(guī)則

1)??如果該Action類名包含Action后綴,將該Action類名的Action后綴去掉。否則不做任何處理。

2)??Action類名的駝峰寫法(每個單詞首字母大寫、其他字母小寫的寫法)轉(zhuǎn)成中畫線寫法(所有字母小寫,單詞與單詞之間以中畫線隔開)

如:LoginAction映射的Acionname屬性為loginGetBooks映射的Actionname的屬性為get-booksAddEmployeeAction映射的Actionname屬性為add-employee

5.???????默認(rèn)情況下。Convention總會到WEB應(yīng)用的WEB-INF/content路徑下定位物理資源,定位資源的約定是:actionRUL+resultCODE+suffix。當(dāng)某個邏輯視圖找不到對應(yīng)的試圖資源時,Convention會自動視圖使用ActionURL+suffix作為物理視圖資源。

???????如:actions.fore.LoginAction?返回success字符串時,Convention優(yōu)先考慮使用WEB-INF/content/fore目錄下的login-success.jsp作為視圖資源。如果找不到該文件,login.jsp也可作為對應(yīng)的試圖資源。如果返回input字符串,Convention會將WEB-INF/content/fore里面查找login-input.jsp

6.???????為了看到struts2應(yīng)用里的Action等各種資源的影射情況,struts2提供了Config Browser插件。使用方法,將struts2-config-browser-plugin-2.1.6.jar文件復(fù)制到struts2應(yīng)用的WEB-INF/lib目錄中。

打開首頁地址:http://localhost:8080/應(yīng)用名字/config-browser/actionNames.action這里可以看到Config Browser插件的首頁。

注意:這里不管開發(fā)者是否使用struts.xml文件進(jìn)行配置,一樣可以看到struts的配置信息。

7.Action鏈的約定

如果希望一個Action處理結(jié)束后不是進(jìn)入一個試圖頁面,而是進(jìn)行另一個Action形成的Action鏈。通過Convention插件則只需遵守如下三個約定即可。

1)??第一個Action返回的邏輯視圖字符串沒有對應(yīng)的視圖資源

2)??第二個Action與第一個Action處在同一個包下

3)??第二個Action影射的URL為:firstActionURL+resultCODE

如,第一個ActionOneAction,里面有個方法返回為“two,那么就得保證,WEB-INF/content/下沒有one.jspone-two.jsp?對于第二個action?它的名字應(yīng)該是OneTwoAction,而對應(yīng)的url應(yīng)該是:“one-two.action

注意:由于Convention插件根據(jù)Actionjsp頁面來動態(tài)生成映射的,因此不管是Acion的改變,還是JSP頁面的改變都需要Convention插件重新加載映射。那么只要我們?yōu)?span lang="EN-US">struts2應(yīng)用配置如下兩個常量就可以了。

<!--配置struts2應(yīng)用于開發(fā)模式-->

<constant name=”struts.devMode” value=”true”/>

<!—配置Convention插件自動重加載映射-->

<constant name=”struts.convention.classes.reload” value=”true”/>

幾個重要的常量

struts.convention.action.disableJarScanning---是否從包中搜索Action

struts.convention.action.package--------Convention插件以該常量指定包作為根包

struts.convention.result.path ---設(shè)置Convention插件定位視圖資源的根路徑。默認(rèn)值為/WEB-INF/content

struts.convention.result.flatLayout—如果是為false則可以將試圖放置Action對應(yīng)的目錄下,無需放入WEB-INF/content

7.???????ConventionAnnotation

1)??Action相關(guān)的兩個Annotation@Action?@Actions

2)??@Action中可指定一個value屬性。類似于指定<action name=””/>屬性值

3)??@Action中還可以指定一個params屬性,該屬性是一個字符串?dāng)?shù)組,用于該Acion指定的參數(shù)名和參數(shù)值。params屬性應(yīng)遵守如下格式:{“name1”,”value1”,”name2”,”value2”}

4)??@Actions?也用于修飾Action類里的方法,用于將該方法映射到多個URL.@Actions用于組織多個@Action.因此它可將一個方法映射成多個邏輯Action

如:

package?com.fun.actions;

?

?

?

import?org.apache.struts2.convention.annotation.Action;

import?org.apache.struts2.convention.annotation.Actions;

?

import?com.fun.service.LoginService;

import?com.opensymphony.xwork2.ActionSupport;

?

public?class?LoginAction?extends?ActionSupport {

????private?String?str;

????@Actions({

???????@Action(value="login1",params={"str","這是已經(jīng)注入的了!"}),

???????@Action(value="login2")

??????

????})

????public?String login(){

???????return?"str";

????}

????@Action(value="ggg")

????public?String abc(){

???????return?"abc";

????}

????public?String getStr() {

???????return?str;

????}

????public?void?setStr(String str) {

???????this.str?= str;

????}

???

}

我們可以通過/login1.action訪問,而在訪問時,str這個屬性已經(jīng)有值,為str=”這是已經(jīng)注入的!”?返回的視圖是login1-str.jsp

當(dāng)我們用/login2.action訪問時,str的值為null。返回的視圖為?login2-str.jsp

而我們通過/ggg.action調(diào)用的是abc()方法,返回的視圖為/ggg-abc.jsp

8.???????Result配置相關(guān)的Annotation

1@ResultPath @Result?Results

2@Results用于組織多個@Result因此它只需指定一個value屬性值,該value屬性值為多個@Result

3@Result相當(dāng)于struts.xml文件中的<result/>元素的做喲歐諾個。使用@Result必須指定一個name屬性,相當(dāng)于<result name=””/>另外,它還有幾個可選的屬性。

?????☆?type?相當(dāng)于<result type=””/>指定返回視圖資源的類型

?????☆?location?相當(dāng)于<result>…..</result>中間部分,用于指定實際視圖位置

?????☆?params:該屬性相當(dāng)于<result/>元素里多個<param../>子元素的作用,用于為該Result指定參數(shù)值。該屬性應(yīng)滿足{“name1”,”value1”,”name2”,”value2”}格式

4)@Result有以下兩種用法

1 Action級的Result映射:以@Actions組合多個@Action后修飾的Action類。這種Result映射對該Action里的所有方法都有效。

2方法級Result映射:將多個@Result組成數(shù)組后作為@Actionresults屬性值。這種Result映射僅對被修飾的方法有效。

5@ResultPath則用于修飾包和Action類,用于改變被修飾Action所對應(yīng)的物理視圖資源的根路徑。舉例說:默認(rèn)情況下,Convention都會到WEB-INF/content路徑下找物理視圖資源,一旦我們使用@ResultPath(“/abc”)修飾該Action,系統(tǒng)將回到abc目錄下尋找物理視圖資源。舉例:在默認(rèn)情況下,Convention都會到WEB-INF/content路徑下需找物理視圖資源,一旦我們使用@ResultPath(“/abc”)修飾該Action,系統(tǒng)會到abc目錄下尋找物理視圖資源。

?

9?與包和命名空間相關(guān)的Annotation

???@Namespace:修飾Action類或其所在的包。該Annotation中指定一個value屬性值,用于指定被修飾的Action所在的命名空間

??@Namespaces:修飾Action類或其所在的包,用于組合多個@Namespace

??@ParentPackage:?用于指定被修飾的Action所在包的夫包。

10?異常處理相關(guān)的Annotation

??@ExceptionMappings?用于組織多個@ExceptionMapping,因此它只需指定一個value屬性值,該value屬性值為多個@ExceptionMapping

?@ExceptionMapping?用于定義異常類和物理視圖之間的對應(yīng)關(guān)系,也相當(dāng)于struts.xml文件里<exception-mapping../>元素的作用?使用時,必須注意以下兩個屬性:

??exception:?用于指定異常類

??result?:?用于指定邏輯視圖

@ExceptionMpping有如下兩種用法

???Action級的異常定義:@ExceptionMappings組合多個@ExceptionMapping后修飾的Action類。這種異常定義對Action中的所有方法有效

??方法級的異常定義:?將多個@ExceptionMapping組成數(shù)組后作為@ActionexceptionMappings屬性值,這種異常定義僅對被修飾的方法有效。

?

11.攔截器配置相關(guān)的Annotation

?與攔截器配置的Annotation@InterceptorRef@InterceptorRefs@DefaultInterceptorRef

@InterceptorRefs用于組織多個@InterceptorRef,因此它只需要指定一個value屬性值,該value屬性值為多個@InterceptorRef

@InterceptorRef用于為指定Action引用lanjieq或者是攔截器棧。也就相當(dāng)于strut.xml中位于<action../>元素內(nèi)部的<interceptor-ref../>子元素的作用。使用@InterceptorRefAnnotation時,必須制定一個value屬性,用于指定所引用的攔截器或攔截器棧的名字。相當(dāng)于<interceptor-ref../>子元素里name屬性的作用。

總結(jié)

以上是生活随笔為你收集整理的简述Struts2 Convention零配置的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 久久性色 | 双乳被四个男人吃奶h文 | 一区二区网站 | 国产精品久久久久久久久久久免费看 | 国产精品怡红院 | 日韩二区在线 | 国产又黄又粗的视频 | 91麻豆免费视频 | 神马午夜伦理影院 | 精品一区二区三区欧美 | 亚州一级 | 美女调教视频 | 国产在线一区二 | 国产精品精华液网站 | 美女屁股网站 | jizz性欧美15 | 插插插操操操 | 日韩激情成人 | 6080久久 | 伊人久久五月天 | 四虎在线免费播放 | 粉嫩av一区二区夜夜嗨 | 人妻熟女一区二区三区 | 伊人7| 黄色成年人 | 裸体毛片 | 欧美在线一区二区三区 | 成人小视频免费观看 | 亚洲欧美精选 | 国产精品人人人人 | 中文字幕av专区dvd | 国产福利91| 羞羞色院91蜜桃 | 免费二区 | 男同激情视频 | 男女黄色录像 | 欧美激情视频一区二区三区 | 欧美精品成人一区二区在线观看 | 女上男下动态图 | 91在线视频免费看 | 深夜福利免费视频 | 99久热| 91在线视频精品 | 国产高清无遮挡 | 欧美一区二区三区激情视频 | 伊人avav| 不卡在线播放 | 色小说综合 | h在线免费 | 狠狠人妻久久久久久 | 精品人妻一区二区三区香蕉 | 永久国产| 拔插拔插华人 | 国产免费又黄又爽又色毛 | 色在线网站| 九色论坛 | 免费黄色看片 | 无码免费一区二区三区 | 五月天三级| 色久天| 免费小视频在线观看 | 婷婷综合另类小说色区 | mm131美女大尺度私密照尤果 | 99国产精品久久久久久久成人 | 桃色在线视频 | 欧美亚洲一区二区在线观看 | 雷电将军和丘丘人繁衍后代视频 | 超碰夫妻| 我的邻居在线观看 | 国产中文字幕一区二区三区 | 久久久久久久国产 | 精品欧美一区二区三区久久久 | 亚洲成人一区二区在线观看 | 欧美h视频在线观看 | 哺乳期喷奶水丰满少妇 | 国产精品毛片在线 | h在线播放 | 91视频免费网址 | 国产伦理自拍 | 黄色片网站大全 | 片集网 | 97视频一区二区 | 日本女人黄色 | 日韩中文字幕网站 | 欧美日韩乱国产 | 国产精品分类 | 国产乱性| 国产精品一区二区人妻喷水 | 三级全黄做爰龚玥菲在线 | 精品一区二区免费 | 91麻豆国产福利精品 | 理想之城连续剧40集免费播放 | 草草草在线 | 成人a网| 久久久婷婷 | av男人在线 | 国产麻豆一精品一av一免费 | 欧美激情免费在线观看 | 国产精品69久久久 |