SpringMVC拦截器(Interceptor)

自定义拦截器
Spring MVC也可以使用拦截器对请求进行拦截处理,用户可以自定义拦截器来实现特定的功能,自定义的拦截器必 须实现HandlerInterceptor接口
1.自定义实现类实现 HandlerInterceptor接口

public class Interceptor implements HandlerInterceptor{

    @Override
    public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, java.lang.Object arg2,
            Exception arg3) throws Exception {
        // TODO Auto-generated method stub
        System.out.println("afterCompletion");
    }

    @Override
    public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, java.lang.Object arg2, ModelAndView arg3)
            throws Exception {
        // TODO Auto-generated method stub
        System.out.println("postHandle");
    }

    @Override
    public boolean preHandle(HttpServletRequest arg0, HttpServletResponse arg1, java.lang.Object arg2)
            throws Exception {
        // TODO Auto-generated method stub
        System.out.println("preHandle");
        return true;
    }
}

– preHandle():该方法在目标方法之前被调用,
若返回值为true,则继续调用后续的拦截器和目标方法
若返回值为false,则不会再调用后续的拦截器和目标方法
可以考虑做权限,日志或者事务等!

– postHandle():调用目标方法之后,但渲染视图之前被调用
可以对请求域中的属性或者视图做出修改!

– afterCompletion():渲染视图之后被调用,
可以在该方法中进行一些资源清理的操作。

方法的执行顺序:
preHandle
Controller类中的执行方法
postHandle
afterCompletion

2.在springmvc配置文件中配置相对应的拦截器

    <mvc:interceptors>
            <!--配置自定义拦截器 ,所有的路径都拦截 -->
            <bean class="com.neuedu.springmvc.filter.MyFilter"></bean>
        </mvc:interceptors>

       关于拦截器的配置:
        <mvc:interceptors>
            <!--配置自定义拦截器 ,所有的路径都拦截 -->
            <bean class="com.neuedu.springmvc.filter.MyFilter"></bean>
            <!-- 关于拦截器的配置问题 ,可以通过<mvc:interceptor>来配置使用哪个拦截器来【不】拦截的路径-->
            <mvc:interceptor>
                <!-- 用<mvc:mapping>标签指定要拦截的路径 -->
                <mvc:mapping path="/employ"/>
                <!-- 指定使用哪个拦截器进行拦截 -->
                <bean class="com.neuedu.springmvc.filter.SecondFilter"></bean>
            </mvc:interceptor>
        </mvc:interceptors>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章