zoukankan      html  css  js  c++  java
  • Spring的拦截器和监听器

    拦截器代码如下:

    package com.mengyao.shops.interceptor;
    
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.web.servlet.ModelAndView;
    import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
    
    public class ShopInterceptor extends HandlerInterceptorAdapter {
    
        private Logger logger = LoggerFactory.getLogger(ShopInterceptor.class);
    
        
        @Override
        public void afterCompletion(HttpServletRequest request,
                HttpServletResponse response, Object handler, Exception ex)
                throws Exception {
            super.afterCompletion(request, response, handler, ex);
        }
    
        /**
         * Request结束后执行(Controller执行完成后)
         */
        @Override
        public void postHandle(HttpServletRequest request,
                HttpServletResponse response, Object handler,
                ModelAndView modelAndView) throws Exception {
            logger.info("==== {} ====", response.getStatus());
            super.postHandle(request, response, handler, modelAndView);
        }
    
        /**
         * Request的预处理(Controller之前执行)
         */
        @Override
        public boolean preHandle(HttpServletRequest request,
                HttpServletResponse response, Object handler) throws Exception {
            String userAddr = request.getRemoteAddr();  
            String url = request.getRequestURL().toString();
            logger.info("==== [userAddr:{}\t访问:{}] ====", userAddr, url);
            return true;
        }
    
    }

    监听器代码如下:

    package com.mengyao.shops.listener;
    
    import org.springframework.context.ApplicationListener;
    import org.springframework.context.event.ContextRefreshedEvent;
    
    public class InitListener implements ApplicationListener<ContextRefreshedEvent>  {
    
        @Override
        public void onApplicationEvent(ContextRefreshedEvent event) {
            if(event.getApplicationContext().getParent() == null){
                //获取到父容器,即顶级容器
            }
        }
    
    }
  • 相关阅读:
    Java中Iterator类的详细介绍
    Java中Iterator类的详细介绍
    Java中Iterator类的详细介绍
    Java中Iterator类的详细介绍
    VC++的Unicode编程
    实现系统滚动条换肤功能
    透明位图的显示
    用于树控件消息处理的几个结构
    C++实现半透明按钮控件(PNG,GDI+)
    Bootstrap+Knockout.JS+ASP.Net MVC3+PetaPOCO实现CRUD操作
  • 原文地址:https://www.cnblogs.com/mengyao/p/4931579.html
Copyright © 2011-2022 走看看