【struts2】struts2的零配置
零配置(zero configuration)的意思是不使用任何配置文件部署struts2應用,如struts.xml、struts.properties等。零配置并不是真的“零配置”,只是沒有傳統的配置文件struts.xml了,但是仍然需要使用@Annotation配置。@Annocation翻譯為@注解、@標注,有些資料也翻譯為@注釋。
1、通過@注解實現Actin零配置
在@注解大行其道的今天,基本所有的框架都提供了@注解支持,例如Spring框架、Hibernate框架、EJB框架、Tomcat服務器等。
struts2也提供了@注解配置。零配置的原理是在Action類中使用@注解定義Action資源,如@Namespace定義命名空間,一般不常用。@Results定義結果集,可以包括多個@Result。@Result定義一個結果集。例如:
action方法:
package com.lmb.struts2.action; import org.apache.struts2.convention.annotation.Namespace; import org.apache.struts2.convention.annotation.Result; import org.apache.struts2.convention.annotation.Results; import com.opensymphony.xwork2.ActionSupport;@Namespace(value="/test") //命名空間@Results({ //結果集//三個結果頁面@Result(name="success",location="/success.jsp"),@Result(name="redirect",location="/redirect.jsp",type="ServletRedirectResult.class"),@Result(name="login",location="/login.jsp") })public class AnnotatedAction extends ActionSupport{public String execute(){return "login";}public String add() {return "success";}public String login() {return "login";} }代碼使用標注定義了namespace為/test,定義了3個Result,其中一個是重定向頁面。struts2并沒有提供配置Action訪問名稱的注解。該action可以使用默認的名稱/struts2/annotated.action訪問,即去掉類名中的Action,同時首字母小寫。如果訪問其中的add()方法,可以用
/struts2/annotated!add.action。如果配置了namespace=”/test”,則必須以/struts2/test/annotated.action訪問。注意namespace必須以“/”開頭。
2、web.xml中指定Action目錄
零配置時必須在web.xml的Filter中指定被@注解標注的Action包的位置。參數actionPackages指定被@注解標注的Action所在的Package,否則會默認到struts.xml中加載Action配置。零配置時只加載有@注解的Action,不會加載沒有@注解的Action。例如:
<!-- struts2的Filter,所有的請求都被映射到struts2上 --><filter><filter-name>struts2</filter-name><!-- Filter分發器實現 --><filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class><init-param><param-name>actionPackages</param-name><!-- 零配置Action所在的包 --><param-value>com.lmb.struts2.action</param-value> <!-- 包名 --></init-param></filter>struts加載時會自動部署本package嚇得送油Action。如果某個Action位于本package下的另一個package下面,例如:com.lmb.struts2.action.test,則“/test”會被當成該Action的namespace。默認的“/test”也可以用@Namespace標注覆蓋。
如果聲明了actionPackages參數,則struts.xml中的配置會失效。目前,struts2只允許使用一種配置方式,要么使用struts.xml,要么使用零配置。未來版本中應該可以同時使用,請查閱室及使用的struts2版本。
更多更詳細的struts2零配置請參看struts2的文檔和其他博客:
http://struts.apache.org/docs/convention-plugin.html#ConventionPlugin-Annotationreference
http://www.cnblogs.com/fpjason/archive/2009/08/01/1536671.html
3、零配置的Action訪問方式
目前,零配置時只能用action!method.action即“類名!方法名.action”的形式訪問Action的方法。例如運行PersonAction的login()方法可以使用
http://localhost:8080/struts2/person!login.action.
總結
以上是生活随笔為你收集整理的【struts2】struts2的零配置的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【struts2】struts2中的Ac
- 下一篇: POJO模式