这篇文章主要介绍了拦截器的简单实现,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
什么是拦截器?
拦截器类似于 Servlet 开发中的过滤器 Filter,用于对处理器进行预处理和后处理。用户可以自己定义一些拦截器来实现特定的功能。
过滤器和拦截器的区别
过滤器是 servlet 规范中的一部分,任何 java web 工程都可以使用。 拦截器是 SpringMVC 框架自己的,只有使用了 SpringMVC 框架的工程才能用。 过滤器在 url-pattern 中配置了/*之后,可以对所有要访问的资源拦截。 拦截器它是只会拦截访问的控制器方法,如果访问的是 jsp,html,css,image 或者 js 是不会进行拦 截的。
第一步:编写一个普通类实现 HandlerInterceptor 接口
public class MyInterceptor1 implements HandlerInterceptor
{
public boolean
preHandle(HttpServletRequest request
, HttpServletResponse response
, Object handler
) throws Exception
{
if(request
.getRequestURI().indexOf("login.action")>=0){
return true;
}
HttpSession session
= request
.getSession();
if(session
.getAttribute("user")!=null
){
return true;
}
request
.getRequestDispatcher("/WEB-INF/jsp/login.jsp").forward(request
, response
);
return false;
}
public void
postHandle(HttpServletRequest request
, HttpServletResponse response
, Object handler
, ModelAndView modelAndView
) throws Exception
{
System
.out
.println("MyInterceptor1执行了...后1111");
}
public void
afterCompletion(HttpServletRequest request
, HttpServletResponse response
, Object handler
, Exception ex
) throws Exception
{
System
.out
.println("MyInterceptor1执行了...最后1111");
}
}
第二步:配置拦截器
<mvc:interceptors>
<!--配置拦截器-->
<mvc:interceptor>
<!--要拦截的具体的方法-->
<mvc:mapping path="/user/*"/>
<!--不要拦截的方法
<mvc:exclude-mapping path=""/>
-->
<!--配置拦截器对象-->
<bean class="com.gzl.interceptor.MyInterceptor1" />
</mvc:interceptor>
</mvc:interceptors>
注意
并且程序当中是允许配置多个
<mvc:interceptors>
<!--配置拦截器-->
<mvc:interceptor>
<!--要拦截的具体的方法-->
<mvc:mapping path="/user/*"/>
<!--不要拦截的方法
<mvc:exclude-mapping path=""/>
-->
<!--配置拦截器对象-->
<bean class="com.gzl.interceptor.MyInterceptor1" />
</mvc:interceptor>
<!--配置第二个拦截器-->
<mvc:interceptor>
<!--要拦截的具体的方法-->
<mvc:mapping path="/**"/>
<!--不要拦截的方法
<mvc:exclude-mapping path=""/>
-->
<!--配置拦截器对象-->
<bean class="com.gzl.interceptor.MyInterceptor2" />
</mvc:interceptor>
</mvc:interceptors>