struts2的注解

来源:互联网 发布:淘宝规则小卖家死 编辑:程序博客网 时间:2024/04/30 16:31
标注是取代struts.xml的一种手段,也是以后发展的目标所在,会EJB3.0的人都知道标注是如何取代XML的存在,他拥有多少的潜力,无论是JPA等orm映射还是其他的WEB框架都在进行注解的洗礼;

标识是以后发展的方向,因此对此不可视而不见,它虽然不太成熟,但了解却是必然的;



首先需要改动的是web.xml:
  
  1.  <filter-name>struts</filter-name>
  2.             <filter-class>
  3.                 org.apache.struts2.dispatcher.FilterDispatcher
  4.             </filter-class>
  5.             <init-param>
  6.                 <param-name>actionPackages</param-name>
  7.                 //固定格式
  8.                 <param-value>com.struts2.action</param-value>
  9.                 //所有action所在的包
  10.             </init-param>
  11.     </filter>


以及action类的标注是如何配置的:
@ParentPackage("struts-default")
//继承的包
@Namespace("")
//命名空间
@Results( { @Result(name="succee",value = "/succee.jsp")})
//返回页面

另外
    jsp的请求时的条件:XXXAction.java,
    jsp页面:<s:form action="XXX">
    
程序:    
    
  1. @ParentPackage("struts-default")
  2. @Namespace("")
  3. @Results( { @Result(value = "/success.jsp"),
  4.         @Result(name = "error", value = "/error.jsp") })
  5. public class DoAction {
  6.     private String username;
  7.     public String doAction() {
  8.         if (username.equals("") || username == null) {
  9.             return "error";
  10.         } else {
  11.             username = "欢迎您," + username;
  12.             setUsername(username);
  13.             return "success";
  14.         }
  15.     }
  16.     public String getUsername() {
  17.         return username;
  18.     }
  19.     public void setUsername(String username) {
  20.         this.username = username;
  21.     }
  22. }


-----------------------------------------------------------------------------------
表示拦截器:
   拦截器:     @Before  @BeforeResult  @After
    @Before 是方法之前; @BeforeResult 方法执行后,result返回前; @After  result返回后;
    action类:
 
  1.       @Before
  2.        public void add() {
  3.             System.out.println("--------------执行add()方法-----------------");
  4.         }

    
    
   拦截器的标识无法与上面的标识action连用,至少我们有发现可以连用的地方,因此,他等若是struts.xml连用的,其配置为:
      
  1.  <struts>
  2.             <package name="struts" extends="struts-default" >
  3.                 <interceptors>
  4.                     <interceptor name="annotationInterceptor"
  5.                     //此拦截器是必须声明的,他是声明你用的是标识拦截器
  6.                             class="com.opensymphony.xwork2.interceptor.annotations.AnnotationWorkflowInterceptor" />
  7.                 </interceptors>
  8.                 
  9.                 <action name="label" class="com.struts2.action.LabelAction">
  10.                     <interceptor-ref name="defaultStack" />
  11.                     <interceptor-ref name="annotationInterceptor"></interceptor-ref>
  12.                     //此处action,声明使用;
  13.                     <result name="succee">/succee.jsp</result>
  14.                 </action>
  15.             </package>
  16.         </struts>