这个代码写了很久了,多久呢?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. PAT (Advanced Level) 1032. Sharing (25)

    简单题,不过数据中好像存在有环的链表...... #include<iostream> #include<cstring> #include<cmath> #inc ...

  2. [Bzoj1499][NOI2005]瑰丽华尔兹[简单DP]

    1499: [NOI2005]瑰丽华尔兹 Time Limit: 3 Sec  Memory Limit: 64 MBSubmit: 1714  Solved: 1042[Submit][Status ...

  3. 信号量学习 & 共享内存同步

    刚刚这篇文章学习了共享内存:http://www.cnblogs.com/charlesblc/p/6142139.html 里面也提到了共享内存,自己不进行同步,需要其他手段比如信号量来进行.那么现 ...

  4. 【python】对象和面向对象

    类的定义 python支持多重继承,在类名后面的小括号中,可以列出多个类名,以逗号分割. __init__方法在类的实例创建后被立即调用,注意与c++中构造函数不一样,因为对象在调用__init__时 ...

  5. 再说javascript 的__proto__ 和prototype 属性

    过了一段时间,没写 原生的 javascript 的了,感觉天天在用框架写代码,框架写代码完全限定死了你所需要思考的东西,只是在处理一些业务逻辑,真正的代码 都感觉不会写了. 突然发现,框架用的不熟悉 ...

  6. Windows和linux双系统——改动默认启动顺序

    电脑上装了Windows 7和Ubantu双系统,因为Linux系统用的次数比較少而且还是默认的启动项对此非常不能容忍,因此得改动Windows为默认的启动项. 因为电脑上的系统引导程序是GRUB,因 ...

  7. Failed to load resource: the server responded with a status of 404 (Not Found)

    Failed to load resource: the server responded with a status of 404 (Not Found) 报错情况:图标加载失败 原因分析:路径错误 ...

  8. python学习第一

    #python学习day1#一.变量#变量命名规范:#驼峰命名法:AgeOfPlane#下划线命名(推荐):age_of_plane#变量格式同C/C++#注意:变量不以中文命名:变量不宜过长:变量因 ...

  9. [LeetCode]Two Sum 【Vector全局指针的使用】

    无序数组返回两个元素和为给定值的下标. tricks:无序.返回下标增序.返回的是原始数组的下标. vector<int>*pa; bool cmp(int x,int y){ retur ...

  10. asp.net项目与开源单点登录项目CAS的结合

    这段时间搞的一个asp.net mvc项目,采用了单点登录. 这个单点登录就是CAS,一个开源的JAVA项目.当然,这并不影响ASP.NET项目结合它来进行登录.因为各自分工不同:单点登录(管它是不是 ...