How can I run common code for most requests in my Spring MVC Web App?

前端 未结 3 2045
清歌不尽
清歌不尽 2021-02-09 15:00

i.e.

I have various URLs mapped using Spring MVC RequestMapping

@RequestMapping(value = \"/mystuff\", method = RequestMethod.GET) 
@RequestMapping(value          


        
3条回答
  •  既然无缘
    2021-02-09 15:54

    Interceptor is the solution. It has methods preHandler and postHandler, which will be called before and after each request respectively. You can hook into each HTTPServletRequest object and also by pass few by digging it.

    here is a sample code:

    @Component
    public class AuthCodeInterceptor extends HandlerInterceptorAdapter {
    
        @Override
        public boolean preHandle(HttpServletRequest request,
                HttpServletResponse response, Object handler) throws Exception {
    
            // set few parameters to handle ajax request from different host
            response.addHeader("Access-Control-Allow-Origin", "*");
            response.addHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS");
            response.addHeader("Access-Control-Max-Age", "1000");
            response.addHeader("Access-Control-Allow-Headers", "Content-Type");
            response.addHeader("Cache-Control", "private");
    
            String reqUri = request.getRequestURI();
            String serviceName = reqUri.substring(reqUri.lastIndexOf("/") + 1,
                    reqUri.length());
                    if (serviceName.equals("SOMETHING")) {
    
                    }
            return super.preHandle(request, response, handler);
        }
    
        @Override
        public void postHandle(HttpServletRequest request,
                HttpServletResponse response, Object handler,
                ModelAndView modelAndView) throws Exception {
    
            super.postHandle(request, response, handler, modelAndView);
        }
    }
    

提交回复
热议问题