zoukankan      html  css  js  c++  java
  • 【Spring MVC 中 HandlerInterceptorAdapter的使用】

    接到这样一个需求:现有项目X,在我方的服务器A和客户的服务器B上均有部署。用户之前都是访问的A,现在要求所有用户的请求都转发到服务器B上去。考虑到用户可能保存了很多不同的网址(不止是主页网址),现写一个拦截器,把指向A服务器IP的请求都转发到B上去。代码如下:

    拦截器代码:

    package com.yiji.ifp.web.common.interceptor;
    
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;
    
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    /**
     * @Description 使所有的請求都跳轉到指定頁面
     * @Author Created by shusheng.
     * @Email shusheng@xxx.com
     * @Date 2017/10/31
     */
    public class HostRedirectInterceptor extends HandlerInterceptorAdapter {
    
        protected final Logger logger = LoggerFactory.getLogger(getClass());
    
        @Override
        public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
                throws Exception {
    
            String hostFromRequest = request.getLocalAddr();
            logger.info("用戶請求的主機地址:{}", hostFromRequest);
            String requestURL = request.getRequestURI();
            logger.info("客户端发出请求时的完整URL:{}",requestURL);
            String requestURI = request.getRequestURI();
            logger.info("请求行中的资源名部分:{}",requestURI);
    
            String hostTo = "http://59.51.9.109:8081/";
            String urlTo = "/ifp/common/redirectionwindow.html";
    
            if(!(requestURL.equals(urlTo)||"/".equals(requestURL))){
                logger.info("用戶請求的服務器地址不是新地址,将转发请求到服务器跳转页");
                response.sendRedirect(urlTo);
                logger.info("重定向完成");
                return false;
            }
            return true;
        }
    
    }

     配置代码:

        <mvc:interceptors>
            <bean id="hostRedirectInterceptor" class="com.xxx.xxx.web.common.interceptor.HostRedirectInterceptor" />
        </mvc:interceptors>
    终身学习者
  • 相关阅读:
    Selenium IDE
    selenium简介
    Java程序要操作数据库,一定要使用JDBC技术吗?
    JDBC几个接口分区叫什么?它们分别有什么用?
    JDBC的全称是什么?
    什么时候使用session?什么时候使用application?
    内置对象session和application的作用是什么?
    修改表单中为什么要使用隐藏域?
    如何创建一个不能修改的属性?
    如何修改属性?
  • 原文地址:https://www.cnblogs.com/zuixinxian/p/7793220.html
Copyright © 2011-2022 走看看