`

java annotation 之Spring mvc参数检查

阅读更多

实现Spring mvc参数检查之前,我们先来大概了解一下java annotation:

java.lang.annotation提供了四种元注解,专门注解其他的注解(在自定义注解的时候,需要使用到元注解):

   @Documented –注解是否将包含在JavaDoc中

   @Retention –什么时候使用该注解

   @Target –注解用于什么地方

   @Inherited – 是否允许子类继承该注解

 

  1.)@Retention– 定义该注解的生命周期

  ●   RetentionPolicy.SOURCE : 在编译阶段丢弃。这些注解在编译结束之后就不再有任何意义,所以它们不会写入字节码。@Override, @SuppressWarnings都属于这类注解。

  ●   RetentionPolicy.CLASS : 在类加载的时候丢弃。在字节码文件的处理中有用。注解默认使用这种方式

  ●   RetentionPolicy.RUNTIME : 始终不会丢弃,运行期也保留该注解,因此可以使用反射机制读取该注解的信息。我们自定义的注解通常使用这种方式。

 

  2.)Target – 表示该注解用于什么地方。默认值为任何元素,表示该注解用于什么地方。可用的ElementType参数包括

  ● ElementType.CONSTRUCTOR:用于描述构造器

  ● ElementType.FIELD:成员变量、对象、属性(包括enum实例)

  ● ElementType.LOCAL_VARIABLE:用于描述局部变量

  ● ElementType.METHOD:用于描述方法

  ● ElementType.PACKAGE:用于描述包

  ● ElementType.PARAMETER:用于描述参数

  ● ElementType.TYPE:用于描述类、接口(包括注解类型) 或enum声明

 

 3.)@Documented–一个简单的Annotations标记注解,表示是否将注解信息添加在java文档中。

 

 4.)@Inherited – 定义该注释和子类的关系

     @Inherited 元注解是一个标记注解,@Inherited阐述了某个被标注的类型是被继承的。如果一个使用了         @Inherited修饰的annotation类型被用于一个class,则这个annotation将被用于该class的子类。

 

好了,有了以上的介绍,现在开始进入正题:

1.先自定义一个注解类:

 

@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface IsNotNull {
	String value() default "";
}

 2. 再写一个解析注解的工具类:

 

 

import java.lang.reflect.Field;

public class MyAnnotationUtil {
	 public static String getIsNotNullInfo(Object obj){
		 try {
			 Class<?> clazz = obj.getClass();
			//获得私有的成员属性
	         Field[] fields = clazz.getDeclaredFields();
	         if(fields!=null && fields.length>0){
	             for(Field f : fields){
	                 f.setAccessible(true);
	                 System.out.println(f.getName());
	                 //判断IsNotNull注解是否存在
	                 if(!f.isAnnotationPresent(IsNotNull.class)){
	                	 System.out.println(f.getName()+">>>>>"+f.isAnnotationPresent(IsNotNull.class));
	                     continue;
	                 }else {
	                	 System.out.println(f.getName()+">>>>>"+f.isAnnotationPresent(IsNotNull.class));
	                	 IsNotNull isNotNull = f.getAnnotation(IsNotNull.class);
	                     if(f.get(obj)==null || "".equals(f.get(obj))){
	                    	 System.out.println(isNotNull.value());
	                         return isNotNull.value();
	                     }
	                 }
	             }
	         }
		 }catch (Exception e){
	            return null;
	        }
		 return null;
	 }

 3.好了,最后进行Spring mvc参数检查的实现:

 

    3.1 定义一个view,加入定义注解

     

public class Item implements Serializable {
	
	/**
	 * 
	 */
	private static final long serialVersionUID = 8663198447200449568L;

	@IsNotNull("名字不能为空")
	private String name;
	
	@IsNotNull("密码不能为空")
	private String pwd;

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getPwd() {
		return pwd;
	}

	public void setPwd(String pwd) {
		this.pwd = pwd;
	}
	
}

   3.1 实现Controller

 

   

@RestController
public class MemberController {

	@RequestMapping(value="/getUserList",method=RequestMethod.POST)
	public List<String> getUserList(@RequestBody Item item) {
		String string = MyAnnotationUtil.getIsNotNullInfo(item);
                System.out.println(string);
		if(string!=null){ //如果参数错误,直接返回
			List<String> listUser = new ArrayList<String>();
			listUser.add(string);
			return listUser;
		}
		System.out.println(item.getName() );
		List<String> listUser = new ArrayList<String>();
		listUser.add("zhangsan");
		listUser.add("lisi");
		listUser.add("yushengjun");
		System.out.println("你调用了一次>>>>>>>");
		return listUser;
	}

	
}

 

 

好了,以上就是java annotation 之Spring mvc参数检查的简单实现。。。。。

大家还可以自定义更多的注解来检查参数,比如:对邮箱,对手机号,对身份证等等。。。。。

分享到:
评论

相关推荐

    Annotation Based Spring MVC Basics

    在本文中,我们将深入探讨基于注解的Spring MVC基础知识,这是一种流行且强大的Java Web开发框架。首先,我们假设读者对基本的Web应用程序结构和配置文件有一定的了解,以及对Servlets有基本的认识。接下来,我们将...

    Spring MVC Annotation验证的方法

    Spring MVC Annotation验证方法 Spring MVC 框架提供了多种验证方法,其中一种常用的方式是使用Annotation验证。本文将详细介绍 Spring MVC Annotation验证的方法,包括使用 Spring MVC 自带的 Annotation 验证和...

    Spring-MVC-3.0.rar_Java spring mvc_spring mvc_spring ppt

    这个名为"Spring MVC 3.0.rar"的压缩包包含了一份关于Spring MVC 3.0版本的实战指南PPT,是Java开发者深入理解Spring MVC架构的宝贵资源。 **Spring MVC简介** Spring MVC是一种Model-View-Controller(模型-视图-...

    Spring MVC 教程快速入门 深入分析

    Spring MVC是一种基于Java的实现了MVC设计模式的请求驱动类型的轻量级Web框架,使用了IoC容器,支持RESTful风格的应用程序开发。Spring MVC通过分离模型(Model)、视图(View)和控制器(Controller)来简化Web开发...

    Spring MVC IDEA版本DEMO

    在现代Java Web开发中,Spring MVC框架是不可或缺的一部分,它为构建可扩展、模块化的Web应用程序提供了强大的支持。IntelliJ IDEA作为一款高效的Java集成开发环境,使得开发Spring MVC项目变得更加便捷。本文将详细...

    IDEA 搭建Spring MVC环境示例二

    在本示例中,我们将详细探讨如何使用IntelliJ IDEA(IDEA)和Maven来搭建Spring MVC项目环境。Spring MVC是Spring框架的一个模块,它为构建Web应用程序提供了模型-视图-控制器(MVC)架构。Maven则是一个强大的项目...

    Spring MVC学习指南

    ### Spring MVC 学习指南详解 #### 一、Spring MVC 概述 Spring MVC 是 Spring 框架的一部分,主要用于构建基于 Model-View-Controller (MVC) 设计模式的 Web 应用程序。它提供了丰富的功能来简化 Web 开发过程,...

    spring mvc的简单单元测试

    Spring MVC 是一个强大的Java web开发框架,用于构建可维护、可扩展的Web应用程序。单元测试是软件开发过程中不可或缺的一部分,它允许开发者独立地测试代码的各个部分,确保它们按照预期工作。Spring MVC 提供了对...

    spring mvc 简单demo

    Spring MVC 是一个基于Java的轻量级Web应用框架,它为构建RESTful应用程序提供了强大的支持。这个简单的Demo将向我们展示如何使用Spring MVC创建一个基本的Web应用。在这个过程中,我们将涉及控制器、视图解析器、...

    spring mvc

    Spring MVC 是 Spring 框架的一部分,主要用于构建基于 Java 的 Web 应用程序。它是一种模型-视图-控制器(Model-View-Controller,MVC)设计模式的实现,用于简化Web应用程序的开发过程。 **特点:** - **轻量级且...

    spring mvc项目创建

    Spring MVC 是一个基于 Java 的轻量级 Web 开发框架,它是 Spring 框架的一部分,主要用于构建 MVC(Model-View-Controller)模式的 Web 应用程序。在本项目创建过程中,我们将深入探讨如何配置一个基本的 Spring ...

    Java Spring MVC 简单的例子

    Spring MVC 是 Java Web 开发中的一个核心框架,它作为 Spring 框架的一部分,提供了构建 MVC(Model-View-Controller)架构的应用程序的工具和结构。本教程将通过一个简单的例子来介绍如何入门 Spring MVC。 ### 1...

    Spring MVC REST Demo

    Spring MVC 是一个强大的Java框架,用于构建Web应用程序,而REST(Representational State Transfer)是一种软件架构风格,常用于创建Web服务。"Spring MVC REST Demo"是一个示例项目,旨在展示如何在Spring MVC框架...

    Spring MVC整合Mybatis

    - **Spring MVC配置**:配置`&lt;mvc:annotation-driven&gt;`启用注解驱动,配置视图解析器如`InternalResourceViewResolver`。 **5. 实例化Mapper** 在Service层,可以通过@Autowired注解自动注入Mapper接口,例如: ```...

    Spring MVC 基础实例,能明白SpringMVC是怎么回事

    Spring MVC 是一个强大的Java Web开发框架,用于构建可维护、高性能和灵活的Web应用程序。它作为Spring框架的一部分,提供了一种模型-视图-控制器(MVC)架构,简化了处理HTTP请求和响应的复杂性。在这个基础实例中...

    Spring MVC异步模式

    在Spring MVC框架中,异步模式允许我们处理耗时的操作,如大数据处理、长时间的网络请求等,而不阻塞主线程。这种方式提高了系统的响应速度,改善了用户体验。本篇文章将深入探讨Spring MVC中的异步处理机制,以及...

    Spring MVC 学习笔记 九 json格式的输入和输出

    Spring MVC 是一个强大的Java Web开发框架,用于构建高效、可维护的Web应用程序。在这个学习笔记中,我们将深入探讨如何在Spring MVC中处理JSON格式的数据,包括输入和输出。JSON(JavaScript Object Notation)是一...

    Spring MVCSpring MVC基础.ppt

    Spring MVC 是一个轻量级的、基于Java的Web应用程序开发框架,它是Spring框架的一部分,主要用于构建Web应用的模型-视图-控制器(MVC)架构。Spring MVC的设计目标是简化开发,提高可测试性,并促进良好的编程实践。...

    spring 整合spring mvc

    Spring框架是Java开发中广泛应用的一个开源框架,它主要负责提供依赖注入、面向切面编程以及容器管理等核心功能。Spring MVC则是Spring框架的一部分,专门用于构建Web应用程序的模型-视图-控制器(MVC)架构。本文将...

    IDEA 搭建Spring MVC环境示例1

    在本文中,我们将详细探讨如何使用IntelliJ IDEA(简称IDEA)搭建Spring MVC环境,以便开始进行Web应用程序开发。Spring MVC是Spring框架的一部分,它为构建基于模型-视图-控制器(MVC)架构的Web应用提供了强大的...

Global site tag (gtag.js) - Google Analytics