5. Spring MVC 4.1-拦截器

翻译 2015年11月19日 21:38:10

5.1 拦截器

  • 拦截器实现了对每一个请求处理之前和之后进行相关的处理,类似于Servlet的filter;
  • 可以实现HandlerInterceptor接口或者继承HandlerInterceptorAdapter类;
  • 继承HandlerInterceptorAdapter类,因为使用接口要实现接口的所有方法;

5.2 示例

  • 新建拦截器
  •  
    package com.wisely.interceptors;
    
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import org.springframework.stereotype.Service;
    import org.springframework.web.servlet.ModelAndView;
    import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
    
    public class DemoInteceptor extends HandlerInterceptorAdapter {
        @Override
        public boolean preHandle(HttpServletRequest request,
                HttpServletResponse response, Object handler) throws Exception {
            System.out.println("request开始前");
            long startTime = System.currentTimeMillis();
            request.setAttribute("startTime", startTime);
            return true;
        }
    
        @Override
        public void postHandle(HttpServletRequest request,
                HttpServletResponse response, Object handler,
                ModelAndView modelAndView) throws Exception {
            System.out.println("request结束后");
            long startTime = (Long) request.getAttribute("startTime");
            request.removeAttribute("startTime");
            long endTime = System.currentTimeMillis();
            request.setAttribute("handlingTime", endTime - startTime);
        }
    }
    • 修改配置,注册拦截器
    package com.wisely;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.ComponentScan;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.web.servlet.config.annotation.EnableWebMvc;
    import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
    import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
    import org.springframework.web.servlet.view.JstlView;
    import org.springframework.web.servlet.view.UrlBasedViewResolver;
    
    import com.wisely.interceptors.DemoInteceptor;
    
    @Configuration
    @ComponentScan("com.wisely")
    @EnableWebMvc
    public class DemoMVCConfig extends WebMvcConfigurerAdapter {
    
    
        @Bean
        public UrlBasedViewResolver viewResolver(){
            UrlBasedViewResolver resolver = new UrlBasedViewResolver();
            resolver.setPrefix("/WEB-INF/views/");
            resolver.setSuffix(".jsp");
            resolver.setViewClass(JstlView.class);
            return resolver;
        }
        //注册拦截器
        @Override
        public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(demoInteceptor());
        }
        //自定义拦截器
        @Bean
        public DemoInteceptor demoInteceptor(){
            return new DemoInteceptor();
        }
    }
    
    • 在index.jsp添加代码接受拦截器里放置的handlingTime
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
    index.jsp  is here
    
    value from inteceptor 处理耗时:${handlingTime}ms
    
    </body>
    </html>
    输出结果:
  •  

详述 Spring MVC 框架中拦截器 Interceptor 的使用方法

1 前言  昨天新接了一个需要,“拦截 XXX,然后 OOO”,好吧,说白了就是要用拦截器干点事(实现一个具体的功能)。之前,也在网络上搜了很多关于Interceptor的文章,但感觉内容都大同小异,...
  • qq_35246620
  • qq_35246620
  • 2017年03月30日 17:02
  • 7586

springmvc里使用注解进行拦截器配置

springmvc本身不能像struts2那样使用注解拦截action,这在使用中非常不方便,我们来扩展下springmvc,增加一个类,就可以实现注解拦截器....
  • wodemaya8
  • wodemaya8
  • 2015年04月24日 16:18
  • 7293

SpringMVC拦截器(资源和权限管理)

1.DispatcherServlet     SpringMVC具有统一的入口DispatcherServlet,所有的请求都通过DispatcherServlet。     Dispatche...
  • tonytfjing
  • tonytfjing
  • 2014年09月11日 16:04
  • 201187

SpringMVC拦截器实现登录认证

博客以Demo的形式讲诉拦截器的使用 项目结构如图: 需要的jar:有springMVC配置需要的jar和jstl需要的jar SpringMVC包的作用说明: ...
  • u014427391
  • u014427391
  • 2016年05月15日 22:19
  • 60812

Spring MVC配置及拦截器的实现

如题所示,这里主要是介绍拦截器的使用了但是为了更贴合实际的项目所以我们先导入spring mvc框架。为了使用spring mvc我们要导入相关的包,它依赖于spring-web 和spring -w...
  • qq_30970529
  • qq_30970529
  • 2016年07月15日 10:18
  • 5579

SpringMVC中使用Interceptor拦截器

SpringMVC中使用Interceptor拦截器 博客分类: SpringMVC SpringMVCInterceptor拦截器HandlerInterceptorWebRequestInte...
  • rainyear
  • rainyear
  • 2013年12月19日 14:23
  • 1560

Spring MVC 拦截器使用及实现

1、自定义拦截器        Spring MVC 也可以使用拦截器对请求进行拦截处理,用户 可以自定义拦截器来实现特定的功能,自定义的拦截器必须实现HandlerInterceptor接口。 ...
  • Luckydog1991
  • Luckydog1991
  • 2016年07月03日 14:45
  • 2178

spring MVC拦截器介绍

Spring MVC 中我们可以自己根据需求定义自己的的Interceptor 拦截器,它的主要作用是拦截用户的请求并进行相应的处理。比如通过它来进行权限验证,或者是来判断用户是否登陆等。 我们常用...
  • u012385190
  • u012385190
  • 2016年05月17日 17:41
  • 1418

通过Spring MVC 的自定义拦截器实现灵活的登录拦截

SpringMVC 中的Interceptor 拦截器,它的主要作用是拦截用户的请求并进行相应的处理。用户可以自定义拦截器来实现特定的功能,比如通过它来进行权限验证,或者是来判断用户是否登陆等。...
  • fullbug
  • fullbug
  • 2016年11月10日 14:39
  • 7201

SpringMVC拦截器返回值不能自定义的解决办法

@Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Obj...
  • bbbbln
  • bbbbln
  • 2017年01月04日 16:27
  • 2529
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:5. Spring MVC 4.1-拦截器
举报原因:
原因补充:

(最多只允许输入30个字)