精华内容
下载资源
问答
  • SpringBoot拦截器

    2021-05-28 15:08:46
    SpringBoot拦截器
  • springboot拦截器

    2018-06-08 10:08:48
    springboot 拦截器配置,有需要的可以下载,其实还是很方便的。
  • springboot 拦截器

    2020-09-03 09:25:08
    springboot 拦截器 首先创建一个包,包里有两个类 logininterceptor 类里面 Myconfiger 类为拦截配置类 放行方法 ,拦截方法和静态资源

    springboot 拦截器

    首先创建一个包,包里有两个类
    在这里插入图片描述
    logininterceptor 类里面

    在这里插入图片描述

    Myconfiger 类为拦截配置类 放行方法 ,拦截方法和静态资源
    在这里插入图片描述

    展开全文
  • SpringBoot 拦截器

    2019-11-11 20:55:35
    web拦截器作用有权限控制,日志记录等等。SpringBoot 提供 HandlerInterceptor方便我们开发; 我们定义一个自定义拦截器 实现HandlerInterceptor接口,实现三个方法,preHandle是 请求处理之前调用,postHandle是...

    web拦截器作用有权限控制,日志记录等等。SpringBoot 提供 HandlerInterceptor方便我们开发;

    我们定义一个自定义拦截器 实现HandlerInterceptor接口,实现三个方法,preHandle是 请求处理之前调用,postHandle是请求处理之后并且视图渲染之前调用,afterCompletion请求结束之后并且视图渲染之后调用;(很重要)

    我们再定义一个类继承WebMvcConfigurerAdapter,重写addInterceptors,我们把自定义拦截器添加到拦截器链中去。
    z
    简单搞个控制器类测试下;
    在这里插入图片描述
    项目配置文件配置下:
    在这里插入图片描述
    启动项目,运行 http://localhost/user/login
    在这里插入图片描述

    展开全文
  • Springboot 拦截器

    千次阅读 2019-05-02 11:44:58
    (1)创建拦截器类 LoginInterceptor,并继承HandlerInterceptorAdapter 接口,重写 preHandle() 方法。 package com.zyq.interceptor; import java.io.PrintWriter; import javax.servlet.http.HttpSer...

    例子:验证用户登录,如果用户未登录,则给出对应提示

    (1)创建拦截器类 LoginInterceptor,并继承 HandlerInterceptorAdapter 接口,重写 preHandle() 方法。

    package com.zyq.interceptor;
    
    import java.io.PrintWriter;
    
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import org.springframework.web.servlet.ModelAndView;
    import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
    
    import com.zyq.beans.SessionKey;
    
    /**
     * 登录拦截器(判断用户是否登录)
     * @author zyq
     * @date 2019-04-23
     */
    public class LoginInterceptor extends HandlerInterceptorAdapter {
    
        @Override
        public boolean preHandle(HttpServletRequest request,
                HttpServletResponse response, Object handler) throws Exception {
            // 从session中获取用户对象(该对象在用户登录的时候存于session中)
            Object object = request.getSession().getAttribute(SessionKey.USER_OBJECT);
            // 用户未登录,则返回false, 拦截该请求
            if (object == null) {
                PrintWriter printWriter = response.getWriter();
                printWriter.write("请登录");
                return false;
            }
            // 用户已登录,则返回true, 放行该请求
            return true;
        }
    
        @Override
        public void afterCompletion(HttpServletRequest request,
                HttpServletResponse response, Object handler, Exception ex)
                throws Exception {
            // TODO Auto-generated method stub
            super.afterCompletion(request, response, handler, ex);
        }
    
        @Override
        public void afterConcurrentHandlingStarted(HttpServletRequest request,
                HttpServletResponse response, Object handler) throws Exception {
            // TODO Auto-generated method stub
            super.afterConcurrentHandlingStarted(request, response, handler);
        }
    
        @Override
        public void postHandle(HttpServletRequest request,
                HttpServletResponse response, Object handler,
                ModelAndView modelAndView) throws Exception {
            // TODO Auto-generated method stub
            super.postHandle(request, response, handler, modelAndView);
        }
    
    }
    

    (2)建立配置类 WebConfig,实现 WebMvcConfigurer,记得打上 @Configuration 注解

    这里拦截的为域名/self/路径下的所有请求

    package com.zyq.config;
    
    import org.springframework.context.annotation.Configuration;
    import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
    import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
    
    import com.zyq.interceptor.LoginInterceptor;
    
    @Configuration
    public class WebConfig implements WebMvcConfigurer {
    
        @Override
        public void addInterceptors(InterceptorRegistry registry) {
            registry.addInterceptor(new LoginInterceptor()) 
            .addPathPatterns("/self/**"); 
        }
    
    }
    

    (3)启动程序,在未登录的情况下,访问相关页面

    展开全文
  • SpringBoot拦截器实现登录拦截

    万次阅读 多人点赞 2019-07-12 22:27:29
    SpringBoot拦截器可以做什么 可以对URL路径进行拦截,可以用于权限验证、解决乱码、操作日志记录、性能监控、异常处理等 SpringBoot拦截器实现登录拦截 pom.xml: <?xml version="1.0" encoding="UTF-8"?> ...
    • 源码

    GitHub:https://github.com/291685399/springboot-learning/tree/master/springboot-interceptor01

    • SpringBoot拦截器可以做什么

    可以对URL路径进行拦截,可以用于权限验证、解决乱码、操作日志记录、性能监控、异常处理等

    • SpringBoot拦截器实现登录拦截

    pom.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.0.0.RELEASE</version>
            <relativePath/>
        </parent>
        <groupId>com.wyj</groupId>
        <artifactId>springboot-interceptor01</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <name>springboot-interceptor01</name>
        <description>springboot拦截器</description>
    
        <properties>
            <java.version>1.8</java.version>
        </properties>
    
        <dependencies>
            <!-- springboot -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-devtools</artifactId>
                <scope>runtime</scope>
                <optional>true</optional>
            </dependency>
    
            <!-- lombok -->
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <optional>true</optional>
            </dependency>
    
            <!-- thymeleaf -->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-thymeleaf</artifactId>
            </dependency>
        </dependencies>
    
        <build>
            <finalName>springboot-interceptor01</finalName>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
            </plugins>
        </build>
    </project>
    

    WebMvcConfigurer:继承WebMvcConfigurationSupport类,重写addInterceptors方法

    /**
     * 在springboot2.0.0之后,WebMvcConfigurerAdapter已经过时了
     * 会使用WebMvcConfigurer或者WebMvcConfigurationSupport替代
     *
     * @author wyj
     * @create 2019-06-01 21:48
     */
    @Configuration
    public class WebMvcConfigurer extends WebMvcConfigurationSupport {
    
        /**
         * 在springboot2.0.0之前继承WebMvcConfigurerAdapter类,重写addInterceptors方法
         *
         * @param registry
         */
    //    @Override
    //    public void addInterceptors(InterceptorRegistry registry) {
    //        /**
    //         * 拦截器按照顺序执行,如果不同拦截器拦截存在相同的URL,前面的拦截器会执行,后面的拦截器将不执行
    //         */
    //        registry.addInterceptor(new AuthorityInterceptor())
    //                .addPathPatterns("/user/**");
    //        super.addInterceptors(registry);
    //    }
    
        /**
         * 在springboot2.0.0之后实现WebMvcConfigurer接口,重写addInterceptors方法
         *
         * @param registry
         */
    //    @Override
    //    public void addInterceptors(InterceptorRegistry registry) {
    //        /**
    //         * 拦截器按照顺序执行,如果不同拦截器拦截存在相同的URL,前面的拦截器会执行,后面的拦截器将不执行
    //         */
    //        registry.addInterceptor(new AuthorityInterceptor())
    //                .addPathPatterns("/user/**");
    //    }
    
        /**
         * 在springboot2.0.0之后继承WebMvcConfigurationSupport类,重写addInterceptors方法
         *
         * @param registry
         */
        @Override
        protected void addInterceptors(InterceptorRegistry registry) {
            /**
             * 拦截器按照顺序执行,如果不同拦截器拦截存在相同的URL,前面的拦截器会执行,后面的拦截器将不执行
             */
            registry.addInterceptor(new AuthorityInterceptor())
                    .addPathPatterns("/user/**");
            super.addInterceptors(registry);
        }
    }
    

    AuthorityInterceptor:实现HandlerInterceptor接口,重写preHandlepostHandleafterCompletion方法

    preHandle:在请求处理之前进行调用(Controller方法调用之前)
    postHandle:请求处理之后进行调用,但是在视图被渲染之前(Controller方法调用之后)
    afterCompletion:在整个请求结束之后被调用,也就是在DispatcherServlet 渲染了对应的视图之后执行(主要是用于进行资源清理工作)

    @Slf4j
    public class AuthorityInterceptor implements HandlerInterceptor {
    
        private static final Set<String> NOT_INTERCEPT_URI = new HashSet<>();//不拦截的URI
    
        static {
            NOT_INTERCEPT_URI.add("/user/login.html");
            NOT_INTERCEPT_URI.add("/user/login");
        }
    
        /**
         * 在请求处理之前进行调用(Controller方法调用之前)
         */
        @Override
        public boolean preHandle(HttpServletRequest request, HttpServletResponse response,
                                 Object object) throws Exception {
            String uri = request.getRequestURI();
            if (NOT_INTERCEPT_URI.contains(uri)) {
                log.info("不拦截" + uri);
                return true;
            }
            log.info("拦截" + uri);
            HttpSession session = request.getSession();
            UserInfo userInfo = (UserInfo) session.getAttribute("user_info_in_the_session");
            if (userInfo == null) {
                throw new RuntimeException("用户未登陆");
            }
            return true;
        }
    
        /**
         * 请求处理之后进行调用,但是在视图被渲染之前(Controller方法调用之后)
         */
        @Override
        public void postHandle(HttpServletRequest request, HttpServletResponse response, Object object, ModelAndView mv) throws Exception {
        }
    
        /**
         * 在整个请求结束之后被调用,也就是在DispatcherServlet 渲染了对应的视图之后执行
         * (主要是用于进行资源清理工作)
         */
        @Override
        public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object object, Exception ex) throws Exception {
        }
    }
    

    UserController

    @Controller
    @RequestMapping(value = "/user")
    public class UserController {
    
        @RequestMapping(value = "/login.html")
        public String index() {
            return "login";
        }
    
        @RequestMapping(value = "/login")
        public String login(User user) {
            //查询数据库,我这里直接写死
            User dbUser = new User(1, "zhangsan", "123456", "admin");
            if (dbUser.getPassword().equals(user.getPassword())) {
                UserInfo userInfo = new UserInfo(dbUser.getId(), dbUser.getUsername(), dbUser.getRole());
                HttpSession session = getRequest().getSession();
                session.setAttribute("user_info_in_the_session", userInfo);
                return "admin";
            }
            return "login";
        }
    
        @RequestMapping(value = "/userInfo")
        @ResponseBody
        public String userInfo() {
            HttpSession session = getRequest().getSession();
            UserInfo userInfo = (UserInfo) session.getAttribute("user_info_in_the_session");
            return userInfo.toString();
        }
    
        private HttpServletRequest getRequest() {
            return ((ServletRequestAttributes) RequestContextHolder.currentRequestAttributes()).getRequest();
        }
    }
    

    User:

    @Data
    @NoArgsConstructor
    @AllArgsConstructor
    public class User implements Serializable {
    
        private int id;
        private String username;
        private String password;
        private String role;
    
    }
    

    UserInfo: 用于存在用户信息储存在session中

    @Data
    @NoArgsConstructor
    @AllArgsConstructor
    public class UserInfo implements Serializable {
    
        private int id;
        private String username; 
        private String role;
    
    }
    

    login.html:只是一个很简单的登录表单

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>登陆页面</title>
    </head>
    <body>
    <form action="/user/login" method="post">
        登陆:<br/>
        用户名:<input name="username" id="username" type="text"/><br/>&nbsp;&nbsp;&nbsp;码:<input name="password" id="password" type="password"/><br/>
        <input type="submit" value="登陆"/>
    </form>
    </body>
    </html>
    

    admin.html:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>首页</title>
    </head>
    <body>
    <form action="/user/userInfo" method="get">
        <input type="submit" value="用户信息"/></form>
    </body>
    </html>
    
    展开全文
  • Springboot 拦截器链 - 加载拦截器

    千次阅读 2018-04-01 17:30:39
    Springboot 拦截器链 - 加载拦截器 1.创建拦截器 // 创建拦截器需要实现 HandlerInterceptor 接口 @Slf4j public class HandleInterceptorImpl implements HandlerInterceptor{ @Override public boolean...
  • 主要介绍了SpringBoot拦截器实现登录拦截的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
  • SpringBoot 拦截器配置

    2018-11-16 19:27:51
    SpringBoot 拦截器配置 springboot继承springMvc拦截配置跟springmvc拦截器配置并没有什么大的区别 继承 HandlerInterceptorAdapter 类 定义一个拦截器 继承 WebMvcConfigurerAdapter根据注册添加到 设置需要...
  • 主要介绍了SpringBoot拦截器Filter的使用方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • 主要介绍了SpringBoot拦截器原理解析及使用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • SpringBoot拦截器配置

    千次阅读 2018-11-30 16:05:45
    SpringBoot拦截器配置 自定义拦截器: com.example.mybatis2018.interceptor.MyInterCeptor package com.example.mybatis2018.interceptor; import org.springframework.lang.Nullable; import org.spring...
  • SpringBoot拦截器的实现

    2019-10-31 10:44:02
    SpringBoot拦截器的实现一、编写拦截器:二、编写登录接口:此方法为(一)拦截器中2.的Map一、编写拦截器: 1、首先需要确定拦截器的位置,拦截器拦截当前目录以及所有子目录(递归)。 package ...
  • 本篇文章主要介绍了SpringBoot拦截器实现对404和500等错误的拦截,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
  • Springboot拦截器配置

    2020-04-24 11:02:09
    Springboot拦截器配置 编写拦截器实现类,实现HandlerInterceptor接口 package com.lloyvet.blog.config; import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet...
  • springboot拦截器拦截IP

    千次阅读 2019-01-22 15:25:09
    springboot拦截器拦截IP 新建MyWebMvcConfigurerAdapter 代码 去博客设置页面,选择一款你喜欢的代码片高亮样式,下面展示同样高亮的 代码片. import org.springframework.context.annotation.Bean; import org....
  • SpringBoot拦截器失效?

    2020-08-19 16:50:28
    SpringBoot拦截器拦截器的使用配置拦截器拦截器失效? 拦截器的使用 Springboot集成了SpringMVC拦截器,只需要简单的配置,使用起来非常简单。 配置拦截器 搭建好SpringBoot的环境,编写自定义的Interceptor类,该类...
  • SpringBoot拦截器的使用

    2021-02-17 21:19:08
    SpringBoot拦截器的使用 新建类继承HandlerInterceptor //拦截器 public class LoginHandlerInterceptor implements HandlerInterceptor { @Override public boolean preHandle(HttpServletRequest request, ...
  • SpringBoot拦截器之接口拦截配置 自定义的MVC适配器 @Configuration public class WebMvcConfig extends WebMvcConfigurerAdapter { @Override public void addViewControllers( ViewControllerRegistry ...
  • springboot拦截器(HandlerInterceptor) 拦截器:对相关路径进行拦截,在控制器前后添加自定义操作 *********************************** 相关接口 HandlerInterceptor:拦截器接口 public interface ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 44,865
精华内容 17,946
关键字:

springboot拦截器

spring 订阅