springmvc之配置拦截器拦截相应的请求

在springmvc.xml文件中配置:

1<mvc:interceptors> 2 <!-- 配置自定义的拦截器 --> 3 <bean class="com.gong.springmvc.interceptors.FirstInterceptor"></bean> 4 <mvc:interceptor> 5 <mvc:mapping path="/emps"/> 6 <bean class="com.gong.springmvc.interceptors.SecondInterceptor"></bean> 7 </mvc:interceptor> 8 </mvc:interceptors>

FirstInterceptor.java

1package com.gong.springmvc.interceptors; 2 3import javax.servlet.http.HttpServletRequest; 4import javax.servlet.http.HttpServletResponse; 5 6import org.springframework.web.servlet.HandlerInterceptor; 7import org.springframework.web.servlet.ModelAndView; 8 9public class FirstInterceptor implements HandlerInterceptor{ 10 11 //该方法在目标方法之前被调用 12 //如果返回true,则继续调用后续的拦截器和目标方法,若为false,则不会在调用后续的拦截器和目标方法 13 //该方法可以考虑做权限、日志、事务等 14 @Override 15 public boolean preHandle(HttpServletRequest request, 16 HttpServletResponse response, Object handler) throws Exception { 17 System.out.println("[FirstInterceptor] preHandle"); 18 return true; 19 } 20 21 //调用目标方法之后,但在渲染视图之前被调用 22 //可以修改请求域中的属性或视图做出修改 23 @Override 24 public void postHandle(HttpServletRequest request, 25 HttpServletResponse response, Object handler, 26 ModelAndView modelAndView) throws Exception { 27 System.out.println("[FirstInterceptor] postHandle"); 28 } 29 30 //在渲染视图之后被调用 31 //释放资源 32 @Override 33 public void afterCompletion(HttpServletRequest request, 34 HttpServletResponse response, Object handler, Exception ex) 35 throws Exception { 36 System.out.println("[FirstInterceptor] afterCompletion"); 37 } 38 39}

SecondInceptor.java

1package com.gong.springmvc.interceptors; 2 3import javax.servlet.http.HttpServletRequest; 4import javax.servlet.http.HttpServletResponse; 5 6import org.springframework.web.servlet.HandlerInterceptor; 7import org.springframework.web.servlet.ModelAndView; 8 9public class SecondInterceptor implements HandlerInterceptor{ 10 11 @Override 12 public boolean preHandle(HttpServletRequest request, 13 HttpServletResponse response, Object handler) throws Exception { 14 System.out.println("[SecondInterceptor] preHandle"); 15 return true; 16 } 17 18 @Override 19 public void postHandle(HttpServletRequest request, 20 HttpServletResponse response, Object handler, 21 ModelAndView modelAndView) throws Exception { 22 System.out.println("[SecondInterceptor] postHandle"); 23 } 24 25 @Override 26 public void afterCompletion(HttpServletRequest request, 27 HttpServletResponse response, Object handler, Exception ex) 28 throws Exception { 29 System.out.println("[SecondInterceptor] afterCompletion"); 30 } 31 32}

在<mvc:mapping path="/emps"/>中可以配置拦截的url地址。

在<mvc:exclude-mapping path=""/>中可以配置不拦截的url地址。

像这种定义在mvc:interceptors下的<bean class="com.gong.springmvc.interceptors.FirstInterceptor"></bean>,没有指定是否拦截,则默认所有请求都调用该拦截器。

mvc:interceptor下使用<mvc:mapping path="/emps"/>表明要拦截该地址,调用的拦截器是SecondInterceptor。

比如说,我们如果请求地址是/emps,那么两个拦截器都会被调用,在控制台可以看到:

如果请求地址不是/emps,那么只会调用FirstInterceptor拦截器:

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

springMvc HandlerMethodArgumentResolver

SpringMvc在配置多个mvc:argumentresolvers(目前是分开在不同的配置文件)会出现覆盖问题;实际spring容器中只会有一个文件里配置的bean原因debug后发现,MVC实际是在调用一个name为org.springframework.web.servlet.mvc.method.annot