SpringMVC拦截器 配置及使用

2017-12-11  本文已影响0人  ChildeChan

在对用户是否登陆及用户是否具有权限进行操作时 需要引入拦截器对所有页面进行拦截 判断是否具有权限进行操作。

(当然对所有页面写单独一段权限验证也是可以的,只不过太过复杂,所以使用拦截器是最合适的)

SpringMvc 本身就是一个拦截器,当然也有其内置的拦截器。

拦截器的方法继承于 HandlerInterceptorAdapter 这个抽象类(当然WebRequestHandlerInterceptorAdapter也可以实现拦截器操作)。

里面有四个方法  preHandlepostHandleafterCompletionafterConcurrentHandlingStarted


抽象类里面是这样子的。

@Override

/**当然我们最常用的当然是preHandler。

* 可以看到preHandle方法的返回值是一个Boolean类型的。

* 如果返回为true 那么就表示通过了拦截器,可以继续进行下一步操作,如果为false则未通过不能继续进行操作。

*/

public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)

throws Exception {

return true;

}

/**

* postHandle的执行是在controller层的方法执行完毕,在dispatchservlet返回视图渲染之前执行。

* 也就是preHandler 是在controller层之前执行,postHandler是在controller层之后执行。

*/

@Override

public void postHandle(

HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView)

throws Exception {

}

/**

* afterCompletion则是在dispatchservlet返回视图渲染之后执行,主要作用是进行一些资源的清理工作。

*/

@Override

public void afterCompletion(

HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)

throws Exception {

}


如果我们需要使用多个拦截器,并且对某些页面不需要进行拦截操作,我们可以在spirng -web.xml中这样配置。

mapping 标签是匹配   exclude-mapping标签是排除

bean标签里配置好拦截器对应的实体类。

这样拦截器便可以正常工作了。

上一篇下一篇

猜你喜欢

热点阅读