SpringMVC-intercepter(拦截器)配置
mvc配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<!-- 扫描注解 -->
<context:component-scan base-package="com.yvan.springmvc.Controller"/>
<!-- 配置拦截器 -->
<mvc:interceptors>
<mvc:interceptor>
<!--
/*拦截当前路径 例如 /add
/** 包括路径及其子路径 例如/add/add-->
<mvc:mapping path="/**"/>
<bean class="com.yvan.springmvc.Intercepter.MyIntercepter"></bean>
</mvc:interceptor>
</mvc:interceptors>
</beans>
Intercepter类实现HandlerInterceptor接口:
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
public class MyIntercepter implements HandlerInterceptor{
/**
* 请求方法之前执行
* 如果返回true 那么执行下一个拦截器 否则不执行
*/
@Override
public boolean preHandle(HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse, Object o) throws Exception {
System.out.println("处理之前");
return true;
}
/**
*执行请求方法之后执行
*/
@Override
public void postHandle(HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception {
System.out.println("处理之后");
}
/**
* 在dispatcherservlet之后执行
* 主要是清理工作
*/
@Override
public void afterCompletion(HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception {
}
}
controller类:
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class HelloController {
@RequestMapping("/helloIntercepter")
private String hello() {
System.out.println("helloIntercepter");
return "index.jsp";
}
}
注解:拦截器Intercepter在请求到达controller之前做逻辑处理,待处理完成根据处理返回结果确定是否执行下一个拦截器,大多数用于页面登陆验证。