一、要实现的一个功能:

  1、打开特定的一些页面时必需强制用户进行登录。

  2、登录后再返回到之前的页面。

二、先写一个service,实现从cookie中判断用户是否登录。

  1、TT_TOKEN为登录成功时,响应给浏览器的Cookie的键。

@Service
public class UserServiceImpl implements UserService{@Value("${SSO_BASE_URL}")private String SSO_BASE_URL;@Value("${SSO_USER_INFO}")private String SSO_USER_INFO;@Overridepublic TbUser getCookieByToken(HttpServletRequest request, HttpServletResponse response) {try{String token = CookieUtils.getCookieValue(request, "TT_TOKEN");if (StringUtils.isBlank(token)) {return null;}//cookie中如果取到值,调用sso服务从cookie取到用户信息String json = HttpClientUtil.doGet(SSO_BASE_URL + SSO_USER_INFO + token);TaotaoResult result = TaotaoResult.format(json);if (result.getStatus() != 200) {return null;}result = TaotaoResult.formatToPojo(json, TbUser.class);TbUser user = (TbUser) result.getData();return user;}catch (Exception e) {e.printStackTrace();return null;}}
}

二、拦截器代码如下

  1、定义一个拦截器LoginInterceptor实现spring mvc的接口HandlerInterceptor。

  2、重写里面三个方法。

public class LoginInterceptor implements HandlerInterceptor{@Autowiredprivate UserService userService;@Value("${SSO_LOGIN_URL}")private String SSO_LOGIN_URL;@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {TbUser user = userService.getCookieByToken(request, response);if (user == null) {response.sendRedirect(SSO_LOGIN_URL + "?redirectUrl=" + request.getRequestURL());return false;}return true;//返回false说明拦截, true放行
    }@Overridepublic void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {//拦截后,返回modelAndView之前
    }@Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {//返回modelAndView之后
    }
}

三、在spingmvc.xml配置拦截器

<!-- 配置拦截器--><mvc:interceptors><mvc:interceptor><mvc:mapping path="/item/**"/><bean class="com.taotao.portal.Interceptor.LoginInterceptor" /></mvc:interceptor></mvc:interceptors>

  1、path为要拦截的路径。

  2、bean写拦截器的全限定类名。

转载于:https://www.cnblogs.com/huclouy/p/9484483.html

Spring mvc中自定义拦截器相关推荐

  1. spring mvc中的拦截器

    本文说下spring MVC中的拦截器 文章目录 拦截器介绍 拦截器注入适配器 自定义拦截器 controller测试 测试结果 本文小结 拦截器介绍 拦截器是在servlet执行之前执行的程序(这里 ...

  2. Spring MVC中的拦截器/过滤器HandlerInterceptorAdapter的使用

    转载自 https://www.cnblogs.com/EasonJim/p/7704740.html 一般情况下,对来自浏览器的请求的拦截,是利用Filter实现的 而在Spring中,基于Filt ...

  3. 【Spring MVC】自定义拦截器 Interceptor

    一.自定义拦截器 1.拦截器,跟过滤器比较像的技术. 1.1 拦截器和过滤器的区别: 拦截器只能拦Controller,Filter可以拦任何请求 因为Spring的入口是dispatcherServ ...

  4. 拦截webapp下jsp_Spring MVC中的拦截器/过滤器HandlerInterceptorAdapter的使用

    I分享永久IDEA激活码:ntelliJ IDEA 2020.1.2 激活码,永久有效(点击该链接)! 一般情况下,对来自浏览器的请求的拦截,是利用Filter实现的 而在Spring中,基于Filt ...

  5. jsp中的url拼接的参数传递到controller乱码_Spring MVC中的拦截器

    拦截器是 AOP 编程思想的典型应用 详述 Spring MVC 框架中拦截器 Interceptor 的使用方法​blog.csdn.net 实现 1:创建一个controller类 package ...

  6. springboot-2.2.5中自定义拦截器、静态资源映射、视图控制器和其他功能

    在spring-boot-2.2.5中对MVC自动配置类进行的更改,之前的WebMvcConfigurerAdapter类声明为过时的,现在进行自定义扩展需要实现WebMvcConfigurer类重写 ...

  7. SpringBoot中自定义拦截器

    场景 自定义拦截器,通过继承WebMvcConfigureAdapter然后重写父类中的方法进行扩展. 项目搭建专栏: https://blog.csdn.net/BADAO_LIUMANG_QIZH ...

  8. Spring MVC 中自定义视图 @Component 及 配置 多个视图解析器 Excel视图

    首先我们建立一个自己的View实现View接口.要注意在类上面加上@Component的注解,因为看BeanNameViewResolver的源码知道,是直接从ioc容器里面拿的根据名字拿的视图,所以 ...

  9. spring MVC - Inteceptors(拦截器)

    Spring的Interceptor(拦截器)是Controller 方法级别的 当某一个Controller的方法进行request处理的时候 可以通过Interceptor进行拦截, 拦截器可以在 ...

最新文章

  1. 20秋PHP作业3,北语20秋《PHP》作业3【标准答案】
  2. Hibernate中两种获取Session的方式
  3. ASIHTTPRequest取消异步请求
  4. 自定义YUM软件仓库----FTP网络YUM源-----网络YUM源的配置
  5. ((sizeof(n)+sizeof(int)-1)~(sizeof(int)-1))
  6. css的fill属性,css column-fill属性怎么用
  7. jQuery源码研究学习笔记(二)
  8. 进程的优先级设置与获取,进程时间
  9. macbook数据线连接手机_MacBook可以为iPhone进行快充吗?用MacBook为iPhone充电好不好?...
  10. mac虚拟机linux性能测试,Veertu 1.0.4 – Mac上最轻便的虚拟机,可以运行Windows/Linux。...
  11. 分享97个上传下载PHP源码,总有一款适合你
  12. 苹果iPod设计及商业操作内幕
  13. Javascript多功能计算器
  14. Mac 编译 llvm / mlir
  15. 惠普星 TP01-055ccn电脑重装系统步骤
  16. Python : numpy花式切片
  17. 7-4 最短路径之Dijkstra(朴素dijkstra打印路径)
  18. 企业微信欢迎语如何将链接转换为图文卡片形式?
  19. SwitchyOmega代理插件的安装与使用教程
  20. idm一个网站不能下载两次?这几个办法彻底解决

热门文章

  1. 一文带你了解企业上云数据分析首选产品Quick BI
  2. 让评审人爱上你的8个要点
  3. 从人工到机器智能,盗版监测在 AI 时代如何破局?
  4. flight php 中文,PHP: composer的简单使用
  5. 慢查询日志中出现超大时间的案例分析
  6. ORACLE 11g R2 RAC群集堆栈的关闭过程分析
  7. OCM备考 三. Managing Database Availability 之RMAN日常操作
  8. tomcat启动startup.bat一闪而过 全面解决,大佬牛逼,转载
  9. UML类图与类的关系详解【转】
  10. Ubuntu安装Chrome及hosts修改