com.greenline.guahao.web.module.common.interceptor.VipDomainInterceptor.java Source code

Java tutorial

Introduction

Here is the source code for com.greenline.guahao.web.module.common.interceptor.VipDomainInterceptor.java

Source

/*
 * Project: vip-portal-web-home
 * 
 * File Created at 2014-5-26
 * 
 * Copyright 2012 Greenline.com Corporation Limited.
 * All rights reserved.
 *
 * This software is the confidential and proprietary information of
 * Greenline Company. ("Confidential Information").  You shall not
 * disclose such Confidential Information and shall use it only in
 * accordance with the terms of the license agreement you entered into
 * with Greenline.com.
 */
package com.greenline.guahao.web.module.common.interceptor;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;

import com.greenline.guahao.biz.dal.dao.interceptor.dto.Domaininfo;
import com.greenline.guahao.web.module.common.utils.CommonUtils;

/**
 * @Type VipDomainInterceptor
 * @Desc vip??
 * @author alex
 * @date 2014-5-26
 * @Version V1.0
 */
public class VipDomainInterceptor extends HandlerInterceptorAdapter {
    private static final Log logger = LogFactory.getLog(VipDomainInterceptor.class);
    /**
     * ???
     */
    private static final String REGEX_DOMAIN = "^[^.0-9]+(?:\\.[^.0-9]+){2,}$";
    /**
     * -uri
     */
    @SuppressWarnings("unused")
    private static final String REQUEST_KEY_REAL_URI = "ClientRealRequestUri";
    /**
     * ??
     */
    private String level1And2Domain = "guahao.com";
    /**
     * ????
     */
    private String level3AddDomains = "taikang.vip";

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
            throws Exception {
        String domain = request.getServerName(); // ??
        String errorMessage;
        if (!domain.matches(REGEX_DOMAIN)) {
            errorMessage = "??";
        } else if (!domain.endsWith(level1And2Domain)) {
            errorMessage = "??";
        } else {
            String level3AddDomain = domain.substring(0, domain.length() - level1And2Domain.length() - 1); // ???
            if (!level3AddDomains.contains(level3AddDomain)) {
                errorMessage = "??";
            } else {
                Domaininfo domaininfo = InterceptorUtil.getInstance().getDomaininfo(level3AddDomain);
                if (null == domaininfo) {
                    errorMessage = "??";
                } else {
                    // ?????:taikang.vip ?:vip.taikang
                    // ?:[vip,taikang]
                    // String[] level3AddDomainArr =
                    // StringUtils.reverseDelimited(level3AddDomain,
                    // '.').split("[.]");
                    // String uri = request.getRequestURI();
                    // // ????????
                    // if (null == request.getAttribute(REQUEST_KEY_REAL_URI)
                    // && uri.startsWith("/" + level3AddDomainArr[0])) {
                    // for (String d : level3AddDomainArr) {
                    // uri = uri.replaceFirst("^/" + d, "");
                    // }
                    // String urlPre = request.getScheme() + "://" + domain;
                    // response.sendRedirect(urlPre + uri); // ??
                    // return true;
                    // } else {
                    request.setAttribute("domainTypeId", domaininfo.getTypeid());
                    request.setAttribute("domainObjId", domaininfo.getObjid());
                    request.setAttribute("doamintype_id", domaininfo.getObjid());
                    request.setAttribute("domaininfoid", domaininfo.getId());
                    request.setAttribute("showprocince", domaininfo.getShowprocince());
                    request.setAttribute("header_ftl", domaininfo.getHeaderftl());
                    request.setAttribute("footer_ftl", domaininfo.getFooterftl());
                    request.setAttribute("domain_showurl", domaininfo.getShowurl());
                    request.setAttribute("domain_sysname", domaininfo.getSysdomain());
                    request.setAttribute("servername", domain);
                    request.setAttribute("preDomain", level3AddDomain);
                    request.setAttribute("guahaoServer", CommonUtils.getServerNameAndPort(request));
                    return true;
                    // }
                }
            }
        }
        if (null != request.getAttribute("error_message")) {
            return true;
        } else {
            logger.error(errorMessage);
            request.setAttribute("error_message", errorMessage);
            request.getRequestDispatcher("/error").forward(request, response);
            return false;
        }
    }

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,
            ModelAndView modelAndView) throws Exception {
        // TODO Auto-generated method stub
        super.postHandle(request, response, handler, modelAndView);
    }

    public String getLevel1And2Domain() {
        return level1And2Domain;
    }

    public void setLevel1And2Domain(String level1And2Domain) {
        this.level1And2Domain = level1And2Domain;
    }

    public String getLevel3AddDomains() {
        return level3AddDomains;
    }

    public void setLevel3AddDomains(String level3AddDomains) {
        this.level3AddDomains = level3AddDomains;
    }

}