struts2支持註解,並宣稱支持0配置(XML配置文件)
Struts2的註解配置.
1.在Web.xml配置文件中添加
- <filter>
- <filter-name>struts2</filter-name>
- <filter-class>
- org.apache.struts2.dispatcher.FilterDispatcher
- </filter-class>
- <init-param>
- <param-name>actionPackages</param-name>
- <param-value>com.learn.action</param-value>
- </init-param>
- </filter>
這樣sturts2框架會自動掃描action包中的命名爲*Action或者集成ActionSupport的類,例如一個類命名爲SearchAction,那麼Struts2框架會自動掃描它,認爲它爲一個Action類,並且將所有search.action的請求都轉發給該類進行處理,這時我們又遇到了一個問題,如果這個Action是多Method的Action那麼我們又該怎麼辦呢?因爲不能像在XML中那樣配置Method屬性,這時我們可以在請求是加上!MethodName以請求特定的Method即可,例如想要請求SearchAction的search方法,我們可以直接這樣請求:search!search.action.
以上講到的是Struts2框架如何找到沒有在XML中定義的Action,並且怎麼樣將請求轉發給適當的Action來進行處理.
我們都知道在XML中可以定義Action處理完以後的跳轉,同樣利用Annotation也可以做到這一點:
2.Resules的Annotation定義
我們只需要在Action Class的類的前面加上@Result即可以定義Action的跳轉
例如:
- @Results({
- @Result(name="input" value="/input.jsp" type=NullResult.class),
- @Reuslt(name="success" value="/success.jsp" type=NullResult.class),
- @Result(name="error" value="/error.jsp" type=NullResult.class)
- })
上面是一個典型的多Result配置,name屬性指定返回的字符串,value指定要跳轉的頁面,type指定Result的類型,type是一個很重要的屬性,他有一下幾種情況:
1)NullResult : 默認的可以省略
2)ActionChainResult : 用於從一個Action跳轉到另外一個Action
例如:
- @Result
- (name = "search",value= "search",type=ActionChainResult.class,
- params={"method","search"})
這個配置是如果返回值爲"search"就跳轉掉SearchAction的search方法,如果不指定params就跳轉到SearchAction的execute方法
3)StreamResult:用於文件下載
例如:
- @Result
- (name="success",value="inputStream",type=StreamResult.class,
- params={"bufferSize",FileConstant.DOWNLOAD_BUFFER_SIZE})
作爲Struts2的Annotation配置中最重要的Result配置大致有這幾種情況,關於Struts2 Annotation的其他配置我也不是十分了解,就以後在介紹吧!!!