栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

SpringBoot 拦截器

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SpringBoot 拦截器

SpringBoot 拦截器

Spring MVC 的拦截器(Interceptor)与 Java Servlet 的过滤器(Filter)类似,它主要用于拦截用户的请求并做相应的处理,通常应用与权限验证、记录请求消息的日志、判断用户是否登录等功能。

SpringMVC 中的自定义拦截器,可以通过实现 HandlerInterceptor 接口来定义。重点重写preHandle()方法。

preHandle():这个方法在业务处理器处理请求之前被调用,可以在这个方法中进行一些前置初始化操作或者是对当前请求的一个预处理,也可以在这个方法中进行一些判断来决定请求是否要继续进行下去。该方法的返回值是布尔值Boolean 类型的,当它返回为false 时,表示请求结束,后续的Interceptor 和 Controller 都不会执行;当返回值为true是就会继续调用下一个 Interceptor 的 preHandle 方法,如果已经是最后一个Interceptor 的时候就会是调用当前请求的 Controller 方法。

定义拦截器

public class LoginInterceptor implements HandlerInterceptor {
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        //得到登录用户
        Object obj = request.getSession().getAttribute("loginUser");
        if (obj == null){//没有登录
            response.sendRedirect("/login.html?errorInfo=noland");
            //没有通过,不能继续访问目标资源
            return false;
        }
        //通过拦截器,继续访问目标资源
        return true;
    }
}

注册拦截器

拦截器定义后,必须要完成注册,才能被Spring 容器所识别。在注册时,需要指定拦截的范围

@Configuration
public class WebConfig implements WebMvcConfigurer {
    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new LoginInterceptor())//注册拦截器
                .addPathPatterns("/index.html");//定义拦截范围
    }
}
文件上传

文件上传是将客户本地的文字、图片、视频等上传给 WEB 服务器。

文件上传,要求客户端必须以 POSH 方式提交,并在表单中添加 enctype=“multipart/form-data” 属性

用户名:
头像:

在application.yml文件添加文件大小设置

server:
  port: 8088

spring:
  servlet:
    multipart:
      maxFileSize: 20MB
      maxRequestSize: 100MB
 public String add(String userName, @RequestParam("face") MultipartFile mf) throws IOException {
//        得到客户端上传文件的文件名
        String fileName = mf.getOriginalFilename();
        //将上传文件的二进制数据保存到服务器本地文件
        mf.transferTo(new File("/Users/mac/Desktop/javaWeb/interceptor
/src/main/resources/static
/userface/"+fileName));

        return "ok";
    }

在配置类中,注册上传文件路径的映射

@Configuration
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/face/**")
                .addResourceLocations("file:/Users/mac/Desktop/javaWeb/interceptor
/src/main/resources/static/userface/");
    }
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1003396.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号