struts註解

標註是取代struts.xml的一種手段,也是以後發展的目標所在,會EJB3.0的人都知道標註是如何取代XML的存在,他擁有多少的潛力,無論是JPA等orm映射還是其他的WEB框架都在進行註解的洗禮;

 

標識是以後發展的方向,因此對此不可視而不見,它雖然不太成熟,但瞭解卻是必然的;

 

 

 

首先需要改動的是web.xml:

  

 <filter-name>struts</filter-name>

           <filter-class>

               org.apache.struts2.dispatcher.FilterDispatcher

           </filter-class>

           <init-param>

               <param-name>actionPackages</param-name>

                //固定格式

                <param-value>com.struts2.action</param-value>

                //所有action所在的包

           </init-param>

   </filter>

 

 

以及action類的標註是如何配置的:

@ParentPackage("struts-default")

//繼承的包

@Namespace("")

//命名空間

@Results( {@Result(name="succee",value = "/succee.jsp")})

//返回頁面

 

另外

   jsp的請求時的條件:XXXAction.java,

   jsp頁面:<s:formaction="XXX">

   

程序:   

   

 

@ParentPackage("struts-default")

@Namespace("")

@Results( { @Result(value ="/success.jsp"),

       @Result(name = "error", value = "/error.jsp") })

public class DoAction {

   private String username;

 

   public String doAction() {

       if (username.equals("") || username == null) {

           return "error";

       } else {

           username = "歡迎您," +username;

           setUsername(username);

           return "success";

       }

    }

 

   public String getUsername() {

       return username;

    }

 

   public void setUsername(String username) {

       this.username = username;

    }

 

}

 

 

-----------------------------------------------------------------------------------

表示攔截器:

   攔截器:     @Before  @BeforeResult @After

   @Before 是方法之前; @BeforeResult 方法執行後,result返回前; @After  result返回後;

   action類:

 

     @Before

      public void add() {

           System.out.println("--------------執行add()方法-----------------");

       }

 

   

   

   攔截器的標識無法與上面的標識action連用,至少我們有發現可以連用的地方,因此,他等若是struts.xml連用的,其配置爲:

      

 <struts>

           <package name="struts" extends="struts-default">

               <interceptors>

                    <interceptorname="annotationInterceptor"

                    //此攔截器是必須聲明的,他是聲明你用的是標識攔截器

                           class="com.opensymphony.xwork2.interceptor.annotations.AnnotationWorkflowInterceptor"/>

               </interceptors>

               

                <actionname="label" class="com.struts2.action.LabelAction">

                    <interceptor-refname="defaultStack" />

                    <interceptor-refname="annotationInterceptor"></interceptor-ref>

                    //此處action,聲明使用;

                    <resultname="succee">/succee.jsp</result>

                </action>

           </package>

       </struts>

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章