1.配置拦截器

  在springMVC.xml配置文件增加:

  <mvc:interceptors>
<!-- 日志拦截器 -->
<mvc:interceptor>
<mvc:mapping path="/**" />
<mvc:exclude-mapping path="/static/**" />
<bean class="拦截器java代码路径" />
</mvc:interceptor>
</mvc:interceptors>

  说明:

  1)mvc:mapping 拦截器路径配置

  2)mvc:exclude-mapping 拦截器不需要拦截的路径

  2、样例:

 public class LogsInterceptor extends HandlerInterceptorAdapter {

     private static final Logger logger = LoggerFactory.getLogger(LogsInterceptor.class);

     private  NamedThreadLocal<String> logContext = new NamedThreadLocal<String>("log-id");

     @Autowired
private TLogDao logDao; /**
* preHandle方法是进行处理器拦截用的,顾名思义,该方法将在Controller处理之前进行调用,
* SpringMVC中的Interceptor拦截器是链式的,可以同时存在多个Interceptor,
* 然后SpringMVC会根据声明的前后顺序一个接一个的执行,
* 而且所有的Interceptor中的preHandle方法都会在Controller方法调用之前调用。
* SpringMVC的这种Interceptor链式结构也是可以进行中断的,
* 这种中断方式是令preHandle的返回值为false,当preHandle的返回值为false的时候整个请求就结束了。
*/
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
String host = request.getRemoteHost();
String url = request.getRequestURI();
TLogEntity entity = new TLogEntity();
entity.setCreateTime(new Timestamp(System.currentTimeMillis()));
entity.setCreateUser("admin");
entity.setIpAddress(host);
entity.setLogUrl(url);
entity.setIsSuccess("N");
logDao.save(entity);
logContext.set(entity.getLogId()); logger.debug("IP为---->>> " + host + " <<<-----访问了系统");
return true;
} /**
* 这个方法只会在当前这个Interceptor的preHandle方法返回值为true的时候才会执行。
* postHandle是进行处理器拦截用的,它的执行时间是在处理器进行处理之 后, 也就是在Controller的方法调用之后执行,
* 但是它会在DispatcherServlet进行视图的渲染之前执行,也就是说在这个方法中你可以对ModelAndView进行操作。
* 这个方法的链式结构跟正常访问的方向是相反的,也就是说先声明的Interceptor拦截器该方法反而会后调用,
* 这跟Struts2里面的拦截器的执行过程有点像,
* 只是Struts2里面的intercept方法中要手动的调用ActionInvocation的invoke方法,
* Struts2中调用ActionInvocation的invoke方法就是调用下一个Interceptor或者是调用action,
* 然后要在Interceptor之前调用的内容都写在调用invoke之前,要在Interceptor之后调用的内容都写在调用invoke方法之后。
*/
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
} /**
* 该方法也是需要当前对应的Interceptor的preHandle方法的返回值为true时才会执行。
* 该方法将在整个请求完成之后,也就是DispatcherServlet渲染了视图执行, 这个方法的主要作用是用于清理资源的,
*/
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {
String host = request.getRemoteHost();
String logId = logContext.get();
TLogEntity entity = logDao.findOne(logId);
entity.setIsSuccess("Y");
logDao.save(entity); logger.debug("IP为---->>> " + host + " <<<-----访问成功");
} }

  在这个拦截器中,在方法执行前可以做session或权限的。

