1. springmvc 中的拦截器是由实现 HandlerInterceptor 或者继承 HandlerInterceptorAdapter 来实现的。

2. 自定义实现一个拦截器的步骤:

a). 定义一个实现 HandlerInterceptor 接口 的类

public class MyInterceptor implements HandlerInterceptor{/*** 在处理方法之前执行,一般用来做一些准备工作:比如日志,权限检查* 如果返回false 表示被拦截,将不会执行处理方法* 返回true继续执行处理方法*/@Overridepublic boolean preHandle(HttpServletRequest req, HttpServletResponse resp, Object handler) throws Exception {System.out.println("执行preHandler---------"+req.getRemoteHost()+req.getRemoteUser());resp.sendRedirect("index.jsp");return false;}/*** 在处理方法执行之后,在渲染视图执行之前执行,一般用来做一些清理工作*/@Overridepublic void postHandle(HttpServletRequest req, HttpServletResponse resp, Object handler, ModelAndView mv)throws Exception {System.out.println("执行postHandler");}/*** 在视图渲染后执行  一般用来释放资源*/@Overridepublic void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3)throws Exception {System.out.println("执行afterCompletion");}
}

b) 在 springmvc 的配置文件中 ,添加拦截器配置

<mvc:interceptors><!-- 定义一个拦截器的配置 --><mvc:interceptor><!-- mapping 指定哪些url被拦截 /*表示根路径下的所有请求被拦截-/hello.do/**表示根路径及其子路径下的所有请求被拦截/user/add.do--><mvc:mapping path="/**"/><!-- 配置拦截器的路径 --><bean class="cn.sxt.interceptor.MyInterceptor"></bean></mvc:interceptor></mvc:interceptors>

c) 测试

3. 登录拦截器实现

public class LoginInterceptor extends HandlerInterceptorAdapter{@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)throws Exception {//验证请求的地址是否是登录地址  如果是继续往下执行String uri=request.getRequestURI();uri = uri.substring(uri.lastIndexOf("/")+1);if(uri.equals("login.do")){return true;}//验证session中是否有用户存在 如果有  继续执行if(request.getSession().getAttribute("username")!=null){return true;}//执行跳转到登录页面response.sendRedirect(request.getContextPath()+"/login.jsp");return false;}
}

转载于:https://www.cnblogs.com/Vincent-yuan/p/11280240.html

java之spring mvc之拦截器相关推荐

  1. java spring 配置词典_java之spring mvc之拦截器

    java之spring mvc之拦截器 1. springmvc 中的拦截器是由实现 HandlerInterceptor 或者继承 HandlerInterceptorAdapter 来实现的. 2 ...

  2. Spring MVC 登录拦截器

    Spring MVC 登录拦截器 1.编写拦截器 package interceptor;import org.springframework.web.servlet.HandlerIntercept ...

  3. spring mvc +cookie+拦截器功能 实现系统自动登陆

    先看看我遇到的问题: @ResponseBody@RequestMapping("/logout")public Json logout(HttpSession session,H ...

  4. Spring MVC使用拦截器实现权限控制

    1.首先准备对应的架包 2.看看项目的架构 3.基本的web.xml文件 <!--?xml version="1.0" encoding="UTF-8"? ...

  5. java 中prehandle_Spring MVC中拦截器HandlerInterceptorAdapter中的preHandle方法

    拦截器:顾名思义,就是对请求进行拦截,做一些预处理.后处理或返回处理的操作 Spring MVC中使用拦截器的方法,继承HandlerInterceptorAdapter类,并根据需求实现其中的pre ...

  6. Spring MVC 之拦截器(八)

    在springMVC中实现拦截器有两种方式 1.实现HandlerInterceptor接口 2.继承HandlerInterceptorAdaptor类 编写拦截器: 1 package com.c ...

  7. 【Spring学习笔记-MVC-17】Spring MVC之拦截器

    作者:ssslinppp       1. 拦截器简介及应用场景 2. 拦截器接口及拦截器适配器 3. 运行流程图 正常运行 中断流程 4. 程序实例 控制层: @Controller @Reques ...

  8. Spring MVC 使用拦截器 HiddenHttpMethodFilter配置Rest风格的URL

    <!-- 4.使用Rest风格的URI,将页面普通的post请求转为指定的delete或者put请求 --> 详细使用请参考这篇博客:地址:http://blog.csdn.net/ppl ...

  9. (转)spring中的拦截器(HandlerInterceptor+MethodInterceptor)

    1.  过滤器跟拦截器的区别 在说拦截器之前,不得不说一下过滤器,有时候往往被这两个词搞的头大. 其实我们最先接触的就是过滤器,还记得web.xml中配置的<filter>吗~ 你应该知道 ...

最新文章

  1. 第四范式陈雨强:万字深析工业界机器学习最新黑科技
  2. GTK+, Qt, wxWidgets compare
  3. 云迹科技:站在酒店场景服务机器人的风口
  4. [译]C#中的条件断点
  5. php怎么查询数据库,php怎么查询数据库
  6. python格式化字符串漏洞_Python字符串格式化的方法(两种)
  7. Developer's Guide to Microsoft Enterprise Library, C# Edition
  8. 3.1.4 抽象类与归一化
  9. 【spring】spring源码搭建
  10. Hadoop安装教程_单机/伪分布式配置
  11. Rethinking the smaller-norm-less-infromative assumption in channel pruning of convolution layers
  12. APPCLOUD STUDIO结合 手机APPLOADER进行模拟开发
  13. 中国无线充电行业发展规模与投资可行性咨询报告2022-2027年版
  14. java 医疗监护_医疗监护仪解决方案
  15. 超定方程组和欠定方程组
  16. Typora免费版官网下载
  17. linux批量更新文件夹里,Linux下使用touch批量修改文件夹和文件的时间
  18. Excel动态图制作
  19. uni-app微信公众号登录
  20. 多边形套索及魔棒工具

热门文章

  1. 一直想说的,技术职业化
  2. python中 1.34e3_Python快速编程入门——第2章 Python基础语法
  3. 浏览器访问pdf 的url怎么加密_怎么解决加密的pdf文件?
  4. make 命令_make考点总结(建议中、高考学生收藏)
  5. python读取数据流_python3+pyshark读取wireshark数据包并追踪telnet数据流
  6. Django 页面报错 Maximum recursion depth exceeded
  7. 一、Java 面向对象高级——Object类、常用API
  8. LeetCode 5832. 构造元素不等于两相邻元素平均值的数组
  9. 天池 在线编程 回文子串(区间动态规划)
  10. LeetCode 926. 将字符串翻转到单调递增(动态规划)