springboot--页面访问拦截器
来源:互联网 发布:中国巡航导弹 知乎 编辑:程序博客网 时间:2024/05/21 22:30
页面访问拦截器
拦截器:拦截浏览器发送的请求。
很多页面我们都希望登录用户才可以访问,非登录用户则拒绝访问,这时就需要拦截器来处理请求。
自定义拦截器
新建MyHandlerInterceptor类实现HandlerInterceptor接口来定义自己的拦截器。
public class MyHandlerInterceptor implements HandlerInterceptor{ private static Logger log=LoggerFactory.getLogger(MyHandlerInterceptor.class); /** * 存储不拦截路径 */ private static final String[] IGNORE_URI = {"/index","/imagecode"}; //在请求处理之前进行调用(Controller方法调用之前) @Override public boolean preHandle(HttpServletRequest req, HttpServletResponse resp, Object handler) throws Exception { log.info("请求开始,判断是否需要拦截"); boolean flag=false; String servletPath=req.getServletPath(); log.info("请求路径:"+servletPath); //遍历数组确定该路径是否需要拦截 for(String str:IGNORE_URI){ if(servletPath.contains(str)){ flag=true; log.info("该请求不需要拦截!"); } } //拦截请求 if(!flag){ //获取session中存储的用户信息 user user = (user) req.getSession().getAttribute("user"); if(user==null){ log.info("用户未登录,返回登录页面!"); // 服务器内部转发,可以带回request req.getRequestDispatcher("/index").forward(req, resp);//拦截器的生命周期就已经结束,不会再向下执行 }else{ log.info("获取session中存储的用户信息:"+user.toString()); flag=true; } } return flag;// 只有返回true才会继续向下执行,返回false取消当前请求 } //请求处理之后进行调用,但是在视图被渲染之前(Controller方法调用之后) @Override public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3) throws Exception { log.info("请求处理之后进行调用,但是在视图被渲染之前(Controller方法调用之后)"); } //在整个请求结束之后被调用,也就是在DispatcherServlet 渲染了对应的视图之后执行(主要是用于进行资源清理工作) @Override public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3) throws Exception { log.info("在整个请求结束之后被调用,也就是在DispatcherServlet 渲染了对应的视图之后执行(主要是用于进行资源清理工作)"); }}
配置拦截器
新建配置类MyWebMvcCofig继承WebMvcConfigurerAdapter,然后重写addInterceptors方法
@Configurationpublic class MyWebMvcCofig extends WebMvcConfigurerAdapter { @Override public void addInterceptors(InterceptorRegistry registry) { //拦截规则:除了index,其他都拦截判断 // addPathPatterns 用于添加拦截规则 // excludePathPatterns 用户排除拦截 registry.addInterceptor(new MyHandlerInterceptor()).addPathPatterns("/**").excludePathPatterns("/index"); }}
栗子
不拦截请求实例
拦截请求实例
登录之后再次访问
阅读全文
0 0
- springboot--页面访问拦截器
- springboot-aop访问拦截
- springboot访问jsp页面
- springboot访问jsp页面
- 关于springboot访问页面
- SpringBoot之拦截器对数据库的访问
- spring自定义手机访问页面拦截器
- springboot 拦截器配置
- SpringBoot--实现拦截器
- springboot添加拦截器
- springboot使用拦截器
- springboot添加拦截器
- SpringBoot拦截器
- SpringBoot 自定义拦截器
- SpringBoot-拦截器
- SpringBoot之拦截器
- SpringBoot 实现拦截器
- 通过SpringBoot访问HTML页面
- puppeteer学习(一)——puppeteer与Chrome Headless
- Axios通过mock模拟数据进行通信的几种方式
- HTTP消息头网页缓存控制以及header常用指令
- python.scrapy爬虫-xpath查询语法
- nodeJS ejs模板语法(基础)
- springboot--页面访问拦截器
- 【收藏】Appium 国内下载地址(百度云盘,已更新至 1.3.4.1)
- xamarin android 发生一个或多个错误
- 算法--动态规划
- hibernate常见级联操作异常及解决方法
- C#特性和反射
- JavaEE 与 JavaSE区别
- Javascript call 和 apply 用法
- 调用系统相机拍照,并且保存到系统相册一般的方法