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> 
    
  • 相关阅读:
    eclipse经常卡死、反应慢、内存溢出的解决方案
    PAC4J 初探
    suse11离线安装nginx
    linux修改乱码的文件名
    CentOS修改服务器系统时间
    Unable to open nested entry '********.jar' 问题解决
    openssl req(生成证书请求和自建CA)
    CRT证书转JKS证书
    如何创建一个自签名的SSL证书(X509)
    Redis分布式锁的深度剖析
  • 原文地址:https://www.cnblogs.com/fonttian/p/7294855.html
Copyright © 2011-2022 走看看