实现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参数检查的简单实现。。。。。
大家还可以自定义更多的注解来检查参数,比如:对邮箱,对手机号,对身份证等等。。。。。
相关推荐
在本文中,我们将深入探讨基于注解的Spring MVC基础知识,这是一种流行且强大的Java Web开发框架。首先,我们假设读者对基本的Web应用程序结构和配置文件有一定的了解,以及对Servlets有基本的认识。接下来,我们将...
Spring MVC Annotation验证方法 Spring MVC 框架提供了多种验证方法,其中一种常用的方式是使用Annotation验证。本文将详细介绍 Spring MVC Annotation验证的方法,包括使用 Spring MVC 自带的 Annotation 验证和...
这个名为"Spring MVC 3.0.rar"的压缩包包含了一份关于Spring MVC 3.0版本的实战指南PPT,是Java开发者深入理解Spring MVC架构的宝贵资源。 **Spring MVC简介** Spring MVC是一种Model-View-Controller(模型-视图-...
Spring MVC是一种基于Java的实现了MVC设计模式的请求驱动类型的轻量级Web框架,使用了IoC容器,支持RESTful风格的应用程序开发。Spring MVC通过分离模型(Model)、视图(View)和控制器(Controller)来简化Web开发...
在现代Java Web开发中,Spring MVC框架是不可或缺的一部分,它为构建可扩展、模块化的Web应用程序提供了强大的支持。IntelliJ IDEA作为一款高效的Java集成开发环境,使得开发Spring MVC项目变得更加便捷。本文将详细...
在本示例中,我们将详细探讨如何使用IntelliJ IDEA(IDEA)和Maven来搭建Spring MVC项目环境。Spring MVC是Spring框架的一个模块,它为构建Web应用程序提供了模型-视图-控制器(MVC)架构。Maven则是一个强大的项目...
### Spring MVC 学习指南详解 #### 一、Spring MVC 概述 Spring MVC 是 Spring 框架的一部分,主要用于构建基于 Model-View-Controller (MVC) 设计模式的 Web 应用程序。它提供了丰富的功能来简化 Web 开发过程,...
Spring MVC 是一个强大的Java web开发框架,用于构建可维护、可扩展的Web应用程序。单元测试是软件开发过程中不可或缺的一部分,它允许开发者独立地测试代码的各个部分,确保它们按照预期工作。Spring MVC 提供了对...
Spring MVC 是一个基于Java的轻量级Web应用框架,它为构建RESTful应用程序提供了强大的支持。这个简单的Demo将向我们展示如何使用Spring MVC创建一个基本的Web应用。在这个过程中,我们将涉及控制器、视图解析器、...
Spring MVC 是 Spring 框架的一部分,主要用于构建基于 Java 的 Web 应用程序。它是一种模型-视图-控制器(Model-View-Controller,MVC)设计模式的实现,用于简化Web应用程序的开发过程。 **特点:** - **轻量级且...
Spring MVC 是一个基于 Java 的轻量级 Web 开发框架,它是 Spring 框架的一部分,主要用于构建 MVC(Model-View-Controller)模式的 Web 应用程序。在本项目创建过程中,我们将深入探讨如何配置一个基本的 Spring ...
Spring MVC 是 Java Web 开发中的一个核心框架,它作为 Spring 框架的一部分,提供了构建 MVC(Model-View-Controller)架构的应用程序的工具和结构。本教程将通过一个简单的例子来介绍如何入门 Spring MVC。 ### 1...
Spring MVC 是一个强大的Java框架,用于构建Web应用程序,而REST(Representational State Transfer)是一种软件架构风格,常用于创建Web服务。"Spring MVC REST Demo"是一个示例项目,旨在展示如何在Spring MVC框架...
- **Spring MVC配置**:配置`<mvc:annotation-driven>`启用注解驱动,配置视图解析器如`InternalResourceViewResolver`。 **5. 实例化Mapper** 在Service层,可以通过@Autowired注解自动注入Mapper接口,例如: ```...
Spring MVC 是一个强大的Java Web开发框架,用于构建可维护、高性能和灵活的Web应用程序。它作为Spring框架的一部分,提供了一种模型-视图-控制器(MVC)架构,简化了处理HTTP请求和响应的复杂性。在这个基础实例中...
在Spring MVC框架中,异步模式允许我们处理耗时的操作,如大数据处理、长时间的网络请求等,而不阻塞主线程。这种方式提高了系统的响应速度,改善了用户体验。本篇文章将深入探讨Spring MVC中的异步处理机制,以及...
Spring MVC 是一个强大的Java Web开发框架,用于构建高效、可维护的Web应用程序。在这个学习笔记中,我们将深入探讨如何在Spring MVC中处理JSON格式的数据,包括输入和输出。JSON(JavaScript Object Notation)是一...
Spring MVC 是一个轻量级的、基于Java的Web应用程序开发框架,它是Spring框架的一部分,主要用于构建Web应用的模型-视图-控制器(MVC)架构。Spring MVC的设计目标是简化开发,提高可测试性,并促进良好的编程实践。...
Spring框架是Java开发中广泛应用的一个开源框架,它主要负责提供依赖注入、面向切面编程以及容器管理等核心功能。Spring MVC则是Spring框架的一部分,专门用于构建Web应用程序的模型-视图-控制器(MVC)架构。本文将...
在本文中,我们将详细探讨如何使用IntelliJ IDEA(简称IDEA)搭建Spring MVC环境,以便开始进行Web应用程序开发。Spring MVC是Spring框架的一部分,它为构建基于模型-视图-控制器(MVC)架构的Web应用提供了强大的...