美文网首页Spring程序员技术干货
SpringMVC 的处理拦截器

SpringMVC 的处理拦截器

作者: 紫霞等了至尊宝五百年 | 来源:发表于2018-02-12 22:25 被阅读57次

0 目录





1 Spring MVC拦截器流程图

2 Spring Web MVC 的处理器拦截器


类似于Servlet 开发中的过滤器Filter,用于对处理器进行预处理和后处理

HandlerInterceptor接口主要定义了三个方法:

2.1 boolean preHandle (HttpServletRequest request, HttpServletResponse response, Object handle)

该方法将在请求处理之前进行调用,只有当该方法返回true时,才会继续调用下一个InterceptorpreHandle(),如果已是最后一个Interceptor就会是调用当前请求的Controller

2.2 void postHandle (HttpServletRequest request, HttpServletResponse response, Object handle, ModelAndView modelAndView)

该方法将在请求处理之后,DispatcherServlet进行视图返回渲染之前进行调用,可以在这个方法中对Controller处理之后的ModelAndView对象进行操作(比如这里加入公用信息以便页面显示)

2.3 void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handle, Exception ex)

该方法也是需要当前对应的InterceptorpreHandle方法的返回值为true时才会执行,该方法将在整个请求结束之后,也就是在DispatcherServlet ** 渲染了对应的视图之后执行**
用于资源清理

3 拦截器配置

3.1 针对某种mapping拦截器配置

 <bean  
   class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping">  
   <property name="interceptors">  
      <list>  
         <ref bean="handlerInterceptor1"/>  
         <ref bean="handlerInterceptor2"/>  
      </list>  
   </property>  
</bean>  
<bean id="handlerInterceptor1"class="springmvc.intercapter.HandlerInterceptor1"/>  
<bean id="handlerInterceptor2"class="springmvc.intercapter.HandlerInterceptor2"/> 

3.2 针对所有mapping配置全局拦截器

<!--拦截器 -->  
<mvc:interceptors>  
   <!--多个拦截器,顺序执行 -->  
   <mvc:interceptor>  
      <mvc:mapping path="/**"/>  
      <bean class="com.sss.filter.HandlerInterceptor1"></bean>  
   </mvc:interceptor>  
   <mvc:interceptor>  
      <mvc:mapping path="/**"/>  
      <bean class="com.sss.filter.HandlerInterceptor2"></bean>  
   </mvc:interceptor>  
</mvc:interceptors>  

4 拦截器Handler

用户访问其他页面时,从Seesion中获取到用户,未登录则重定向到登录页面。

Public class LoginInterceptor implements HandlerInterceptor{   
    @Override  
    Public boolean preHandle(HttpServletRequest request,  
            HttpServletResponse response, Object handler) throws Exception {  
  
        //如果是登录页面则放行  
        if(request.getRequestURI().indexOf("login.action")>=0){  
            return true;  
        }  
        HttpSession session = request.getSession();  
        //如果用户已登录也放行  
        if(session.getAttribute("user")!=null){  
            return true;  
        }  
        //用户没有登录挑战到登录页面  
        request.getRequestDispatcher("/WEB-INF/jsp/login.jsp").forward(request, response);  
          
        return false;  
    }  

3.用户登录Controller

//登陆提交  
    //userid:用户账号,pwd:密码  
    @RequestMapping("/login")  
    public String loginsubmit(HttpSession session,String userid,String pwd)throws Exception{  
          
        //向session记录用户身份信息  
        session.setAttribute("activeUser", userid);  
          
        return "redirect:item/queryItem.action";  
    }  
      
    //退出  
    @RequestMapping("/logout")  
    public String logout(HttpSession session)throws Exception{  
          
        //session过期  
        session.invalidate();  
          
        return "redirect:item/queryItem.action";  
    }

相关文章

  • SpringMVC框架中的拦截器

    1.拦截器的概述 SpringMVC框架中的拦截器用于对处理器进行预处理和后处理的技术。可以定义拦截器链,连接器链...

  • 7.SpringMVC 处理器拦截器

    Spring MVC 处理器拦截器 SpringMVC 处理器拦截器, 类似于Servlet开发中国的过滤器Fil...

  • 【SpringMVC】拦截器与异常处理

    SpringMVC的拦截器 01-SpringMVC拦截器-拦截器的作用(理解) Spring MVC 的拦截器类...

  • SpringMVC的拦截器

    SpringMVC的拦截器 01-SpringMVC拦截器-拦截器的作用(理解) Spring MVC 的拦截器类...

  • 拦截器

    注册拦截器 定义拦截器 另外对比SpringMVC 的拦截器,在SpringMVC.xml配置

  • SpringMVC之拦截器

    十、拦截器 目录:简述、自定义拦截器、认证用户 1.简述 SpringMVC的处理器拦截器类似于Servlet开发...

  • springMVC拦截器 Day34 2018-12-24

    springMVC拦截器 Interceptor拦截器可以用来拦截用户请求,进行相应处理,例如权限验证,判断用户是...

  • 10月5号学习情况

    今日 学习情况 复习了SpringMVC拦截器的知识 复习了SpringMVC中的统一异常处理 更加了解sprin...

  • 【Java学习干货】SpringMVC中拦截器的使用

    什么是拦截器?SpringMVC的处理器拦截器类似于Servlet开发中的过滤器Filter,用于对处理器进行预处...

  • 22_SpringMVC拦截器

    1. SpringMVC框架中的拦截器用于对处理器进行预处理和后处理的技术。 2. 可以定义拦截器链,连接器链就是...

网友评论

    本文标题:SpringMVC 的处理拦截器

    本文链接:https://www.haomeiwen.com/subject/rxvdtftx.html