SpringMvc配置拦截器
SpringMVC可以通过配置拦截器,进行url过滤等处理。
在spring-mvc.xml的配置文件中,如下示:
其中,在<mvc:interceptors>中可以配置多个拦截器<mvc:interceptor>。
- <!--添加拦截器-->
- <mvc:interceptors>
- <mvc:interceptor>
- <!-- /** 表示拦截所有的请求-->
- <mvc:mapping path="/**"/>
- <!--以下是拦截器所在的类路径-->
- <bean class="com.interceptor.LogInterceptor"/>
- </mvc:interceptor>
- </mvc:interceptors>
然后添加拦截器类,拦截器主要是通过继承HandlerInterceptorAdapter ,重写其中的几个方法,如下示:
- import org.apache.log4j.Logger;
- import org.springframework.web.servlet.HandlerInterceptor;
- import org.springframework.web.servlet.ModelAndView;
- import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
- import javax.servlet.http.HttpServletRequest;
- import javax.servlet.http.HttpServletResponse;
- public class LogInterceptor extends HandlerInterceptorAdapter {
- private Logger logger=Logger.getLogger(LogInterceptor.class);
- /**
- * 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();
- 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) throws Exception {
- String host=request.getRemoteHost();
- logger.debug("IP为------>>"+host+"<<-----------访问成功.");
- }
- }
SpringMvc配置拦截器的更多相关文章
- springmvc 配置拦截器
package com.aaa.zxf.interceptor; import org.springframework.boot.autoconfigure.SpringBootApplication ...
- springMVC配置拦截器、过滤器、前端控制器时遇到的问题总结
1.业务场景:使用vuejs+springMVC+spring框架搭建一个mis系统,集成SSO单点登录: 2.遇到问题:使用interceptor拦截器配置SSO单点登录,直接敲域名,或者ip+端口 ...
- springMvc配置拦截器无效
说明 springMvc配置国际化拦截器失败,点击页面按钮切换中英文无效,排查发现没有进入 LocaleChangeInterceptor 类中,判断拦截器没有起作用,那么是什么原因导致拦截器无效,通 ...
- SpringMVC配置拦截器实现登录控制
SpringMVC读取Cookie判断用户是否登录,对每一个action都要进行判断.之前使用jstl标签在页面上判断session如果没有登录就使用如下代码跳转到登录页面. <c:if tes ...
- springmvc中拦截器配置格式
对于springmvc,有两种方式配置拦截器. 一是实现HandlerInterceptor接口,如 public class MyInterceptor1 implements HandlerInt ...
- springmvc中拦截器的定义和配置
package com.hope.interceptor;import org.springframework.lang.Nullable;import org.springframework.web ...
- SpringMVC利用拦截器防止SQL注入
引言 随着互联网的发展,人们在享受互联网带来的便捷的服务的时候,也面临着个人的隐私泄漏的问题.小到一个拥有用户系统的小型论坛,大到各个大型的银行机构,互联网安全问题都显得格外重要.而这些网站的背后,则 ...
- SpringMVC——实现拦截器
1. SpringMVC拦截器的概念与Struts2相同 2. 实现拦截器 (1) 项目结构 (2) 实现HandlerInterceptor接口 package com.zhengbin.contr ...
- SpringMVC经典系列-14自己定义SpringMVC的拦截器---【LinusZhu】
注意:此文章是个人原创.希望有转载须要的朋友们标明文章出处.假设各位朋友们认为写的还好,就给个赞哈.你的鼓舞是我创作的最大动力,LinusZhu在此表示十分感谢,当然文章中如有纰漏,请联系linusz ...
随机推荐
- 在TypeScript中使用其他JS框架或库的方法
最近刚刚接触TypeScript,感觉非常强大,但是也有一些问题. 比如我们正常写js时,只要把其他js库引入页面,甚至于只要加入到项目中,ReSharper就会自动分析他,并提供语法只能感知,写代码 ...
- Python PIL : IOError: decoder jpeg not available
The first thing I check when I got this error was to check if libjpeg was installed. Lets try this s ...
- [QT_OPENCV] qt下opencv配置以及首个opencv工程
使用环境 : window版本 : win7 x64 QT : 5.8 32bit MinGW530 OpenCv : 3.2 opencv在qt下的环境配置: 在百度上百度了许多关于opencv环境 ...
- lambda,reduce,filter用法
1.lambda的用法 sum = lambda arg1,arg2:arg1+arg2 sum(10,20) --->30 | | 实际上是def sum(arg1,arg2) return ...
- Testng优势
选择Testng的理由: 1.可指定执行顺序, dependsOnMethods 属性来应对测试的依赖性问题. 2.·参数化1:轻轻松松从XML中得到参数 @BeforeClass public vo ...
- 【转】Linux 图形界面与命令行模式切换
原文网址:http://blog.csdn.net/ldl22847/article/details/7600368 Tip:使用环境VMware Workstation OS:CentOS 6 ...
- 基于ffmpegSDK的开发
#include <stdio.h> #include <libavutil/avutil.h> #include <libavcodec/avcodec.h> # ...
- c# 爬虫(一) HELLO WORLD
最近在摸索爬虫相关的东西,写点随笔,以便忘记. 目的与用途 现实的项目中,我们需要太多的第三方接口了.而往往这些第三方接口由于条件限制,一时拿不到. 譬如: 1. 淘宝网今天有什么特价商品. 2. 百 ...
- win7 安装 node-sass报错
由于国内网络问题,所以会导致下载node-sass二进制包失败 只需要在 ~/.npmrc(当前用户家目录下)添加下面一行: sass_binary_site=https://npm.taobao.o ...
- 马士兵Spring-AOP-Aspect例子使用(1)
一.例子1: 1.工程结构: 2. User.java: package com.cy.model; public class User { private String username; priv ...