Spring spring

Spring中文网站 > Spring Modulith > Spring MVC怎么做表单验证 Spring MVC怎么拦截请求
Spring MVC怎么做表单验证 Spring MVC怎么拦截请求
发布时间:2026/05/25 11:37:40

品牌型号:联想ThinkPad X1

系统:Windows10家庭版

软件版本:Spring 5.3.7

我们在做Java Web项目开发的时候会使用到Spring MVC框架来搭建后台接口和页面功能,而表单提交和请求管控是我们工作中绕不开的环节。平时我们写用户注册、信息修改等表单提交功能的时候,都需要对前端传来的数据进行校验,如果没有表单验证,用户可能随意书写的违规数据。例如空参、错误格式,容易导致后台报错。而且对于各类后台管理系统的接口访问我们也要做相应的管控。不然一些未登录的游客、没有权限的用户可能会访问到我们一些敏感数据或者操作敏感功能。有很多新手开发的时候,可能会喜欢写大量的if判断去做数据校验,不仅代码冗余而且还容易导致后期维护成本变高,这样写,代码显得不够优雅。下面就给大家介绍一下Spring MVC怎么做表单验证,Spring MVC怎么拦截请求的相关内容。

一、Spring MVC怎么做表单验证

如果你在Spring MVC开发中,还在Controller中堆砌一堆if-else判断参数是否为空、格式是否合规,建议及时优化,因为框架自带标准化的校验注解结合校验器,能快速完成表单数据的合法性校验,不过我们需要在项目中引入hibernate-validator依赖。

添加依赖
图1:添加依赖

专门给表单创建实体类作为表单接收实体,也就是工作中常说的DTO参数类,在实体类的对应字段上添加对应的校验注解,例如非空校验可以用@NotBlank,不能为空可以用@NotNull,当然还能自定义提示报错信息,精准标注每个字段的校验规则。

在DTO中添加校验规则
图2:在DTO中添加校验规则

我们完成注解配置后,需要在Controller接收表单参数的实体类参数前加上@Valid开启自动校验功能,这样一旦前端提交过来的表单数据不符合设定的规则,框架就会自动捕获异常,非法数据就不会进入后续业务代码。我们只需要配合BindingResult类就可以精准获取到具体的校验失败提示信息了。

在Controller中开启校验
图3:在Controller中开启校验

二、Spring MVC怎么拦截请求

我们在Web开发的时候,要注意接口安全,请求拦截是保障接口安全的一种常用手段,像登录校验、权限控制、日志记录等通用功能,我们不需要在每个Controller中重复写一大堆冗余代码,因为Spring MVC为我们提供了拦截器机制,十分灵活。

它实现拦截的核心是基于HandlerInterceptor拦截器。我们需要先自定义一个拦截器类来实现这个接口并重写preHandlepostHandler、afterCompletion三个方法。

实现接口并重写方法
图4:实现接口并重写方法

像preHandle方法会在请求进入Controller之前就开始执行,返回false就直接拦截请求,相反,true就是放行,比较适合用来做登录状态、权限校验。重写完方法后,我们需要创建配置类,实现WebMvcConfigurer接口,重写里面的addInterceptors方法可以把自定义的拦截器注册到框架中并且能配置拦截路径和放行路径。

配置拦截路径和放行路径
图5:配置拦截路径和放行路径

这样一套组合拳下来,整个拦截过程由Spring MVC自动调度,不需要侵入业务代码就能统一管控所有请求,这可比大量if else来做拦截要优雅太多了。

以上就是Spring MVC怎么做表单验证,Spring MVC怎么拦截请求的全部内容了。我们只需要在项目中引入hibernate-validator校验依赖,然后给表单写实体类并配置校验规则开启自动校验就可以实现表单验证了。如果要做拦截,我们需要自定义一个拦截器实现HandlerInterceptor接口里的三个方法,然后注册这个拦截器配置拦截路径和放行路径,就可以实现请求拦截了。

180 1563 6924