struts注解

来源:互联网 发布:淘宝网界面设计分析 编辑:程序博客网 时间:2024/06/15 05:57

标注是取代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>

原创粉丝点击