这个代码写了很久了,多久呢?2018年12-20号写的。。。。

废话不多说,简化一下,作为笔记。

注:

public class springmvcConfig extends WebMvcConfigurerAdapter 这种写法已废弃,WebMvcConfigurerAdapter不再推荐使用。

1:新建一个拦截器类,实现 HandlerInterceptor 接口 

 class InterceptorConfig implements HandlerInterceptor {
private static final Logger log = LoggerFactory.getLogger(Filter.class); /**
* httpServletRequest存储请求信息,如ip地址,url等
* preHandle进入Handler方法之前执行了,使用于身份认证,身份授权,登陆校验等,比如身份认证,用户没有登陆,
* 拦截不再向下执行,返回值为 false ,即可实现拦截;否则,返回true时,拦截不进行执行
**/
@Override
public boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o) throws Exception {
String ip = httpServletRequest.getRemoteAddr();
String url = httpServletRequest.getRequestURI();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
Date date = new Date();
String time = sdf.format(date);
log.info("时间:{},IP地址:{},目标URL:{}", time, ip, url); return true;
} /**
* 进入Handler方法之后,返回ModelAndView之前执行,使用场景从ModelAndView参数出发,
* 比如,将公用的模型数据在这里传入到视图,也可以统一指定显示的视图等
**/
@Override
public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception {
log.info("i am in hendler before return modelandview..."); } /**
* 在执行Handler完成后执行此方法,使用于统一的异常处理,统一的日志处理等
**/
@Override
public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception {
log.info("i am out of from handler..."); }
}

 

2:新建一个mvc配置类实现 WebMvcConfigurer 接口,并加上 @Configuration 声明其为配置类:

@Configuration
public class SpringmvcConfig implements WebMvcConfigurer{
private static final Logger log = LoggerFactory.getLogger(SpringmvcConfig.class);
//图片映射
@Value("${images.path}")
private String imagesRoot;

   //添加静态资源映射
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
log.info("图片静态资源路径:{}", imagesRoot);
     registry.addResourceHandler("/images/**").addResourceLocations(imagesRoot);
}

   //添加拦截器
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new InterceptorConfig());
}
}

3:最后上截图,并标明拦截器的个方法执行顺序,如图:

1:执行Prehandler

2:执行Controller中的代码

3:在返回ModelAndView之前执行postHandler

4:最后执行afterCompletion

 

若有不对望指正免得无人子弟,觉得写得可以的同学点个赞哦~

springMvc中实现拦截器Interceptor以及添加静态资源映射的更多相关文章

  1. springmvc中的拦截器interceptor用法

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

  2. 9.springMVC中的拦截器

    springMVC中的拦截器大概大致可以分为以下几个步骤去学习: 1.自定义一个类实现HandlerInterceptor接口,这里要了解其中几个方法的作用 2.在springMVC的配置文件中添加拦 ...

  3. SpringMVC中的拦截器、过滤器的区别、处理异常

    1. SpringMVC中的拦截器(Interceptor) 1.1. 作用 拦截器是运行在DispatcherServlet之后,在每个Controller之前的,且运行结果可以选择放行或拦截! 除 ...

  4. 【SpringMVC学习11】SpringMVC中的拦截器

    Springmvc的处理器拦截器类似于Servlet 开发中的过滤器Filter,用于对处理器进行预处理和后处理.本文主要总结一下springmvc中拦截器是如何定义的,以及测试拦截器的执行情况和使用 ...

  5. (转)SpringMVC学习(十二)——SpringMVC中的拦截器

    http://blog.csdn.net/yerenyuan_pku/article/details/72567761 SpringMVC的处理器拦截器类似于Servlet开发中的过滤器Filter, ...

  6. Spring MVC中的拦截器Interceptor

    谈谈spring中的拦截器 在web开发中,拦截器是经常用到的功能.它可以帮我们验证是否登陆.预先设置数据以及统计方法的执行效率等等.今天就来详细的谈一下spring中的拦截器.spring中拦截器主 ...

  7. SpringMVC中的拦截器

    1. 自定义拦截器 实现HandlerInterceptor接口 拦截器一: package cn.rodge.ssm.interceptor;import javax.servlet.http.Ht ...

  8. (转)Angular中的拦截器Interceptor

    什么是拦截器? 异步操作 例子 Session 注入(请求拦截器) 时间戳(请求和响应拦截器) 请求恢复 (请求异常拦截) Session 恢复 (响应异常拦截器) 转之:http://my.osch ...

  9. springmvc中配置拦截器

    -------------------------------------------- 登陆controller方法 @Controller public class LoginController ...

随机推荐

  1. ORA-01034: ORACLE not available 出错

    调用db.rlogon("sm/sm")出现以下错误 ORA-01034: ORACLE not availableORA-27101: shared memory realm d ...

  2. linux的shell的until循环举例说明

    执行脚本: sh login.sh user,其中user为第一个参数 如下所示,如果用户‘user’登录,'who | grep "$1"'为true,until循环结束,程序继 ...

  3. Github配置SSH

    以前也配置过ssh,但是没有注意用法,在配置一次熟悉流程 检查本机是否有ssh key设置 $ cd ~/.ssh 或cd .ssh 如果没有则提示: No such file or director ...

  4. Android切图注意事项

    1.App Logo大小共五种: 48*48 72*72 96*96 144*144 192*192 2. App启动页所需尺寸: 320×480 480×800 720*1280 1080*1920 ...

  5. [LeetCode][Java] Subsets

    题目: Given a set of distinct integers, nums, return all possible subsets. Note: Elements in a subset ...

  6. onfocus事件,onblur事件;Focus()方法,Blur()方法

    <1> <pre name="code" class="html"><!DOCTYPE html PUBLIC "-// ...

  7. [原创+分享]Mandelbrot Explorer

    Mandelbrot Explorer 是一款用于在MandelBort集/Julia集上进行无限漫游的软件,使用VS2013+CUDA6.5开发而成.它也是我学习CUDA开发的一个小小的成果,欢迎大 ...

  8. C语言 字符串操作 笔记

    /* C语言字符串的操作笔记 使用代码和注释结合方式记录 */ # include <stdio.h> # include <string.h> int main(void) ...

  9. Android网络编程(三)Volley使用方法全解析

    相关文章 Android网络编程(一)HTTP协议原理 Android网络编程(二)HttpClient与HttpURLConnection 前言 Volley想必许多人都用过,为了建立网络编程的知识 ...

  10. ubuntu下,创建ruby环境时出现 checking for Magick-config... no

    解决:sudo apt-get install libmagickcore-dev libmagickwand-dev