`

Struts2 注解

 
阅读更多

一、配置web.xml
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
<init-param>
<param-name>actionPackages</param-name>
<param-value>com.test.action</param-value>
</init-param>
</filter>

<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

二、加入注解
@Namespace(value="/test")
@Action(value = "file-manager",
interceptorRefs = {
@InterceptorRef(value = "fileUpload",params={"maximumSize","1024000","allowedTypes","image/pjpeg"}),
@InterceptorRef(value = "basicStack")},
results = {@Result(name = ActionSupport.SUCCESS, location = "/view/file-manager-sucess.jsp"),
@Result(name = ActionSupport.ERROR, location = "/view/file-manager-error.jsp") },
exceptionMappings = {@ExceptionMapping(exception = "java.lang.Exception", result = ActionSupport.ERROR)}
)

验证注解:
@Validations(
requiredStrings={
@RequiredStringValidator(fieldName="username",message="用户名不能为空!"),
@RequiredStringValidator(fieldName="telNum",message="电话号码不能为空!")
},
regexFields={@RegexFieldValidator(fieldName="telNum",expression="^(\\+86|0|1)\\d{10,11}$",
message="电话号码格式不正确!")}
)

跳过验证注解:
@SkipValidation

三、Convention的Annotation
1)与Action相关的两个Annotation是@Action 和@Actions
2)@Action中可指定一个value属性。类似于指定<action name=””/>属性值
3)@Action中还可以指定一个params属性,该属性是一个字符串数组,用于该Acion指定的参数名和参数值。params属性应遵守如下格式:{“name1”,”value1”,”name2”,”value2”}
4)@Actions 也用于修饰Action类里的方法,用于将该方法映射到多个URL.@Actions用于组织多个@Action.因此它可将一个方法映射成多个逻辑Action。

四、与Result配置相关的Annotation
1)@ResultPath @Result 和Results
2)@Results用于组织多个@Result因此它只需指定一个value属性值,该value属性值为多个@Result
3)@Result相当于struts.xml文件中的<result/>元素。使用@Result必须指定一个name属性,相当于<result name=””/>另外,它还有几个可选的属性。
☆ type 相当于<result type=””/>指定返回视图资源的类型
☆ location 相当于<result>…..</result>中间部分,用于指定实际视图位置
☆ params:该属性相当于<result/>元素里多个<param../>子元素的作用,用于为该Result指定参数值。该属性应满足{“name1”,”value1”,”name2”,”value2”}格式
4)@Result有以下两种用法
1.Action级的Result映射:以@Actions组合多个@Action后修饰的Action类。这种Result映射对该Action里的所有方法都有效。
2.方法级Result映射:将多个@Result组成数组后作为@Action的results属性值。这种Result映射仅对被修饰的方法有效。
5)@ResultPath则用于修饰包和Action类,用于改变被修饰Action所对应的物理视图资源的根路径。举例说:默认情况下,Convention都会到WEB-INF/content路径下找物理视图资源,一旦我们使用@ResultPath("/view")修饰该Action,系统将回到view目录下寻找物理视图资源。

五、与包和命名空间相关的Annotation:
@Namespace:修饰Action类或其所在的包。该Annotation中指定一个value属性值,用于指定被修饰的Action所在的命名空间
@Namespaces:修饰Action类或其所在的包,用于组合多个@Namespace
@ParentPackage: 用于指定被修饰的Action所在包的父包。

六、与异常处理相关的Annotation
@ExceptionMappings 用于组织多个@ExceptionMapping,因此它只需指定一个value属性值,该value属性值为多个@ExceptionMapping。
@ExceptionMapping 用于定义异常类和物理视图之间的对应关系,也相当于struts.xml文件里<exception-mapping../>元素的作用 使用时,必须注意以下两个属性:
exception: 用于指定异常类
result:用于指定逻辑视图
@ExceptionMpping有如下两种用法
Action级的异常定义:以@ExceptionMappings组合多个@ExceptionMapping后修饰的Action类。这种异常定义对Action中的所有方法有效
方法级的异常定义:将多个@ExceptionMapping组成数组后作为@Action的exceptionMappings属性值,这种异常定义仅对被修饰的方法有效。

七、与拦截器配置相关的Annotation
与拦截器配置的Annotation有@InterceptorRef、@InterceptorRefs和@DefaultInterceptorRef
@InterceptorRefs用于组织多个@InterceptorRef,因此它只需要指定一个value属性值,该value属性值为多个@InterceptorRef
@InterceptorRef用于为指定Action引用lanjieq或者是拦截器栈。也就相当于strut.xml中位于<action../>元素内部的<interceptor-ref../>子元素的作用。使用@InterceptorRefAnnotation时,必须制定一个value属性,用于指定所引用的拦截器或拦截器栈的名字。相当于<interceptor-ref../>子元素里name属性的作用。

八、查看struts2配置
为了看到struts2应用里的Action等各种资源的影射情况,struts2提供了Config Browser插件。
使用方法:将struts2-config-browser-plugin-2.1.6.jar文件复制到struts2应用的WEB-INF\lib目录中。
打开首页地址:http://localhost:8080/应用名字/config-browser/actionNames.action 这里可以看到Config Browser插件的首页。

struts2注解实例:

使用注解完成一个Action的流程必须要如下的7个jar包
1.commons-fileupload-1.2.1.jar
2.commons-io-1.3.2.jar
3.freemarker-2.3.15.jar
4.ognl-2.7.3.jar
5.struts2-convention-plugin-2.1.8.1.jar
6.struts2-core-2.1.8.1.jar
7.xwork-core-2.1.6.jar

如下用户登录的Action通过注解的方式验证通过:

Java代码 复制代码
  1. package com.huawei.action;   
  2. import org.apache.struts2.convention.annotation.Action;     
  3. import org.apache.struts2.convention.annotation.ExceptionMapping;     
  4. import org.apache.struts2.convention.annotation.ExceptionMappings;     
  5. import org.apache.struts2.convention.annotation.Namespace;     
  6. import org.apache.struts2.convention.annotation.ParentPackage;     
  7. import org.apache.struts2.convention.annotation.Result;     
  8. import org.apache.struts2.convention.annotation.Results;     
  9. import com.opensymphony.xwork2.ActionSupport;     
  10. /**  
  11.  * @name   
  12.  * @date 2011-3-24  
  13.  * @action LoginAction.java  
  14.  * @time 下午11:23:58  
  15.  * @package_name com.huaweiaction  
  16.  * @project_name steutsAction  
  17.  */  
  18. /*  
  19.  * 这个小Demo的主要作用就是温故一下Struts2 Action的注解  
  20.  * 一般在一个项目实施开发中是不会配置struts.xml进行Action的转发或重定向的,其都是通过注解的方式来配置Action的  
  21.  */  
  22. ///////////使用注解来配置Action///////////////////////////   
  23.      
  24.  @ParentPackage("struts-default")     
  25.  // 父包     
  26.  @Namespace("")     
  27.  @Results( {    
  28.      @Result(name = com.opensymphony.xwork2.Action.SUCCESS, location = "/msg.jsp"),     
  29.      @Result(name = com.opensymphony.xwork2.Action.ERROR, location = "/erlogin.jsp") })   
  30.         
  31.      // @ExceptionMappings 一级声明异常的数组   
  32.     // @ExceptionMapping 映射一个声明异常   
  33.  @ExceptionMappings( {   
  34.      @ExceptionMapping(exception = "java.lange.RuntimeException", result = "error") })     
  35.  public class LoginAction extends ActionSupport {     
  36.      private static final long serialVersionUID = -2554018432709689579L;     
  37.      private String loginname;     
  38.      private String pwd;     
  39.       
  40.     // @Action(value="login") 指定某个请求处理方法的请求URL。注意,它不能添加在Action类上,要添加到方法上。   
  41.      @Action(value = "loginName")     
  42.      public String login() throws Exception {     
  43.    if ("HEFE".equalsIgnoreCase(loginname.trim())&&"123".equalsIgnoreCase(pwd.trim()))  {     
  44.                     return SUCCESS;     
  45.                       }    
  46.                          else {     
  47.                           System.out.println("===========");   
  48.                           return ERROR;     
  49.                       }     
  50.                  }   
  51.       
  52.      @Action(value = "add", results = { @Result(name = "success", location = "/index.jsp") })     
  53.      public String add() throws Exception {     
  54.          return SUCCESS;     
  55.      }     
  56.       
  57.      public String getLoginname() {     
  58.          return loginname;     
  59.      }     
  60.       
  61.      public void setLoginname(String loginname) {     
  62.          this.loginname = loginname;     
  63.     }     
  64.       
  65.      public String getPwd() {     
  66.          return pwd;     
  67.      }     
  68.       
  69.      public void setPwd(String pwd) {     
  70.          this.pwd = pwd;     
  71.      }     
  72.       
  73.  }  
分享到:
评论

相关推荐

    Struts2注解开发jar

    标题提到的"Struts2注解开发jar"主要指的是`struts2-convention-plugin`,这是一个Struts2的插件,它的主要作用是支持基于约定优于配置(Convention over Configuration)的开发模式。描述中提到的`struts2-...

    struts2注解登陆

    Struts2注解登录是Java Web开发中一种简化配置的方式,它允许开发者在代码中直接定义控制器、动作和结果页面的映射,从而避免了传统方式下需要在`struts.xml`配置文件中的繁琐设置。这种做法提高了代码的可读性和可...

    Struts2 注解 Demo

    本教程将通过一个"Struts2注解Demo"来深入探讨Struts2中的注解用法,帮助开发者更高效地配置和管理Action类。 首先,Struts2的注解允许我们避免传统的XML配置,从而实现更加简洁、直观的编程方式。在`Struts2Demo`...

    Maven实现struts2注解

    &lt;constant name="struts.objectFactory" value="struts注解工厂类全限定名,比如:org.apache.struts2.spring.StrutsSpringObjectFactory" /&gt; &lt;package name="default" extends="struts-default"&gt; ...

    struts2注解与拦截器demo

    该例子为struts2注解与拦截器demo,利用myEclipse8.5开发,导入刚才后,自动加载所需struts2的jar包,可以直接运行,是初学struts2注解、拦截器很好的例子,保证10分钟学会2种技术,愿意分享给大家。

    struts2注解详解

    ### Struts2 注解详解 #### 一、Struts2 Convention 插件介绍与使用 在 Struts2 框架的发展过程中,随着版本的更新和技术的演进,其配置方式也发生了变化。从 Struts2.1 版本开始,官方不再推荐使用 Codebehind ...

    Struts2注解详细说明文档

    ### Struts2注解详细说明 #### 一、概述 Struts2框架是Apache软件基金会下的一个开源项目,它提供了一种构建企业级Java Web应用的解决方案。自Struts2.1版本开始,引入了一个重要的插件——Convention Plugin,该...

    struts2注解必须包

    "struts2注解必须包"指的是Struts2提供的一系列注解,它们对于简化Struts2应用的配置和增强其功能至关重要。 标题中的"struts2-convention-plugin-2.1.8.1.jar"是Struts2的约定插件(Convention Plugin)的一个特定...

    struts2注解小实例

    在这个小实例中,我们将深入探讨如何利用Struts2的注解来构建一个简洁而高效的Web应用。 首先,让我们了解什么是注解。在Java中,注解是一种元数据,它提供了一种安全的方法来向编译器、JVM或框架提供信息。Struts2...

    struts2注解配置Action及拦截器几种不同方式写法对应的路径指向.docx

    "Struts2 注解配置 Action 及拦截器几种不同方式写法对应的路径指向" Struts2 注解配置 Action 及拦截器是 Struts2 框架中的核心组件之一,负责处理用户请求并返回响应结果。下面,我们将通过详细的解释和示例代码...

    struts2注解配置全面解析

    ### Struts2注解配置全面解析 #### 一、引言 随着Struts2框架的不断更新和发展,很多开发者在尝试使用注解方式进行配置时往往会遇到不少难题。尤其是在使用Struts2.1及以上版本时,由于大部分教程和资料仍然基于...

    Struts2框架及注释和用法

    下面我们将深入探讨Struts2的关键概念、注释以及使用方法。 **1. Struts2架构** Struts2的核心是Action类,它是处理用户请求的入口点。每个Action对应一个业务逻辑,当用户发起请求时,Struts2会根据配置文件(如...

    Struts2+spring注解配置

    Struts2 和 Spring 的整合是企业级 Java Web 开发中常见的技术栈,通过注解配置可以使项目更加简洁、易于维护。Struts2 提供了一种使用注解替代 XML 配置的方式,使得开发者无需编写繁琐的 struts.xml 文件,即可...

    Struts2注解配置教程

    Struts2注解配置教程是指导开发者如何使用Java注解替代传统的XML配置来配置Struts2框架的一个教程系列。本文档主要涵盖了Struts2中注解配置的一些基本知识点以及如何通过注解实现零配置。 ### 注解配置之前 在介绍...

    struts2注解配置

    Struts2注解配置是Java Web开发中一种高效、简洁的框架配置方式,它允许开发者在类或方法级别上直接定义Action、结果类型、参数映射等信息,从而避免了传统XML配置文件的繁琐。本资料集合了关于Struts2注解配置的...

    Struts2注解使用说明

    ### Struts2注解使用详解 #### 一、引言 在Java Web开发领域,Struts2框架以其灵活的架构和强大的功能深受开发者喜爱。传统上,Struts2的配置依赖于XML文件,如`struts.xml`,这在大型项目中可能会导致配置文件...

    spring和Struts2注解文档

    在IT领域,特别是Java开发框架中,Spring和Struts2都是极为重要的技术栈,它们各自通过注解(Annotation)机制提供了强大的功能扩展性和代码简洁性。以下是对Spring和Struts2注解的深入解析和使用指南。 ### Spring...

    Struts2注解

    Struts2注解是Struts2框架中的一种简化配置的方式,允许开发者在代码中直接进行配置,无需在XML文件中进行繁琐的设置。这提高了开发效率,并使得代码更具有可读性。 一、配置web.xml 在Struts2中,web.xml是部署...

    struts2注释

    Struts2注释是Struts2框架中一种重要的元数据表达方式,它允许开发者在Java代码中直接标注信息,以简化配置文件的管理和提高开发效率。Struts2框架支持两种主要的配置方式:XML配置和注解(Annotation)配置。 XML...

Global site tag (gtag.js) - Google Analytics