zoukankan      html  css  js  c++  java
  • JAVA_OA(六):SpringMVC拦截器

    说明

    到这篇文章前,我们们所有的网页都是在可以直接在浏览器中输入XXX.do来直接访问

    ,甚至在得到jsp页面后,可以直接通过请求看到数据库的表格!

    而这肯定是开发所不允许的.故而,是时候让拦截器登场了,而他也正是一个基本的登录实例所必须的组件.

    a 创建拦截器组件,实现HandlerInterceptor接口

    
    public class LoginInteceptor implements HandlerInterceptor{
    
    //  其中要实现三个方法
    //afterCompletion,postHandle,preHandle
    
    //preHandle在处理器执行前被调用这个方法,如果返回的结果为true ,那么继续执行后续的操作,如果为false,后面的程序将不再执行
        /**
         * 拦截器 拦截请求完事调用
         */
        public void afterCompletion(HttpServletRequest arg0,
                HttpServletResponse arg1, Object arg2, Exception arg3)
                throws Exception {
            System.out.println("afterCompletion");
        }
    
        /**
         * 拦截器 拦截请求之后调用
        */
    
        public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1,
                Object arg2, ModelAndView arg3) throws Exception {
            System.out.println("postHandle");
        }
    
        /**
         * 拦截器 拦截请求之前调用
         */
    
        public boolean preHandle(HttpServletRequest req, HttpServletResponse res,
    
            System.out.println("preHandle");
    
                //以下是具体代码
                HttpSession session=req.getSession();
                String str=(String) session.getAttribute("login");
                if(null==str||"".equals(str)){
    
                    // getContextPath而非直接写路径->防止硬编码->避免项目改名时,修改大量代码.
    
                    res.sendRedirect(req.getContextPath()+"/login.jsp");
                    return false;
                }
                if(str.equals("true")){
                    return true;
                }else{
                    res.sendRedirect(req.getContextPath()+"/login.jsp");
                    return false;
    
                }
                //以上是具体代码
    
            }
    
            /**
             * 如果返回的是 false 此请求 就此拦截
             * 如果返回的是true  继续走你下面的程序
             */
    
        }
    
    ...
    
    }

    b 注册拦截器组件

    
    <!-- 配置我们的拦截器   -->
       <mvc:interceptors>
          <mvc:interceptor>
            <mvc:mapping path="/**"/>
            <!--对所有访问进行拦截-->
            <!-- 对/user/login.do进行拦截处理-->
            <mvc:exclude-mapping path="/user/login.do"/>
            <bean id="loginInterceptor" class="com.throne.util.UserInteceptor"></bean>
          </mvc:interceptor>
       </mvc:interceptors> 
    
  • 相关阅读:
    有36辆自动赛车和6条跑道,没有计时器的前提下,最少用几次比赛可以筛选出最快的三辆赛车?----腾讯2016研发工程师在线模拟笔试题
    10G个整数,乱序排列,要求找出中位数。内存限制为 2G。只写出思路即可
    计算机网络总结(二)
    计算机网络总结(一)
    最小编辑距离
    寻找两个有序数组的中位数
    Linux下几款C++程序中的内存泄露检查工具
    DDIA
    推荐引擎
    Innodb中的事务隔离级别和锁的关系
  • 原文地址:https://www.cnblogs.com/fonttian/p/7294855.html
Copyright © 2011-2022 走看看