Spring Boot笔记-拦截器相关(用户权限方面)
发布日期:2021-06-30 10:41:32 浏览次数:2 分类:技术文章

本文共 6359 字,大约阅读时间需要 21 分钟。

Spring Boot拦截器的使用

使用注解@Configuration

继承WebMvcConfigurerAdapter

重写addInterceptors添加需要拦截器地址:

 

运行截图如下:

后端拦截如下:

这里主要是依靠注册拦截器实现的

这里一个拦截器可以进行多个链接过滤,只需在后面加入addPathPatterns即可

程序结构如下:

WebMvcConfig.java

package com.example.demo.config;import com.example.demo.interceptor.OneInterceptor;import com.example.demo.interceptor.TwoInterceptor;import org.springframework.context.annotation.Configuration;import org.springframework.web.servlet.config.annotation.InterceptorRegistry;import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;@Configurationpublic class WebMvcConfig extends WebMvcConfigurerAdapter {    @Override    public void addInterceptors(InterceptorRegistry registry) {        registry.addInterceptor(new OneInterceptor()).addPathPatterns("/one/**");        registry.addInterceptor(new TwoInterceptor()).addPathPatterns("/two/**");        registry.addInterceptor(new OneInterceptor()).addPathPatterns("/three/**");        registry.addInterceptor(new TwoInterceptor()).addPathPatterns("/three/**");        super.addInterceptors(registry);    }}

OneController.java

package com.example.demo.interceptor;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;@Controller@RequestMapping("one")public class OneController {    @RequestMapping("/index")    public String index(){        return "index";    }    @RequestMapping("/index2")    public String index2(){        return "index2";    }    @RequestMapping("/index3")    public String index3(){        return "index3";    }}

OneInterceptor.java

package com.example.demo.interceptor;import org.springframework.web.servlet.HandlerInterceptor;import org.springframework.web.servlet.ModelAndView;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class OneInterceptor implements HandlerInterceptor {    /**     * 在请求处理之前进行调用(Controller方法调用之前)     */    @Override    public boolean preHandle(HttpServletRequest request, HttpServletResponse response,                             Object object) throws Exception {        System.out.println("OneInterceptor preHandle");        return true;    }    @Override    public void postHandle(HttpServletRequest request, HttpServletResponse response,                           Object object, ModelAndView mv)            throws Exception {        System.out.println("OneInterceptor postHandle");    }    /**     * 在整个请求结束之后被调用,也就是在DispatcherServlet 渲染了对应的视图之后执行     * (主要是用于进行资源清理工作)     */    @Override    public void afterCompletion(HttpServletRequest request, HttpServletResponse response,                                Object object, Exception ex)            throws Exception {        System.out.println("OneInterceptor afterCompletion");    }}

ThreeController.java

package com.example.demo.interceptor;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;@Controller@RequestMapping("three")public class ThreeController {    @RequestMapping("/index")    public String index(){        return "index";    }    @RequestMapping("/index2")    public String index2(){        return "index2";    }    @RequestMapping("/index3")    public String index3(){        return "index3";    }}

TwoController.java

package com.example.demo.interceptor;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.servlet.HandlerInterceptor;import org.springframework.web.servlet.ModelAndView;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;@Controller@RequestMapping("two")public class TwoController{    @RequestMapping("/index")    public String index(){        return "index";    }    @RequestMapping("/index2")    public String index2(){        return "index2";    }    @RequestMapping("/index3")    public String index3(){        return "index3";    }}

TwoInterceptor.java

package com.example.demo.interceptor;import org.springframework.web.servlet.HandlerInterceptor;import org.springframework.web.servlet.ModelAndView;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class TwoInterceptor implements HandlerInterceptor {    /**     * 在请求处理之前进行调用(Controller方法调用之前)     */    @Override    public boolean preHandle(HttpServletRequest request, HttpServletResponse response,                             Object object) throws Exception {        System.out.println("TwoController preHandle");        return false;    }    @Override    public void postHandle(HttpServletRequest request, HttpServletResponse response,                           Object object, ModelAndView mv)            throws Exception {        System.out.println("TwoController postHandle");    }    /**     * 在整个请求结束之后被调用,也就是在DispatcherServlet 渲染了对应的视图之后执行     * (主要是用于进行资源清理工作)     */    @Override    public void afterCompletion(HttpServletRequest request, HttpServletResponse response,                                Object object, Exception ex)            throws Exception {        System.out.println("TwoController afterCompletion");    }}

index相关.html

    
INDEX

INDEX PAGE

porn.xml

4.0.0
org.springframework.boot
spring-boot-starter-parent
2.1.12.RELEASE
com.example
demo
0.0.1-SNAPSHOT
demo
Demo project for Spring Boot
1.8
org.springframework.boot
spring-boot-starter-web
org.projectlombok
lombok
true
org.springframework.boot
spring-boot-starter-test
test
org.springframework.boot
spring-boot-starter-thymeleaf
org.springframework.boot
spring-boot-maven-plugin

 

转载地址:https://it1995.blog.csdn.net/article/details/104158831 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:C++笔记-解决VS2015Qt项目MSB3758.MSB4036
下一篇:Spring Boot笔记-普通异常错误截取及构造错误页面

发表评论

最新留言

关注你微信了!
[***.104.42.241]2024年04月10日 11时29分01秒