美文网首页
Spring高级应用---拦截器

Spring高级应用---拦截器

作者: Tango_520f | 来源:发表于2018-02-23 09:12 被阅读51次

    1.核心API  HanlerInterceptor    WebMvcConfigureAdaptor

    2.流程:

    a.定义拦截器(实现HanlerInterceptor接口,或继承HandlerInterceptorAdaptor类);

    默认方法中绑定了请求和响应可在请求和响应中相应的处理

    M:preHandle postHandle

    request.setAttribute("tango","beauty");

    b.将拦截器加入应用的上下文环境,实现WebMvcConfigureAdaptor

    M:addInterceptors(Registry registery)方法

     registery.addInterceptor(自定义的拦截器);

    3.示例代码

    自定义拦截器

    import javax.servlet.http.HttpServletRequest;

    import javax.servlet.http.HttpServletResponse;

    import org.springframework.web.servlet.ModelAndView;

    import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;

    public class TangoInteceptor extends HandlerInterceptorAdapter{

        @Override

        public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)

        throws Exception {

        long startTime = System.currentTimeMillis();

        response.getWriter().println("请求开始!");

        request.setAttribute("startTime",startTime);

            return true;

        }

    @Override

    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,

    ModelAndView modelAndView) throws Exception {

    long endtime=System.currentTimeMillis();

    Long startTime =(Long) request.getAttribute("startTime");

    System.out.println("本次请求共用了时间"+new Long(endtime-startTime)+"ms");

    response.getWriter().println("请求结束!"+"本次请求共用了时间"+new Long(endtime-startTime)+"ms");

    }

    }

    注册拦截器

    @TangoConfig("com.tango.spring.Intercepter")

    public class InterCeptorConfig extends WebMvcConfigurerAdapter{

      @Bean

      public TangoInteceptor tangoInteceptor() {

      return new TangoInteceptor();

      }

    @Override

    public void addInterceptors(InterceptorRegistry registry) {

    registry.addInterceptor(tangoInteceptor());

    }

    }

    测试的Conttroller

    @RestController

    public class TangoController {

    @RequestMapping("/tango")

    public void tangoTest() {

    System.out.println("世界真奇妙");

    }

    }

    相关文章

      网友评论

          本文标题:Spring高级应用---拦截器

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