spring mvc 拦截器怎么拦截jsp页面




你这个 是拦截带 /jsp 的 .do请求  

解决方案
用spring 的拦截器 去拦截 所有的 .do 请求, 
然后写一个 过滤器去拦截 所有的.jsp 的请求
这样才能防止循环过滤


这种会把所有jsp请求过滤不推荐。



  1. <filter>
  2.         <filter-name> loginFilter</filter-name>
  3.         <filter-class>
  4.         net.techfinger.yoyoapp.interceptor.CheckLoginFilter
  5.         </filter-class>
  6.     </filter>
  7.     <filter-mapping>
  8.         <filter-name>loginFilter</filter-name>
  9.         <url-pattern>*.jsp</url-pattern>
  10.     </filter-mapping>


  11.     <servlet-mapping>
  12.         <servlet-name>Spring-Servlet</servlet-name>
  13.         <url-pattern>*.do</url-pattern>
  14.     </servlet-mapping>



  15. public class CheckLoginFilter implements Filter{
  16.     @Override
  17.     public void destroy() {
  18.         // TODO Auto-generated method stub

  19.     }

  20.     @Override
  21.     public void doFilter(ServletRequest servletRequest,
  22.             ServletResponse servletResponse, FilterChain filterChain)
  23.             throws IOException, ServletException {
  24.         // TODO Auto-generated method stub

  25.         HttpServletRequest request = (HttpServletRequest) servletRequest;
  26.         HttpServletResponse response = (HttpServletResponse) servletResponse;
  27.         HttpSession session = request.getSession();
  28.         
  29.         
  30.         // 获得用户请求的URI
  31.         String path = request.getRequestURI();
  32.         String contextPath = request.getContextPath();
  33.         String url = path.substring(contextPath.length());
  34.         
  35.         Person person =SessionUtils.getPerson(request);
  36.         
  37.         if (person == null) {
  38.             response.sendRedirect(contextPath+"/person.do?method=tologin");
  39.             return;
  40.         }
  41.         if (person.getId()!=null&&person.getPassword()!=null) {
  42.             filterChain.doFilter(servletRequest, servletResponse);
  43.             return;
  44.         }

  45.     }

  46.     @Override
  47.     public void init(FilterConfig filterConfig) throws ServletException {
  48.         
  49.     }
  50. }


  51. public class AuthInterceptor extends HandlerInterceptorAdapter {

  52.     private final static Logger log= Logger.getLogger(AuthInterceptor.class);
  53.     
  54.     @Override
  55.     public boolean preHandle(HttpServletRequest request,
  56.             HttpServletResponse response, Object handler) throws Exception {
  57.         HandlerMethod method = (HandlerMethod)handler;
  58.         Auth auth = method.getMethod().getAnnotation(Auth.class);
  59.         ////验证登陆超时问题 auth = null,默认验证 
  60.         if( auth == null || auth.verifyLogin()){
  61.             String baseUri = request.getContextPath();
  62.             String path = request.getServletPath();
  63.             Person person =SessionUtils.getPerson(request);
  64.             
  65.             
  66.         
  67.             if(person == null){
  68.                 if(path.endsWith(".jsp")){
  69.                     response.setStatus(response.SC_GATEWAY_TIMEOUT);
  70.                     response.sendRedirect(baseUri+"/person.do?method=tologin");
  71.                     return false;
  72.                 }else{
  73.                     response.setStatus(response.SC_GATEWAY_TIMEOUT);
  74.                     Map<String, Object> result = new HashMap<String, Object>();
  75.                 /*    result.put("success", false);
  76.                     result.put("logoutFlag", true);//登录标记 true 退出
  77.                     result.put("msg", "登录超时.");
  78.                     XmlUtil.sendMsg(response, result);*/
  79.                     response.sendRedirect(baseUri+"/person.do?method=tologin");
  80.                     return false;
  81.                 }
  82.             }
  83.         }
  84.         //验证URL权限
  85.         if( auth == null || auth.verifyURL()){/*        
  86.             
  87.             //判断请求的url,是否包含在该角色的url里
  88.         
  89.                 String methodName=request.getParameter("method");
  90.                 String menuUrl = StringUtils.remove(request.getRequestURI(),request.getContextPath())+"?method="+methodName;
  91.                 System.out.println(menuUrl);
  92.                 
  93.                 if(!SessionUtils.isAccessUrl(request, StringUtils.trim(menuUrl))){                    
  94.                     //日志记录
  95.                     String userMail = SessionUtils.getPerson(request).getLoginName();
  96.                     String msg ="URL权限验证不通过:[url="+menuUrl+"][email ="+ userMail+"]" ;
  97.                     log.error(msg);
  98.                     
  99.                     response.setStatus(response.SC_FORBIDDEN);
  100.                     Map<String, Object> result = new HashMap<String, Object>();
  101.                     result.put("success", false);
  102.                     result.put("msg", "没有权限访问,请联系管理员.");
  103.                     XmlUtil.sendMsg(response, result);
  104.                     return false;
  105.                 
  106.             }
  107.         */}
  108.         return super.preHandle(request, response, handler);
  109.     }
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值