springMVC之mvc:interceptors拦截器的用法的更多相关文章

  1. springMVC <mvc:interceptors>拦截器的使用

    首先在springMVC.xml配置如下代码 <!-- 拦截器 --> <mvc:interceptors> <bean class="com.base.Acc ...

  2. SpringMVC 文件上传&拦截器&异常处理

    文件上传 Spring MVC 为文件上传提供了直接的支持,这种支持是通过即插即用的 MultipartResolver 实现的.Spring 用 Jakarta Commons FileUpload ...

  3. SpringMVC框架六:拦截器

    拦截器的概念就不介绍了: SpringMVC中拦截器的执行规则: 一个小示例展示: 我搞两个拦截器: 第一个: package org.dreamtech.springmvc.interceptor; ...

  4. SpringMVC配置session过期拦截器,返回登录页面

    spring-mvc.xml配置 <mvc:interceptors> <!-- session失效拦截器 --> <mvc:interceptor> <!- ...

  5. springmvc(5)拦截器

    1.什么是拦截器 是指通过统一的拦截从浏览器发送到服务器的请求来完成相应服务增强 2.拦截器的基本原理 可以通过配置过滤器解决乱码问题 和过滤器非常相似 3.搭建工程 注意jar包 此时的工程是完成后 ...

  6. springmvc中的拦截器interceptor用法

    1.配置拦截器 在springMVC.xml配置文件增加: 1 <mvc:interceptors> 2 <!-- 日志拦截器 --> 3 <mvc:intercepto ...

  7. SpringMVC中使用Interceptor拦截器

    SpringMVC 中的Interceptor 拦截器也是相当重要和相当有用的,它的主要作用是拦截用户的请求并进行相应的处理.比如通过它来进行权限验证,或者是来判断用户是否登陆,或者是像12306 那 ...

  8. SpringMVC 中的Interceptor 拦截器

    1.配置拦截器 在springMVC.xml配置文件增加: <mvc:interceptors>  <!-- 日志拦截器 -->  <mvc:interceptor> ...

  9. 玩转spring MVC(七)----拦截器

    继续在前边的基础上来学习spring MVC中拦截器的使用,下面通过一个例子来实现(完整项目在这里下载:http://download.csdn.net/detail/u012116457/84334 ...

随机推荐

  1. (第8篇)实时可靠的开源分布式实时计算系统——Storm

    摘要: 在Hadoop生态圈中,针对大数据进行批量计算时,通常需要一个或者多个MapReduce作业来完成,但这种批量计算方式是满足不了对实时性要求高的场景.那Storm是怎么做到的呢? 博主福利 给 ...

  2. Codeforces Round #144 (Div. 2) D table

    CodeForces - 233D 题目大意给你一个n*m 的矩阵,要求你进行涂色,保证每个n*n的矩阵内都有k个点被涂色. 问你一共有多少种涂色方案. n<=100 && m& ...

  3. jquery $与jQuery

    jquery的兼容 ie8 <script type="text/javascript" src="<%=path%>/js/jquery-3.1.1. ...

  4. 001.Linux网路配置

    一 Linux的IP别名功能 1.1 简介 一块网卡具有多个IP地址的功能称为IP别名,即一块网卡可以绑定多个IP地址. 1.2 实现 [root@master ~]# vi /etc/sysconf ...

  5. C#多线程编程实战(二):线程同步

    2.1 简介 竞争条件:多个线程同时使用共享对象.需要同步这些线程使得共享对象的操作能够以正确的顺序执行 线程同步问题:多线程的执行并没有正确的同步,当一个线程执行递增和递减操作时,其他线程需要依次等 ...

  6. OpenStack-Zun 使用

    Zun组件简介 Zun是Openstack中提供容器管理服务的组件,于2016年6月建立.Zun的目标是提供统一的Openstack API用于启动和管理容器,支持多种容器技术.Zun原来称为Higg ...

  7. APIO2018 铜滚记

    「一旦闭上双眼,就昏昏欲睡」「仿佛与这个世界的联系,被瞬间切断」「可是,负罪感与背德感又会在黑暗中将我吞噬」「即使这样,却也无法与身体的疲惫抗衡」 「如果,这些东西也无法让意识的存在稳定下来的话」「那 ...

  8. BZOJ.2816.[ZJOI2012]网络(LCT)

    题目链接 BZOJ 洛谷 对每种颜色维护一个LCT,保存点之间的连接关系. 修改权值A[x]和所有Max[x]都要改: 修改边的颜色先枚举所有颜色,看是否在某种颜色中有边,然后断开.(枚举一遍就行啊 ...

  9. [国家集训队]Crash的数字表格

    Description: 求$ \sum_{i=1}^n \sum_{j=1}^m lcm(i,j) $ Hint: $ n,m<=10^7 $ Solution: 这题有每次询问 \(O(n) ...

  10. C++学习笔记44:继承与派生

    类的组合,类的继承 类的组合(汽车类,轮子类,此时可以把轮子类组合到汽车类:) 类的继承(交通工具类,汽车类,此时汽车类可以派生自交通工具类:) 组合:常用描述has a.. 继承:常用描述is a ...