zoukankan      html  css  js  c++  java
  • JS跨域:1.解决方案之-SpringMVC拦截器

    一 拦截器代码

    package com.wiimedia.controller;
    
    import java.util.List;
    
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import org.springframework.web.servlet.HandlerInterceptor;
    import org.springframework.web.servlet.ModelAndView;
    
    
    public class CommonInterceptor implements HandlerInterceptor {
        private List<String> excludedUrls;
        public List<String> getExcludedUrls() {
            return excludedUrls;
        }
        public void setExcludedUrls(List<String> excludedUrls) {
            this.excludedUrls = excludedUrls;
        }
        /**
         * 
         * @Description: 
         * 在业务处理器处理请求之前被调用 如果返回false 
         * 从当前的拦截器往回执行所有拦截器的afterCompletion(),
         * 再退出拦截器链, 如果返回true 执行下一个拦截器,
         * 直到所有的拦截器都执行完毕 再执行被拦截的Controller
         * 然后进入拦截器链,
         * 从最后一个拦截器往回执行所有的postHandle()
         * 接着再从最后一个拦截器往回执行所有的afterCompletion()
         * 
         * @param  request
         * 
         * @param  response
         * 
         * @return: boolean
         * 
         * @author: SongJia
         * 
         * @date: 2016-6-27 下午4:17:51
         * 
         */
        public boolean preHandle(HttpServletRequest request,
                HttpServletResponse response, Object handler) throws Exception {
            response.setHeader("Access-Control-Allow-Origin", "*");
            response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
            response.setHeader("Access-Control-Max-Age", "3600");
            response.setHeader("Access-Control-Allow-Headers", "x-requested-with");
            return true;
        }
    
        // 在业务处理器处理请求执行完成后,生成视图之前执行的动作
        public void postHandle(HttpServletRequest request,
                HttpServletResponse response, Object handler,
                ModelAndView modelAndView) throws Exception {
    
        }
    
        /**
         * 
         * @Description:
         * 在DispatcherServlet完全处理完请求后被调用
         * 当有拦截器抛出异常时,
         * 会从当前拦截器往回执行所有的拦截器的afterCompletion()
         * 
         * @param request
         * 
         * @param response
         * 
         * @param handler
         * 
         * @param ex
         * 
         * @author: SongJia
         * 
         * @date: 2016-6-27 下午4:27:51
         * 
         */
        public void afterCompletion(HttpServletRequest request,
                HttpServletResponse response, Object handler, Exception ex)
                throws Exception {
    
    
        }
    
    }
    

      

    二 applicationContext.xml中的配置

    <mvc:interceptors>
               <mvc:interceptor>
               <mvc:mapping path="/**" />
               <bean class="com.wiimedia.controller.CommonInterceptor">
               <property name="excludedUrls">
                <list>
                    <value>/</value>
                </list>
               </property>
               </bean>
            </mvc:interceptor>
    </mvc:interceptors>
    

      

  • 相关阅读:
    【Leetcode】【Easy】Remove Duplicates from Sorted List
    【Leetcode】【Easy】Pascal's Triangle II
    【Leetcode】【Easy】Pascal's Triangle
    【Leetcode】【Easy】Binary Tree Level Order Traversal II
    【Leetcode】【Easy】Binary Tree Level Order Traversal
    【Leetcode】【Easy】Maximum Depth of Binary Tree
    【Leetcode】【Easy】Minimum Depth of Binary Tree
    【Leetcode】【Easy】Balanced Binary Tree
    【Leetcode】【Easy】Symmetric Tree
    如何使用Action.Invoke()触发一个Storyboard
  • 原文地址:https://www.cnblogs.com/Matchman/p/7380010.html
Copyright © 2011-2022 走看看