Java tutorial
/* * 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; } }