哈哈,鄙人在写全局校验是否登录验证的时候碰到了一个问题,那就是拦截器,查了资料,晓得了SpringMVC的拦截器是配置在映射器中的,少说话,上代码
<
<bean class="org.springframework.web.servlet.mvc.
method.annotation.RequestMappingHandlerMapping">
<property name="interceptors">
<list>
<bean class="core.web.SpringMVCInterceptor"/>
</list>
</property>
</bean>
>
上面是映射器配置SpringMVCInterceptor是我用于拦截器的类,最后再介绍拦截器类的编写。
RequestMappingHandlerMapping,RequestMappingHandlerAdapter据我所知是在Spring 3.1中出现的(不知道准确不),我们一般不写拦截器的时候一般不会去配置映射器和适配器,都是SpringMVC给我们默认配置,然而当你自己配置了映射器或适配器,那么这两个你必须自己配置完成,也就是必须成对配置如下:
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping">
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"></bean>
然而自己当时特煞笔,一直没有配置适配器导致一直出错,所以大家一定不要忘记,哈哈。
下面介绍拦截器类:
<
public class SpringMVCInterceptor implements HandlerInterceptor{
@Autowired
private SessionProvider sessionProvider;
private static String notIntercept="/manage";
private static String login ="/login";
public void afterCompletion(HttpServletRequest request,
HttpServletResponse response, Object obj, Exception exception)
throws Exception {
}
public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1,
Object arg2, ModelAndView arg3) throws Exception {
// TODO Auto-generated method stub
}
//方法前拦截
public boolean preHandle(HttpServletRequest request, HttpServletResponse response,
Object object) throws Exception {
}
}
>
1 preHandle 方法实在请求处理前调用的,在此方法内,我们可以做登陆检查等前期工作。如果你返回true,请求可以继续执行,返回false请求将被中断,如果你没有用response重定向请求路径,那你就是会看到一片空白。
2 postHandle:处理后的回掉方法(在渲染视图前),你可以用 ModelAndView对数据和视图进行处理。
3 afterCompletion :整个请求完成后处理回调该方法(渲染试图完成后)。