在实际开发中,有许多地方要使用拦截器,比如验证用户有没有登录,或者分配权限什么的。还是非常重要的,正好最近学习Interceptor 拦截器,特记录一下。使用拦截器很简单,在sPRingMVC中,定义自己的拦截器是通过继承HandlerInterceptorAdapter 类或者通过实现HandlerInterceptor 接口。 写一个拦截器,用于判断用户是否登录过,如果登录过,就可以访问主页或其他页面,如果没有进行登录过,就跳转到登录界面。
public class MyInterceptor implements HandlerInterceptor { /*afterCompletion也是需要当前对应的Interceptor的preHandle方法的返回值为true时才会执行。该方法将在整个请求完成之后,也就是DispatcherServlet渲染了视图执行。*/ @Override public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3) throws Exception { } /*postHandle只会在当前这个Interceptor的preHandle方法返回值为true的时候才会执行。postHandle是进行处理器拦截用的,它的执行时间是在处理器进行处理之后,也就是在Controller的方法调用之后执行,但是它会在DispatcherServlet进行视图的渲染之前执行,也就是说在这个方法中你可以对ModelAndView进行操作。*/ @Override public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3) throws Exception { } // preHandle方法是进行处理器拦截用的,该方法将在Controller处理之前进行调用 @Override public boolean preHandle(HttpServletRequest req, HttpServletResponse resp, Object obj) throws Exception { Httpsession session = req.getSession(); User user = (User) session.getAttribute("user"); if(null != user){ return true; } req.getRequestDispatcher("/WEB-INF/views/login.jsp").forward(req, resp); return false; }}在springMVC配置文件中配置
<mvc:interceptors> <mvc:interceptor> <mvc:mapping path="/**" /> <bean class="com.test.filter.MyInterceptor "></bean> </mvc:interceptor> </mvc:interceptors>当然,这只是最简单的拦截器,其他功能可以在此基础上进行扩展。
新闻热点
疑难解答