锋盈数科-知识库 Logo
首页
软件开发
计算机基础
Hello Halo
新手必读
关于本知识库
登录 →
锋盈数科-知识库 Logo
首页 软件开发 计算机基础 Hello Halo 新手必读 关于本知识库
登录
  1. 首页
  2. 软件开发
  3. JAVA
  4. SpringMVC-05

SpringMVC-05

0
  • JAVA
  • 发布于 2024-09-26
  • 13 次阅读
黄健
黄健

Spring MVC拦截器是在请求到达处理器前或返回客户端前执行的组件,它可以用于拦截和处理请求,实现一些通用的功能。
Spring MVC拦截器可以实现的功能包括:

  1. 登录验证:拦截所有请求,检查用户是否已登录,未登录则跳转到登录页面。
  2. 权限验证:拦截请求,检查用户是否拥有访问权限,没有权限则跳转到错误页面。
  3. 日志记录:记录请求的参数、处理时间等信息,用于分析和排查问题。
  4. 数据预处理:对请求参数进行一些预处理,比如格式化日期、转换数据类型等。
  5. 异常处理:拦截处理过程中出现的异常,进行统一的异常处理。

要使用Spring MVC拦截器,需要实现HandlerInterceptor接口,并注册到Spring的上下文中。拦截器可以通过配置匹配的URL路径、排除的URL路径等条件来决定对哪些请求进行拦截。

拦截器的执行顺序由配置的顺序决定,可以通过实现Ordered接口来指定拦截器的顺序。在拦截器的preHandle方法中,可以根据需要进行请求的拦截或处理;在postHandle方法中可以对处理结果做一些处理;在afterCompletion方法中可以进行一些清理工作。

拦截器是Spring MVC框架提供的一种灵活、可扩展的机制,可以在请求处理的各个阶段进行拦截和处理。它可以帮助我们实现一些通用的功能,代码重用性高,提高了开发效率。

拦截器 SpringMVC
过滤器 javaWeb

拦截器使用:1.创建拦截器类
2.添加拦截器
多个拦截器,先声明的优先级高

public class MyInterceptor implements HandlerInterceptor {

    //执行handler之前   调用的拦截方法 如登录保护 权限处理等
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {

        System.out.println("request:"+request+" response:"+response+" handler"+handler);
        return true;
    }

    //执行handler之后   触发的方法   如铭感词汇检查等
    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {

        System.out.println("MyInterceptor.postHandle");
    }

    //整体处理完毕后   触发的方法
    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {

        System.out.println("MyInterceptor.afterCompletion");
    }
}



    @Override
    public void addInterceptors(InterceptorRegistry registry) {

        //拦截全部请求
        registry.addInterceptor(new MyInterceptor());
    }


        //方案2.指定地址拦截
        registry.addInterceptor(new MyInterceptor()).addPathPatterns("/user/data");     // 模糊地址:/user/*     
                                                                                        //*代表任意一层     **代表任意多层

在Spring MVC中,我们可以使用JSR 303(Bean Validation)注解来进行参数校验。JSR 303定义了一组标准的注解,可以用于对Java Bean的属性进行验证。
常用的JSR 303注解包括:
@NotNull:表示属性不能为null。
@NotEmpty:表示字符串不能为空,集合不能为空。
@NotBlank:表示字符串不能为空,且长度必须大于0。
@Size:表示属性的大小必须在指定的范围内。
@Min:表示属性的最小值。
@Max:表示属性的最大值。
@Pattern:表示属性必须匹配指定的正则表达式。
@Email:表示属性必须是一个有效的电子邮件地址。

导入依赖

        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-validator</artifactId>
            <version>8.0.0.Final</version>
        </dependency>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-validator-annotation-processor</artifactId>
            <version>8.0.0.Final</version>
        </dependency>

步骤:1.在实体类中添加注解

public class User1 {

    @NotBlank
    private String name;        //不为空
    @Length(min=6)
    private String password;    //长度大于6位
    @Min(1)
    private int age;            //>=1
    @Email
    private String email;       //邮箱格式
    @Past
    private Date birthday;      //过去时间
}

2.handler(@Validated 实体类 实体类对象)

@RestController
@RequestMapping("user1")
public class UserController1 {

    @PostMapping("register")
    public Object register(@Validated @RequestBody User1 user1, BindingResult result){

        //BindingResult 获取错误,绑定错误,不会直接返回
        if(result.hasErrors()){

            Map data=new HashMap();
            data.put("code",400);
            data.put("msg","参数错误");
            return data;
        }
        return user1;
    }
}

原文链接: https://blog.csdn.net/qq_53568730/article/details/135521333

标签: #SpringMVC 58 #JAVA 991
相关文章

Spring 实现 3 种异步接口 2024-10-18 09:07

大家好,我是苏三~ 如何处理比较耗时的接口? 这题我熟,直接上异步接口,使用 Callable、WebAsyncTask 和 DeferredResult、CompletableFuture等均可实现。 但这些方法有局限性,处理结果仅返回单个值。在某些场景下,如果需要接口异步处理的同时,还持续不断地

重学SpringBoot3-集成Redis(五)之布隆过滤器 2024-10-08 11:24

更多SpringBoot3内容请关注我的专栏:《SpringBoot3》 期待您的点赞👍收藏⭐评论✍ 重学SpringBoot3-集成Redis(五)之布隆过滤器 1. 什么是布隆过滤器? * 基本概念 适用场景 2. 使用 Redis 实现布隆过滤器 * 项目依赖 Redis 配置

SpringBoot整合异步任务执行 2024-10-08 11:24

同步任务: 同步任务是在单线程中按顺序执行,每次只有一个任务在执行,不会引发线程安全和数据一致性等 并发问题 同步任务需要等待任务执行完成后才能执行下一个任务,无法同时处理多个任务,响应慢,影响用 户体验 异步任务: 异步任务是在多线程中同时执行,多个任务可以并发执行,同时处理多个请求,响应快,资源

springboot kafka多数据源,通过配置动态加载发送者和消费者 2024-10-08 11:24

前言 最近做项目,需要支持kafka多数据源,实际上我们也可以通过代码固定写死多套kafka集群逻辑,但是如果需要不修改代码扩展呢,因为kafka本身不处理额外逻辑,只是起到削峰,和数据的传递,那么就需要对架构做一定的设计了。 准备test kafka本身非常容易上手,如果我们需要单元测试,引入ja

SpringBoot 集成 Redis 2024-10-08 11:24

一:SpringBoot 集成 Redis ①Redis是一个 NoSQL(not only)数据库, 常作用缓存 Cache 使用。 ②Redis是一个中间件、是一个独立的服务器;常用的数据类型: string , hash ,set ,zset , list ③通过Redis客户端可以使用多种语

SpringBoot整合QQ邮箱 2024-10-08 11:24

SpringBoot可以通过导入依赖的方式集成多种技术,这当然少不了我们常用的邮箱,现在本章演示SpringBoot整合QQ邮箱发送邮件…. 下面按步骤进行: 1.获取QQ邮箱授权码 1.1 登录QQ邮箱 1.2 开启SMTP服务 找到下图中的SMTP服务区域,如果当前账号未开启的话自己手动开启。

目录

IT 外包服务商

  • 意见投递
  • zyf6619

软件开发应用

主菜单

  • 首页
  • 软件开发
  • 计算机基础
  • Hello Halo
  • 新手必读
  • 关于本知识库
Copyright © 2024 your company All Rights Reserved. Powered by Halo.