視頻配套PPT,視頻地址【 struts2 註解零配置視頻教程 】
1 、關於註解
註解放在什麼語法單元頭上?
一個語法單元頭上同種註解只能放一個
註解中的默認方法名爲value
每個方法都可以有默認值
如果註解中的方法需要一個數組,那麼可以用一個單獨元素來給定
2 、每個包都可以設置 package-info.java ,用於寫這個包的註釋和註解
java代碼:
/** * Action包 */ @ParentPackage("ssh-default") package cn.javass.ssh.doc.action; import org.apache.struts2.convention.annotation.ParentPackage;
導出javadoc的時候需要設置-encoding utf-8 -charset utf-8。
在前面的學習中,把Struts2的配置信息都放在了struts.xml中,這種方式簡單有效而且使用起來也非常方便。但是,還有沒有更簡潔的方式呢?
Struts2提供了按照約定來自動配置的方式,或者使用Java註解來替代struts.xml進行配置的方式,從而可以實現零配置。
先來看看struts.xml中的action都能配置些什麼?直接看struts2的dtd中描述Action的部分,示例代碼如下:
java代碼:
<!ELEMENT action (param|result|interceptor-ref|exception-mapping)*> <!ATTLIST action name CDATA #REQUIRED class CDATA #IMPLIED method CDATA #IMPLIED converter CDATA #IMPLIED >
零配置就是要替代這些東西,通過約定或者是註解,把這些東西從struts.xml中移除,達到不需要配置就可以指定這些信息並正確運行應用的目的。
把struts2-convention-plugin-2.1.8.1.jar包拷貝到web工程的WEB-INF\lib包裏面。
java代碼:
@ParentPackage("s2") @Namespace("/s2") @Action("/anno") @Results( @Result(name="success",location="/anno/success.jsp") ) @ExceptionMappings( @ExceptionMapping(exception="java.lang.Exception",result="error") ) @InterceptorRefs({ @InterceptorRef("logger"),@InterceptorRef("myStack") }) public class AnnoAction extends ActionSupport{ … }
1 、可以在 package-info.java 上添加註解,讓這個包內的所有Action 共享
java代碼:
@ParentPackage("ssh-default") @Namespace("/doc") @DefaultInterceptorRef("checkStack") package cn.javass.ssh.doc.action; import org.apache.struts2.convention.annotation.Namespace; import org.apache.struts2.convention.annotation.ParentPackage; import org.apache.struts2.convention.annotation.DefaultInterceptorRef;
2 、可以給 <result><interceptor-ref> 等加上 <param>
@Result(type="json",name="jsonr",params={"root"," citys"}
其中的 params 是鍵值對,相當於
java代碼:
<result type="json" name=“jsonr"> <param name="root">citys</param> </result>
可以在struts.xml或struts.properties裏設置常量來設置Struts2框架讀取哪些類爲Action。
1、struts.convention.action.packages:可以使用的Action的祖包,默認爲沒有, 設置爲 cn.javass.ssh 就可以讀取這個包及其子包的所有頭上註冊了【 @Action 】 的類。
2、 struts.convention.package.locators:可以使用的Action的上級包,默認爲【action,actions,struts,struts2】,這樣就可以讀取所有在包中的所有頭上註冊了【@Action】的類;注意設置的action應爲這個包的最後一級包,如cn.javass.ssh.user.action.UserAction。
3、 struts.convention.action.suffix:Action類類名的後綴,默認爲Action。
在前面的例子中已經看到了,使用註解的方式實現零配置和struts.xml的方式是可以並存的。也可以各自獨立存在。如何使用就看各自的寫法了。
視頻配套PPT,視頻地址【 struts2 註解零配置視頻教程 】