springMVC 拦截器

来源:互联网 发布:百元男生双肩包 知乎 编辑:程序博客网 时间:2024/06/04 23:18
springMVC拦截器大家在做项目中肯定会遇到。上个项目刚弄完,今天就来谢谢springMVC拦截器。等下次做项目时,直接copy用。
起思想项目大家都知道。就是拦截非法(未登录)的URL。其步骤如下。
1.srping-mvc.xml文件   <!-- 对需要登录之后才能访问的路径页面进行拦截-->    <mvc:interceptors>      <bean class="com.hx.cyb.front.interceptor.ActionInterceptor">    </bean>   </mvc:interceptors> 

2.添加相对应的处理类ActionInterceptor@Componentpublic class ActionInterceptor extends HandlerInterceptorAdapter{private static final Logger log = LoggerFactory.getLogger(SelectProjectAction.class);//收集不要拦截的URL<span style="color:#FF0000;">public static List<String> noAuthorized=new ArrayList<String>();static{Iterator<?> iterator = FileUtil.findXMLForAll("url","no_authorized.xml");if (iterator != null) {while (iterator.hasNext()) {    Element urlElement = (Element) iterator.next();   String url=urlElement.getText();   noAuthorized.add(url);}}}</span>@Overridepublic void afterCompletion(HttpServletRequest request,HttpServletResponse response, Object handler, Exception ex)throws Exception{super.afterCompletion(request, response, handler, ex);}/** * 拦截所有spring MVC请求。如果该请求路径是首页或者不需要授权的路径(noAuthorized)则,不受任何影响。 * 否则,如果其他路径,且用户未登陆,则返回到首页。 */@Overridepublic boolean preHandle(HttpServletRequest request,HttpServletResponse response, Object handler)throws Exception{String root = request.getContextPath();String url = request.getRequestURI();int questionIndex=0; if(url.indexOf("?")!=-1){questionIndex=url.indexOf("?");}else{questionIndex=url.length()-1;}String notParamUrl=url.substring(0, questionIndex+1);String notRootParamUrl=notParamUrl.replace(root+"/", "");if(notParamUrl.startsWith(root+"/selectProjectNoLogin.do")||notParamUrl.contains("/noAuthorized")||noAuthorized.contains(notRootParamUrl)){log.debug(url+"该路径不需要做登陆验证");}else if(request.getSession().getAttribute(SystemConstants.USER_SESSION_INFO) == null){response.sendRedirect(root + "/selectProjectNoLogin.do");return false;}return super.preHandle(request, response, handler);}}

3.收集不要拦截的URL<no_authorized>   <url>xxx1.do</url>     <url>xxx2.do</url>   <url>xxx3.do</url>   <url>xxx4.do</url>  </no_authorized>


0 0
原创粉丝点击