gistfile1.txt SpringMVC的拦截器主要是通过实现HandlerInterceptor接口来实现,并实现接口中的三个方法,分别是boolean preHandle(HttpServletRequest request,HttpServletResponse response,Object handle)上述方法主要
SpringMVC的拦截器主要是通过实现HandlerInterceptor接口来实现,并实现接口中的三个方法,分别是 boolean preHandle(HttpServletRequest request,HttpServletResponse response,Object handle) 上述方法主要是在请求处理之前被调用,返回为false时表示结束后续方法都不执行,为true时会调用当前请求的controller方法。 void postHandle(HttpServletRequest request,HttpServletResponse response,Object handler,ModelAndView mv) 上述方法只能在preHandle返回为true时才能执行,该方法在控制器方法执行后执行,但是它会在视图渲染前执行。 void afterCompletion(HttpServletRequest request,HttpServletResponse response,Object handler,Exception exception) 上述方法在preHandle为true时才能执行,只要是在整个请求结束后即视图渲染结束后进行资源清理。 例子: 拦截器实现HandlderInterceptor接口 public class AuthorizationInterceptor implements HandlerInterceptor { private static final String[] IGNORE_URL={"/child/login","/childlogin"}; public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3) throws Exception { // TODO Auto-generated method stub System.out.println("AuthorizationInterceptor afterCompletion"); } public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3) throws Exception { // TODO Auto-generated method stub System.out.println("AuthorizationInterceptor postHandle"); } public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { // TODO Auto-generated method stub System.out.println("AuthorizationInterceptor preHandle"); boolean flag=false; //获取servlet的路径 String path=request.getServletPath(); System.out.println(path); //路径进行比对,是否需要拦截 for(String s:IGNORE_URL){ if(path.contains(s)){ flag=true; break; } } //拦截请求操作 if(!flag){ Child child=(Child) request.getSession().getAttribute("child"); if(child==null){ System.out.println("AuthorizationInterceptor拦截请求"); request.setAttribute("message","请先登录再访问"); //../表示当前目录的前一级目录 request.getRequestDispatcher("../childlogin.jsp").forward(request, response); }else{ System.out.println("AuthorizationInterceptor放行通过"); flag=true; } } return flag; } } MVC中的配置文件进行bean的配置 注意:mapping对应的path使用/**表示拦截所有路径包括二级路径等等,如果只用/*只能拦截单级目录