转发地址:https://www.iteye.com/blog/wiselyman-2214292

4.1 拦截器

  • 拦截器实现了对每一个请求处理之前和之后进行相关的处理,类似于Servlet的filter;
  • 可以实现HandlerInterceptor接口或者继承HandlerInterceptorAdapter类;
  • 继承HandlerInterceptorAdapter类,因为使用接口要实现接口的所有方法;

4.2 示例

  • 新建拦截器
package com.wisely.interceptors;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import org.springframework.stereotype.Service;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter; public class DemoInteceptor extends HandlerInterceptorAdapter {
@Override
public boolean preHandle(HttpServletRequest request,
HttpServletResponse response, Object handler) throws Exception {
System.out.println("request开始前");
long startTime = System.currentTimeMillis();
request.setAttribute("startTime", startTime);
return true;
} @Override
public void postHandle(HttpServletRequest request,
HttpServletResponse response, Object handler,
ModelAndView modelAndView) throws Exception {
System.out.println("request结束后");
long startTime = (Long) request.getAttribute("startTime");
request.removeAttribute("startTime");
long endTime = System.currentTimeMillis();
request.setAttribute("handlingTime", endTime - startTime);
}
}
  • 修改配置,注册拦截器
package com.wisely;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import org.springframework.web.servlet.view.JstlView;
import org.springframework.web.servlet.view.UrlBasedViewResolver; import com.wisely.interceptors.DemoInteceptor; @Configuration
@ComponentScan("com.wisely")
@EnableWebMvc
public class DemoMVCConfig extends WebMvcConfigurerAdapter { @Bean
public UrlBasedViewResolver viewResolver(){
UrlBasedViewResolver resolver = new UrlBasedViewResolver();
resolver.setPrefix("/WEB-INF/views/");
resolver.setSuffix(".jsp");
resolver.setViewClass(JstlView.class);
return resolver;
}
//注册拦截器
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(demoInteceptor());
}
//自定义拦截器
@Bean
public DemoInteceptor demoInteceptor(){
return new DemoInteceptor();
} }
  • 在index.jsp添加代码接受拦截器里放置的handlingTime
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
index.jsp is here value from inteceptor 处理耗时:${handlingTime}ms </body>
</html>

输出结果

最新文章

  1. Android数据存储(二)----PreferenceFragment详解
  2. 4630 no pain no game 树状数组
  3. [C#]Linq To Xml 介绍- 转
  4. 三个入侵的必备小工具-lcx.exe、nc.exe、sc.exe
  5. Ubuntu 安装Chrome步骤
  6. 修改spfile导致oracle无法启动
  7. iostream.h 和stdio.h区别
  8. 基于Ajax的长轮询(long-polling)方式
  9. nyoj 复杂度
  10. 关于ruby gem无法连接到rubygems.org的解决方案
  11. Django 【orm】或
  12. C - 继续畅通工程 最小生成树
  13. Linux如何修改和查询时区时间
  14. Linux 重启网络提示找不到eth0(no device found for “System eth0”)
  15. java compareTo() 用法注意点
  16. java hibernate Criteria 删除数据 delete data 2种方法
  17. windows 查看端口号,杀进程
  18. noip2012 P1081 开车旅行
  19. ftok函数例子
  20. php图像处理函数image_type_to_extension、image_type_to_mime_type 的区别

热门文章

  1. jumpserver 安装
  2. Xshell5 安装JDK
  3. js之大文件断点续传
  4. learning java Runtime 类 获取内存及处理器核数信息
  5. Poj 3261 Milk Patterns(后缀数组+二分答案)
  6. Three.js中的div标签跟随(模型弹框)
  7. 区块链阶段1-Linux基础- 2 Linux文件系统
  8. [CTF]CTF中if (md5(md5($_GET[‘a’])) == md5($_GET[‘b’])) 的绕过
  9. c标签简单应用
  10. Ubuntu16.04 配置vnc4server