您的位置:1010cc时时彩经典版 > 1010cc时时彩经典版 > ssm拦截原理

ssm拦截原理

发布时间:2019-08-10 21:41编辑:1010cc时时彩经典版浏览(163)

    SpringMVC拦截器,springmvc拦截

    一、创建一个拦截器类   LoginInterceptor 

    二、这个拦截器累需要去实现HandlerInterceptor接口

    图片 1

    三、实现接口过后有三个实现方法分别为 preHandle、postHandle、afterCompletion 其中

    preHandle 为   执行方法之前先执行的功能

    postHandle为  执行方法之后再执行的功能

    afterCompletion 为整个DispatcherServlet处理完成在执行的方法(相当于比postHandle还要后执行)

    图片 2

     

    # 我们主要是用preHandle方法执行功能 return false表示失败就不在执行后面的方法  如果是 return true 表示成功 直接执行后面的代码

    图片 3

    #同时还需要为XML文件配置拦截器

    图片 4

     

    一、创建一个拦截器类 LoginInterceptor 二、这个拦截器累需要去实现HandlerInterceptor接口 三、实现接口过后有三个...

    一、创建一个拦截器类   LoginInterceptor 

    一、创建一个拦截器类   LoginInterceptor 

    【ssm】拦截器的原理及实现,ssm拦截原理

    spring拦截器(interceptor)简介,springinterceptor

    1. 拦截器用途

      (1)拦截未登录用户直接访问某些链接

      (2)拦截日志信息

      (3)拦截非法攻击,比如sql注入

    1. 涉及jar、类

      (1)spring-webmvc.jar

      (2)HandlerInterceptor(org.springframework.web.servlet:接口)、

          AsyncHandlerInterceptor(org.springframework.web.servlet:接口)、 

          HandlerInterceptorAdapter(org.springframework.web.servlet.handler.HandlerInterceptorAdapter:抽象类)

    图片 5

    3.业务类

      (1)实现(implements) 实现HandlerInterceptor接口或者子接口

      (2)继承(extends) 继承HandlerInterceptor接口子类(抽象类)

      (3)涉及的方法

          preHandle、postHandle、afterCompletion

    4.测试代码

    LoginInterceptor

     1 public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler throws Exception {
     2   LOGGER.info("--------preHandle-------"   request.getRequestURI());
     3   HttpSession session = request.getSession();
     4   String login_account = String.valueOf(session.getAttribute(CommonConstants.SESSION_KEY session.getId()));
     5   if(!request.getRequestURI().contains("/baselogin/")){
     6     if (StringUtils.isBlank(login_account) || "null".equalsIgnoreCase(login_account)) {
     7       response.sendRedirect("/baselogin/loginPage.htm");
     8       return false;
     9     }
    10   }
    11   return true;
    12 }
    13 
    14 public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView)throws Exception {
    15   LOGGER.info("--------postHandle-------"   request.getRequestURI());
    16 }
    17 
    18 public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
    19   LOGGER.info("--------afterCompletion-------"   request.getRequestURI());
    20 }
    21 
    22 public void afterConcurrentHandlingStarted(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
    23   LOGGER.info("--------afterConcurrentHandlingStarted-------"   request.getRequestURI());
    24 }
    

    执行顺序:preHandle -> controller -> postHandle -> afterCompletion

    配置:

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:context="http://www.springframework.org/schema/context"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
        xmlns:p="http://www.springframework.org/schema/p" xmlns:mvc="http://www.springframework.org/schema/mvc"
        xsi:schemaLocation="http://www.springframework.org/schema/context  
        http://www.springframework.org/schema/context/spring-context-3.2.xsd
        http://www.springframework.org/schema/beans  
        http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
        http://www.springframework.org/schema/aop 
        http://www.springframework.org/schema/aop/spring-aop-3.2.xsd
        http://www.springframework.org/schema/mvc
        http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd
        ">
    <!-- 拦截排除
    <mvc:interceptors>
    
            <mvc:interceptor>
    
          <mvc:exclude-mapping path=""/>
    
          <bean class="org.bighead.interceptor.LoginInterceptor" />
         </mvc:interceptor>
     </mvc:interceptors>
    
    -->
    
    <!-- 拦截登录 -->
        <mvc:interceptors>
            <mvc:interceptor>
                <mvc:mapping path="/*/*.htm"/>
                <bean class="org.bighead.interceptor.LoginInterceptor" />
            </mvc:interceptor>
        </mvc:interceptors>
    <beans>
    

     

    1. 拦截器用途 (1)拦截未登录用户直接访问某些链接 (2)拦截日志信息 (3)拦截非法攻击,比...

    二、这个拦截器累需要去实现HandlerInterceptor接口

    二、这个拦截器累需要去实现HandlerInterceptor接口

    一、背景:

           走过了双11,我们又迎来了黑色星期五,刚过了黑五,双12又将到来。不管剁手的没有剁手的,估计这次都要剁手了!虽然作为程序猿的我,没有钱但是我们长眼睛了,我们关注到的是我们天猫、淘宝、支付宝之间的登录系统的关联,即只要我们在一个系统上登陆过了,在同门户的其他系统上就不用再次登陆了,这个涉及到的是我们的接下来下次要聊到的——SSO(单点登录);而这次我们要聊的,是我们的拦截器,因为只要我们没有登录,随便输入一个合法的地址涉及到订单或者隐私信息的内容时,就会被干到登录页面上去,这就是我们的拦截器。

     

    图片 6

    图片 7

    二、拦截器结构图:

                        图片 8

    三、实现接口过后有三个实现方法分别为 preHandle、postHandle、afterCompletion 其中

    三、实现接口过后有三个实现方法分别为 preHandle、postHandle、afterCompletion 其中

    三、拦截器执行原理(流程):

    1、拦截请求的url;
    2、从cookie中获取token;
    3、如果没有token,则直接拦截,打回登录页面;
    4、获取到token,调用sso(单点登录)系统的服务查询用户信息,返回session(用户信息);
    5、对获取到的session进行处理。如果session已经过期,直接打回系统登录页面;如果session有效,则直      接放行,达到用户的请求页面
    

     

    preHandle 为   执行方法之前先执行的功能

    preHandle 为   执行方法之前先执行的功能

    四、拦截器实现:

    本文主要介绍springmvc中的拦截器,包括拦截器定义和的配置,然后演示了一个链式拦截的测试示例,最后通过一个登录认证的例子展示了拦截器的应用

    postHandle为  执行方法之后再执行的功能

    postHandle为  执行方法之后再执行的功能

    拦截定义

    定义拦截器,实现HandlerInterceptor接口。接口中提供三个方法。

    publ

    public class HandlerInterceptor1 implements HandlerInterceptor{
    //进入 Handler方法之前执行
    //用于身份认证、身份授权

    //比如身份认证,如果认证通过表示当前用户没有登陆,需要此方法拦截不再向下执行
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {

     

    //return false表示拦截,不向下执行
    //return true表示放行
    return false;
    }

     

    //进入Handler方法之后,返回modelAndView之前执行

    //应用场景从modelAndView出发:将公用的模型数据(比如菜单导航)在这里传到视图,也可以在这里统一指定视图
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {

     

    }

     

    //执行Handler完成执行此方法
    //应用场景:统一异常处理,统一日志处理
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {

     

    }

    }

    可以从名称和参数看出各个接口的顺序和作用:

    • public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception
      • 参数最少,只有三个
      • 进入 Handler方法之前执行
      • 用于身份认证、身份授权。比如身份认证,如果认证通过表示当前用户没有登陆,需要此方法拦截不再向下执行
    • public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception
      • 多了一个modelAndView参数
      • 进入Handler方法之后,返回modelAndView之前执行
      • 应用场景从modelAndView出发:将公用的模型数据(比如菜单导航)在这里传到视图,也可以在这里统一指定视图
    • public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception
      • 多了一个Exception的类型的参数
      • 执行Handler完成执行此方法
      • 应用场景:统一异常处理,统一日志处理

    本文由1010cc时时彩经典版发布于1010cc时时彩经典版,转载请注明出处:ssm拦截原理

    关键词: