Struts2註解零配置

視頻配套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 註解零配置視頻教程 】
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章