汎ドメイン名解析とjavaのfilterを応用して3級ドメイン名解析を実現する


必要:
    www.ecicc.oom登録業者ごとに3級ドメイン名を提供し、3級ドメイン名は直接業者自身のホームページを指し、3級ドメイン名の構成方式は:登録名.ecicc.com
    業者はまた産業クラスタユーザーと専門市場ユーザーに分けられ、この2つのユーザーの応用は異なり、それぞれ企業展示室と専門ネットショップに対応している.
    産業クラスタユーザーにとって、企業展示室の接続構造は以下の通りである.http://www.ecicc.com/web/ユーザー名
    ネットショップはまだ実現していません
設計:
    汎ドメイン名解析によりhttp://*.ecicc.comをwww.ecicc.comに指向させ、サーバを汎ドメイン名をサポートするように構成する.
    Java filterでアクセスしたドメイン名を取得し、ドメイン名の3級ドメイン名を切り取ります.異なる3つのドメイン名に基づいて、対応するユーザーにリダイレクトします.
    たとえば、ユーザーはアドレスバーに次のように入力します.http://csic220.ecicc.com、filterでcsic 220を切り取り、http://www.ecicc.com/web/csic220
プログラムコードは次のとおりです.
Web.xmlファイル

	<filter>
	    <filter-name>URLFilter</filter-name>
	    <filter-class>com.csic99.common.tools.URLFilter</filter-class>
	</filter>
	<filter-mapping>
	  <filter-name>URLFilter</filter-name>
	  <url-pattern>/*</url-pattern>
	</filter-mapping>

JAvaファイル

package com.csic99.common.tools;

import java.io.IOException;

import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

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

import org.springframework.context.support.AbstractApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.csic99.area.AcDirectionManager;
import com.csic99.product.UmUserManager;
import com.csic99.product.pojo.AcDirection;
import com.csic99.product.pojo.UmUser;
/**
 *            
 *                  ,
 *  http://*.ecicc.com     ,    www.ecicc.com
 * 
 * @author zhx
 *
 */
public class URLFilter implements Filter{
	
	private static
	AbstractApplicationContext appContext = new 
	ClassPathXmlApplicationContext("applicationContext-manager.xml");

	public void destroy() {
		// TODO Auto-generated method stub
		
	}

	public void doFilter(ServletRequest request, ServletResponse response,
			FilterChain chain) throws IOException, ServletException {
		 HttpServletRequest httpServletRequest = (HttpServletRequest) request;
		 HttpServletResponse httpServletResponse = (HttpServletResponse) response;
		//        , http://csic220.ecicc.com
		//    
		String serverName = request.getServerName();
		//         
			int end = serverName.indexOf("ecicc.com");
			String userName = "";
			//     
			if(end!= -1&&end!=0){
				userName = serverName.substring(0, end-1);
			}else{
				end = serverName.indexOf("csic99.com");
				if(end!=-1&&end!=0){
					userName = serverName.substring(0, end-1);
				}
			}
			//      
			if(userName!=null&&!"".equals(userName)){
				//    url
				String url = "";
				//        
				UmUserManager umUserManager =(UmUserManager) appContext.getBean("UmUserManager");
				UmUser umUser = umUserManager.findUmUserByLoginName(userName);
				if(umUser!=null){
					AcDirectionManager acDirectionManager = 
						(AcDirectionManager)appContext.getBean("AcDirectionManager");
					AcDirection acDirection = 
						acDirectionManager.findAcDirectionByUserId(umUser.getUserId());
					//      
					//         
					if("1".equals(acDirection.getDirectionId())){
						url = "http://www.ecicc.com/web/"+umUser.getLoginName();
					}//      
					else if("2".equals(acDirection.getDirectionId())){
						//      ecicc.com
						url = "http://www.ecicc.com";
					}
				}//            
				else{
					url="http://www.ecicc.com";
				}
				//System.out.println(url);
				httpServletResponse.sendRedirect(url);
				return;		
		}
		chain.doFilter(request, response);
		
	}

	public void init(FilterConfig arg0) throws ServletException {
		// TODO Auto-generated method stub
		
	}



}