`
stephen830
  • 浏览: 3010982 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

step-by-step用java配合tomcat轻松实现动态2级域名效果

    博客分类:
  • java
阅读更多
★★★ 本篇为原创,需要引用转载的朋友请注明:《 http://stephen830.iteye.com/blog/277522 》 谢谢支持!★★★

开始之前,首先来认识下什么是2级域名?

一般我们注册一个域名,比如 www.iteye.com (以下内容均以iteye.com域名为例子,当然这只是example,该域名早已被注册了!),那么这个就是你的1级域名(顶级域名),是固定的并且只有1个,而像 robin.iteye.com,stephen830.iteye.com等等就是你这个1级域名下的2级域名了。因此,每个1级域名下面可以拥有无数个2级域名,只要你的名字符合国际域名名称定义规则。

现在越来越多的网站提供2级域名的功能,就如JavaEye,只要您注册成为用户,您就可以当场得到一个属于自己的2级域名。可能,或许您觉得这其中很神秘,以为这个功能实现会比较复杂,其实不然,看完了本篇文章,相信您也可以轻而易举打造自己的动态2级域名效果了。

下面就让我们一步步来看看如何实现的吧!

第1步 您要准备一个1级域名(国际域名,国内域名都可以),并且您域名所在的dns服务器要支持域名泛解析功能,拿iteye.com来说,泛解析就是a.iteye.com/b.iteye.com/c.iteye.com/...,所有这些都指向iteye.com设置的同一个ip地址,有了这个功能,域名才能够实现动态2级域名。一般域名服务商的dns服务器都有这个功能。如下图(图1):

(图1)

您只需要在域名的配置中增加一条*.开头的记录,就可以实现泛解析了。配置完后,你可以用ping命令测试下,假设你的域名是iteye.com,你可以运行 ping a.iteye.com,如果通的话就表示支持泛解析了。(当然,要注意有的主机服务器屏蔽ping回显!)

第2步 准备好你的WEB应用,这里使用了tomcat,可以在tomcat的server.xml配置文件中进行配置:

<Host name="localhost" debug="0" appBase="/www/doc" unpackWARs="true" autoDeploy="true">
<Logger className="org.apache.catalina.logger.FileLogger" directory="logs"  prefix="www." suffix=".txt" timestamp="true"/>
</Host>


其中的appBase配置自己WEB应用的位置,name="localhost",表示根目录,所有访问本主机的将自动转到appBase配置的应用上。假设您的域名主机地址为 202.109.xx.xx,那么直接在浏览器中输入http://202.109.xx.xx 就会默认打开您在上面配置的那个web应用,这个在你的主机上有多个WEB应用的时候要小心。您在增加其他独立的WEB应用(假设还有个WEB应用是 www.xxx.com)时需要像下面这样的配置:
<Host name="www.xxx.com" debug="0" appBase="/www/doc/xxx" unpackWARs="true" autoDeploy="true">
        <Logger className="org.apache.catalina.logger.FileLogger" directory="logs"  prefix="www.xxx.com." suffix=".txt" timestamp="true"/>
</Host>


这个独立的www.xxx.com则必须使用域名来访问,不能使用网站ip地址来访问。



第3步 为了更好的展现动态2级域名效果,使用一个frame作为WEB应用的index.html,这个index.html将作为你的WEB应用的首页面。(备注:这个index.html不是必须的,只是为了让浏览器的地址栏显的更加好看而已)

index.html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>-</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<head>
<frameset framespacing="0" border="0" rows="0,*" frameborder="0">
  <frame name="" noresize scrolling="no" target="_self" src="" frameborder="0" marginheight="0" marginwidth="0">
  <frame name="" scrolling="auto" target="_self" src="index.jsp" frameborder="0" marginheight="0" marginwidth="0">
  <noframes>
    <body>
    <p>您的浏览器版本太低,需要升级后才能使用本系统!</p>
</body>
  </noframes>
</frameset>
</html>


第4步 实现动态的2级域名。

假设用户在网站(www.iteye.com)上注册一个用户后,用户名比如为 test,那么只要在浏览器中输入 test.iteye.com后,就会进行如下的处理。

输入 test.iteye.com , 首先会解析 test.iteye.com 这个2级域名的ip地址,这样就像输入 http://202.109.xx.xxx/ 一样的效果 (假设 iteye.com的ip为202.109.xx.xxx);然后就会去访问这个域名对应WEB应用的首页面,也就是上面配置的index.html,然后会调用下面的index.jsp

这个jsp才是真正负责进行动态2级域名解析并处理的 index.jsp

<%@ page contentType="text/html;charset=UTF-8"%>
<%
	String host = request.getHeader("Host").trim();//获得来访者的域名信息,这里如果是2级域名,就会得到例如 test.iteye.com, test就是注册用户名
	String[] hosts = host.split("[.]");
	if(hosts.length==3){//只处理长度为3的信息
		if("javaeye".equals(hosts[1])&&"com".equals(hosts[2])){//判断是否是iteye.com的2级域名
			String name = hosts[0].trim();
			if(!"www".equals(name)){//www是域名本身用的,不能用于表示2级域名,所以在用户注册的时候像www,ftp,mail,smtp,pop等关键词不要被用户注册到。
				//在这个位置还需要用个方法来校验下name是否合法,比如name必须是网站的注册用户,将name与网站的用户表数据进行校验
				//校验通过后,转到对应的处理页面				response.sendRedirect("self.jsp?name="+name);//2级域名转向到指定的一个处理文件,如这里是self.jsp
				return;
			}
		}
	}
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>--</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body bgcolor="#ffffff" topmargin="80px" leftmargin="20px" rightmargin="20px">
<!--网站首页面内容-->
</body>
</html>


这样,就可以轻轻松松地实现了动态2级域名功能了。


最后的说明:本文只是一篇实现动态2级域名的启蒙文章,希望能告诉所有的朋友,动态2级域名其实一点也不复杂,只是你目前可能没有找到方法,说穿了就大家都明白了。
如果要将动态2级域名商业化/产品化,还需要进一步改善,改善方法大家可以在网上找找资料。基本上每个WEB容器都有自己特定的一些配置来实现这个功能。


-------------------------------------------------------------
分享知识,分享快乐,希望文章能给需要的朋友带来小小的帮助。





















  • 大小: 6.4 KB
18
8
分享到:
评论
20 楼 有心艳子 2014-07-12  
我的QQ是2301319512
19 楼 有心艳子 2014-07-12  
楼主,可以加下你QQ吗?   我这边按照本文的配置方法没配置成功。
18 楼 wangyi2200 2010-01-13  
学习了,javaeye并没有iframe,是否还有别的解决方案呢?
17 楼 czwlucky 2008-12-19  
stephen830 写道

域名空间和域名主机要分开看,环境主要是看域名主机的环境,申请域名可以在域名服务商那里申请,至于域名对应的主机可以自己设置,也就是将域名和你的主机ip地址绑定下。

一般的域名服务商提供的主机只是提供一个基础环境(比如支持asp,php,jsp(jdk1.5 tomcat5.0)),至于像框架之类一般可以自己配制。

在国内很少有支持JSP的空间,不知道啥时候JSP空间也能像ASP,PHP一样繁荣。。。
16 楼 stephen830 2008-11-26  
czwlucky 写道

另外有的域名空间提供商说他们不支持Spring或其他框架,不明白他们是如何实现的。楼主知道吗?

域名空间和域名主机要分开看,环境主要是看域名主机的环境,申请域名可以在域名服务商那里申请,至于域名对应的主机可以自己设置,也就是将域名和你的主机ip地址绑定下。

一般的域名服务商提供的主机只是提供一个基础环境(比如支持asp,php,jsp(jdk1.5 tomcat5.0)),至于像框架之类一般可以自己配制。
15 楼 stephen830 2008-11-26  
czwlucky 写道

另外有的域名空间提供商说他们不支持Spring或其他框架,不明白他们是如何实现的。楼主知道吗?

域名商说的2级域名是一般都是静态的,是手工设置在dns服务器上的
14 楼 czwlucky 2008-11-26  
另外有的域名空间提供商说他们不支持Spring或其他框架,不明白他们是如何实现的。楼主知道吗?
13 楼 czwlucky 2008-11-26  
原来二级域名可以这样弄啊,学习了。
现在好多DNS服务器都是有尝的提供二级域名(十个以上要付费),不知道他们是不是有手段让程序失效呢?
12 楼 stephen830 2008-11-26  
Quake Wang 写道

和javaeye的还不一样,你这里是做重定向的: response.redirect用户的地址栏会变化的而且这样也只能在访问特定url(比如首页)起作用

其实也不一定只能访问特定的首页,只要再加上一些解析处理,其实访问2级域名的任何页面都可以了。
11 楼 stephen830 2008-11-26  
yananay 写道

Quake Wang 写道
和javaeye的还不一样,你这里是做重定向的: response.redirect用户的地址栏会变化的而且这样也只能在访问特定url(比如首页)起作用 所以他加了 iframe,这样地址栏就不变化了。 说说自己的想法: 1、使用 iframe 不是一个好主意,因为会影响到 SEO,可以搜索一下相关文章,虽然可以避免,但毕竟比较麻烦,所以,最好不使用 iframe。 2、我觉得应该考虑 urlrewrite 这样的东西,这样的东西在 apache 和 iis 中都有,在应用服务器(tomcat)中,也有一个工具能提供 urlrewrite的功能。 总的来说,这个文章只是探索实现2级域名的第一步,无法应用在产品环境中,希望搂住继续探索,加油!

是的,本文只是告诉大家,动态2级域名的实现并不神秘,其实说穿了也很简单,只是有些朋友目前可能还没找到方法而已。我只是用一种最简单的方法(大家都会用的)来实现它,当然要把这个作为商业用途,还需要改进。
10 楼 yananay 2008-11-26  
Quake Wang 写道

和javaeye的还不一样,你这里是做重定向的: response.redirect用户的地址栏会变化的而且这样也只能在访问特定url(比如首页)起作用


所以他加了 iframe,这样地址栏就不变化了。

说说自己的想法:

1、使用 iframe 不是一个好主意,因为会影响到 SEO,可以搜索一下相关文章,虽然可以避免,但毕竟比较麻烦,所以,最好不使用 iframe。

2、我觉得应该考虑 urlrewrite 这样的东西,这样的东西在 apache 和 iis 中都有,在应用服务器(tomcat)中,也有一个工具能提供 urlrewrite的功能。

总的来说,这个文章只是探索实现2级域名的第一步,无法应用在产品环境中,希望搂住继续探索,加油!
9 楼 asin 2008-11-26  
学习了.还没开发过这样的应用...
8 楼 xiaolong014 2008-11-26  
不错好文章
7 楼 stephen830 2008-11-26  
whaosoft 写道

xp里有个叫hosts的文件 你不知道?

汗 , 什么意思? hosts和这个有关系么? 拜托看明白了再说吧 。
6 楼 QuakeWang 2008-11-26  
和javaeye的还不一样,你这里是做重定向的: response.redirect
用户的地址栏会变化的
而且这样也只能在访问特定url(比如首页)起作用
5 楼 hetylei 2008-11-26  
whaosoft 写道

xp里有个叫hosts的文件 你不知道?

NC, 我告诉你2000里也有
4 楼 whaosoft 2008-11-26  
xp里有个叫hosts的文件 你不知道?
3 楼 luzl 2008-11-26  
首先让它过来,然后再解析获得特殊的部分.
2 楼 wnick 2008-11-25  
学习



凑字数
1 楼 amcucn 2008-11-25  
收藏了,好文章!一直不明白其中的道理,看了你的文章,呵呵!

相关推荐

    Assembly Language Step-by-Step

    ### 《Assembly Language Step-by-Step》知识点梳理 #### 一、书籍基本信息 - **书名**:《Assembly Language Step-by-Step》 - **作者**:Jeff Duntemann - **出版社**:Wiley Publishing, Inc. - **出版年份**:...

    Assembly Language Step-By-Step - (Wiley, 2009, 0470497025).pdf

    《Assembly Language Step-by-Step: Programming with Linux》(第三版)是一本深入讲解汇编语言及其在Linux环境下的应用的专业书籍。本书由Jeff Duntemann编写,并于2009年由Wiley出版社出版。该书不仅适合初学者...

    BMC - Step-by-Step Guide to Building a CMDB - 130016

    BMC - Step-by-Step Guide to Building a CMDB 本指南旨在帮助IT专业人员和企业逐步建立 Configuration Management Database(CMDB),以提高IT服务管理的效率和效力。CMDB是IT基础设施的核心组件,旨在存储和管理...

    React Quickstart Step-By-Step Guide To Learning React Javascript Library 无水印pdf

    React Quickstart Step-By-Step Guide To Learning React Javascript Library 英文无水印pdf pdf所有页面使用FoxitReader和PDF-XChangeViewer测试都可以打开 本资源转载自网络,如有侵权,请联系上传者或csdn...

    The VIRL BOOK A Step-by-Step Guide Using Cisco Virtual Internet Routing Lab

    The VIRL BOOK A Step-by-Step Guide Using Cisco Virtual Internet Routing Lab

    Spring MVC step-by-step 源码

    这个"Spring MVC step-by-step 源码"项目将引导你逐步了解和实践上述知识点,帮助你掌握Spring MVC的使用和原理,为更深入的Java Web开发打下坚实基础。通过阅读和运行这个项目,你可以亲身体验Spring MVC的每个环节...

    Installing-Mumax-and-Gnuplot-in-Windows-10-Step-by-Step

    这是因为 Mumax 3.9.1 需要使用 NVIDIA 显卡来进行模拟计算。安装 NVIDIA 显示驱动程序的步骤如下: 1. 打开 NVIDIA 官方网站,下载相应的驱动程序。 2. 安装驱动程序,按照提示进行安装。 3. 重启计算机,以确保...

    React Quickstart Step-By-Step Guide To Learning React Javascript Library azw3

    React Quickstart Step-By-Step Guide To Learning React Javascript Library 英文azw3 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系上传者或csdn删除

    Assembly Language Step-by-Step洋文 txt

    ### Assembly Language Step-by-Step:深入理解与实践 #### 标题解读: 标题“Assembly Language Step-by-Step洋文 txt”表明这是一本关于汇编语言的书籍,采用逐步指导的方式进行教学,适合初学者逐步深入地学习...

    ADFS_Step-by-Step_Guide

    《ADFS Step-by-Step Guide》是由Microsoft Corporation发布的技术文档,旨在帮助用户在小型测试实验室环境中逐步安装和配置Active Directory Federation Services(ADFS)。ADFS是一个用于实现跨组织身份验证和授权...

    j2me-step-by-step.rar_java programming

    **Java 2 Micro Edition (J2ME) 编程指南** **一、J2ME简介** Java 2 Micro Edition(J2ME)是Java技术的一个重要分支,主要用于嵌入式设备和移动设备的开发,如手机、智能家电、PDA等。J2ME提供了在这些资源受限的...

    Spring-MVC-step-by-step.zip_Java MVC spring_Java spring mvc_sp

    本教程中的"Spring-MVC-step-by-step.pdf"文件将详细介绍上述概念,并通过实例代码演示如何配置和使用Spring MVC,帮助你一步步实践每个知识点。 总之,Spring MVC是Java Web开发的强大工具,理解并掌握其工作原理...

    Pro Tableau A Step-by-Step Guide 无水印原版pdf

    Pro Tableau A Step-by-Step Guide 英文无水印原版pdf pdf所有页面使用FoxitReader、PDF-XChangeViewer、SumatraPDF和Firefox测试都可以打开 本资源转载自网络,如有侵权,请联系上传者或csdn删除 查看此书详细...

    Vue Step-By-Step Guide To Mastering Vue.js From Beginner To Advanced 无水印pdf

    Vue Step-By-Step Guide To Mastering Vue.js From Beginner To Advanced 英文无水印pdf pdf所有页面使用FoxitReader和PDF-XChangeViewer测试都可以打开 本资源转载自网络,如有侵权,请联系上传者或csdn删除 ...

    Angular Essentials Step-by-Step Guidance With Code Examples epub

    Angular Essentials Step-by-Step Guidance With Code Examples 英文epub 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系上传者或csdn删除

    Learn Visual C# A Step-By-Step Programming Tutorial epub

    Learn Visual C# A Step-By-Step Programming Tutorial 英文epub 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系上传者或csdn删除

    CGAL Arrangements and Their Applications A Step-by-Step Guide.rar

    CGAL是Computational Geometry Algorithms Library(计算几何算法库)的缩写,用C++语言提供高效、可靠的算法库。被广泛应用于几何计算相关的领域,如信息可视化系统,计算机辅助设计,分子生物学,医学图像处理,...

    STEP-BY-STEP--LUA.zip_lua_lua脚本_step by step

    "STEP-BY-STEP--LUA.zip_lua_lua脚本_step by step" 这个标题表明,这是一个关于Lua脚本语言逐步学习的压缩包资源。它可能包含了逐步学习教程,帮助用户从基础到进阶掌握Lua编程。 **描述分析:** "Lua脚本语方学习...

    React Quickstart Step-By-Step Guide To Learning React Javascript Library epub

    React Quickstart Step-By-Step Guide To Learning React Javascript Library 英文epub 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系上传者或csdn删除

Global site tag (gtag.js) - Google Analytics