对于后端的参数校验,我们一直在强调的验证规则,提示信息的重用。这不,springmvc通过集成Valid最大程序减少了我们的工作量。其实后端的参数过滤,是分几种请求来源的。每种的处理都不太一样,但是我们如果能重用验证规则,提示信息,那就很强大了。
1 常用的表单提交,需要页面返回错误信息
2 AJAX提交,需要JSON格式返回,或者XML
3 接口调用,同样需要对应的数据格式返回
对于这3类请求,我今天讲的是第3种,是可以重用第1种的资源和验证规则。它就是ControllerAdvice(控制建议)
1 /**
2 * Indicates the annotated class assists a "Controller".
3 *
4 * <p>Serves as a specialization of {@link Component @Component}, allowing for
5 * implementation classes to be autodetected through classpath scanning.
6 *
7 * <p>It is typically used to define {@link ExceptionHandler @ExceptionHandler},
8 * {@link InitBinder @InitBinder}, and {@link ModelAttribute @ModelAttribute}
9 * methods that apply to all {@link RequestMapping @RequestMapping} methods.
10 *
11 * @author Rossen Stoyanchev
12 * @since 3.2
13 */
2 * Indicates the annotated class assists a "Controller".
3 *
4 * <p>Serves as a specialization of {@link Component @Component}, allowing for
5 * implementation classes to be autodetected through classpath scanning.
6 *
7 * <p>It is typically used to define {@link ExceptionHandler @ExceptionHandler},
8 * {@link InitBinder @InitBinder}, and {@link ModelAttribute @ModelAttribute}
9 * methods that apply to all {@link RequestMapping @RequestMapping} methods.
10 *
11 * @author Rossen Stoyanchev
12 * @since 3.2
13 */
中文的大概意思就是:
A 定义异常处理
B 初始化binder,比如一些类型转换,自定义验证等等
C 设置ModelAttribute的值
看到没有,异常处理。刚好spring有提供 MethodArgumentNotValidException这个异常,而这个异常就是处理参数验证不通过会抛出的。
哈哈哈,太好了。这样,我就可以在这里面,去封装Valid的异常
如图
里面的processValidationError方法会处理具体异常的返回值并以JSON输出,大功告成,下周再贴出整体代码链接。
当这样处理之后,我们的resetful的接口只用处理真正的业务,完全不用做常用的参数检查。
相关推荐
Bean Validation 提供了一种统一的验证API,允许在Java beans上声明验证规则。在SpringMVC中,我们可以在模型类的属性上添加验证注解,如`@NotNull`, `@Size`, `@Pattern`等。例如,如果一个用户名字段不允许为空,...
此外,SpringMVC支持数据绑定和验证,可以通过`@ModelAttribute`注解将请求参数绑定到Java对象,并利用`@Valid`和`Validator`接口进行数据验证。 对于异常处理,SpringMVC提供了`@ExceptionHandler`注解,可以用来...
SpringMVC 提供了统一的异常处理机制,可以通过 `@ExceptionHandler` 注解定义异常处理器,或配置 `HandlerExceptionResolver` 实现类来集中处理异常。 ### 第 7 章 数据验证 SpringMVC 结合 Hibernate Validator ...
这些是关于Bean验证的Java标准,提供了统一的验证API。Spring MVC与Hibernate Validator结合使用,可以方便地在服务层或者控制器层对模型对象进行验证。 3. **Spring Validation Support**: Spring MVC框架提供...
开发者可以选择捕获这个异常,或者配置全局异常处理器来统一处理验证失败的情况。 综上所述,这个压缩包包含的内容可能涵盖了Spring MVC与Hibernate Validator的集成使用,以及一个具体的用户注册登录验证示例,...
同时,如果使用了数据验证注解(如`@Valid`),SpringMVC还会进行数据验证。 3. **视图解析**: 处理器方法执行完成后,返回的通常是`ModelAndView`对象或`String`类型的结果。`ModelAndView`包含模型数据和视图名...
- 使用 `@Valid` 进行数据验证,结合 JSR-303/JSR-349 验证注解。 9. **拦截器(Interceptor)** - 拦截器可以对请求和响应进行预处理和后处理,例如登录检查、日志记录等。 10. **异常处理** - 可以通过 `@...
通过@ControllerAdvice和@ExceptionHandler,可以全局捕获和处理异常,提供统一的错误页面或JSON响应。 **总结** SpringMVC以其强大的功能和高度的灵活性,成为Java Web开发中广泛使用的框架。通过理解并熟练掌握...
- `@Valid`注解配合JSR-303/JSR-349 Bean Validation进行表单验证。 - 自动将HTTP请求参数绑定到Controller方法的参数上,支持集合类型的参数绑定。 5. **异常处理**: - 可以使用`@ExceptionHandler`注解定义...
5. **验证**:SpringMvc支持JSR-303/JSR-349 Bean Validation标准,可以通过`@Valid`和`@Validated`注解进行数据校验。 6. **拦截器**:`HandlerInterceptor`接口可以用来实现预处理和后处理逻辑,比如权限检查、...
通过学习这个示例,你可以了解到如何设置SpringMVC环境,创建控制器,处理请求,以及如何进行数据绑定、异常处理和验证。这对于理解和掌握SpringMVC的运作机制至关重要。在实际开发中,你可以根据需求调整和扩展这些...
4. **自定义验证困难**:数据验证过程需要手动实现,缺乏统一的接口或框架支持。 #### 三、Spring 3之后的数据绑定改进 从Spring 3开始,SpringMVC引入了更为强大的数据绑定框架,解决了上述问题,并提供了更加...
通过@ControllerAdvice和@ExceptionHandler注解,我们可以全局地处理SpringMvc中的异常,提供统一的错误页面或JSON响应。 九、拦截器 SpringMvc的拦截器(Interceptor)允许我们在请求被Controller处理之前或之后...
SpringMVC 提供了统一的异常处理机制,通过 @ExceptionHandler 或配置 ExceptionResolver,可以优雅地处理应用中的异常。 **12. Hibernate ORM** Hibernate 是一款强大的 ORM(对象关系映射)框架,它简化了数据库...
- SpringMVC还提供了数据验证机制,通过`@Valid`注解配合JSR-303/JSR-349标准的校验注解(如`@NotNull`、`@Size`等),可以在处理请求时自动进行数据验证。 四、异常处理 SpringMVC提供了统一的异常处理机制,可以...
SpringMVC提供了异常处理机制,可以通过`@ExceptionHandler`注解定义在Controller中处理特定异常的方法,或者全局的`@ControllerAdvice`来统一处理所有Controller的异常。 **8. 国际化与本地化** SpringMVC支持...
- 使用`@Valid`配合JSR-303/JSR-349验证注解进行数据验证。 6. **拦截器(Interceptor)** - 可以自定义拦截器,实现预处理和后处理逻辑,例如登录检查、日志记录等。 7. **异常处理** - 可以通过`@...
6. **拦截器(Interceptor)**:SpringMVC的拦截器机制允许我们在请求处理前后执行自定义逻辑,例如进行权限验证、日志记录等。通过实现HandlerInterceptor接口并配置在SpringMVC配置中,可以实现全局的接口拦截处理...
例如,`@ModelAttribute` 注解用于将请求参数绑定到方法参数,`@Valid` 注解配合 `Validator` 接口进行数据验证。异常处理器(HandlerExceptionResolver)能够捕获和处理控制器抛出的异常,提供统一的错误页面。 在...
这有助于保持代码的整洁,提供统一的错误处理机制。 ### 9. 国际化和主题支持 SpringMVC提供国际化和主题支持,使得应用能够根据用户的语言和偏好动态地显示内容。 在`TestSpringMVC`这个例子中,我们可以看到一个...