汎ドメイン名解析とjavaのfilterを応用して3級ドメイン名解析を実現する
4533 ワード
必要:
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ファイル
JAvaファイル
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
}
}