﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>语源科技BlogJava-子在川上曰</title><link>http://www.blogjava.net/chengang/</link><description>　　逝者如斯夫不舍昼夜</description><language>zh-cn</language><lastBuildDate>Wed, 22 Jul 2026 13:52:43 GMT</lastBuildDate><pubDate>Wed, 22 Jul 2026 13:52:43 GMT</pubDate><ttl>60</ttl><item><title>《Eclipse从入门到精通》随书光盘地址</title><link>http://www.blogjava.net/chengang/archive/2017/12/29/432993.html</link><dc:creator>陈刚</dc:creator><author>陈刚</author><pubDate>Fri, 29 Dec 2017 07:37:00 GMT</pubDate><guid>http://www.blogjava.net/chengang/archive/2017/12/29/432993.html</guid><wfw:comment>http://www.blogjava.net/chengang/comments/432993.html</wfw:comment><comments>http://www.blogjava.net/chengang/archive/2017/12/29/432993.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/chengang/comments/commentRss/432993.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/chengang/services/trackbacks/432993.html</trackback:ping><description><![CDATA[<div>我的新博客地址：&nbsp;<a href="http://www.yowob.cn">yowob.cn</a></div>
<div><br />
<div><span style="font-family: arial;">书的软件和代码放在百度网盘：</span><a href="https://pan.baidu.com/s/1kVb31aR" _src="https://pan.baidu.com/s/1kVb31aR" target="_blank" style="word-break: break-word; font-family: arial;">https://pan.baidu.com/s/1kVb31aR</a></div>
<div><br />
</div>
<div><br />
</div>
</div><img src ="http://www.blogjava.net/chengang/aggbug/432993.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/chengang/" target="_blank">陈刚</a> 2017-12-29 15:37 <a href="http://www.blogjava.net/chengang/archive/2017/12/29/432993.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>二级域名的java实现</title><link>http://www.blogjava.net/chengang/archive/2010/12/29/341939.html</link><dc:creator>陈刚</dc:creator><author>陈刚</author><pubDate>Wed, 29 Dec 2010 15:19:00 GMT</pubDate><guid>http://www.blogjava.net/chengang/archive/2010/12/29/341939.html</guid><wfw:comment>http://www.blogjava.net/chengang/comments/341939.html</wfw:comment><comments>http://www.blogjava.net/chengang/archive/2010/12/29/341939.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/chengang/comments/commentRss/341939.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/chengang/services/trackbacks/341939.html</trackback:ping><description><![CDATA[最近在做一个自建网站平台(<a href="http://www.yowob.com">http://www.yowob.com</a>&nbsp;)，其他涉及到为用户提供一个二级域名功能，实现方法如下：<br />
<br />
(1)首先要在域名服务商端做一个泛域名解析. 我用的是godaddy.com,就新建一个A记录(host=*,point to指向我的服务器的ip),这样所有二级域名都会转到我的服务器来了<br />
<br />
(2)接着在web.xml配一个自已写的域名过滤器,<br />
<br />
<div style="padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; border-left-color: #cccccc; word-break: break-all; padding-top: 4px"><!--<br />
<br />
Code highlighting produced by Actipro CodeHighlighter (freeware)<br />
http://www.CodeHighlighter.com/<br />
<br />
--><span style="color: #008000">&nbsp;&nbsp;&nbsp;&nbsp;&lt;filter&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;filter-name&gt;URLFilter&lt;/filter-name&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;filter-class&gt;com.yowob.commons.URLFilter&lt;/filter-class&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;/filter&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;filter-mapping&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;filter-name&gt;URLFilter&lt;/filter-name&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;url-pattern&gt;/*&lt;/url-pattern&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;/filter-mapping&gt;</span></div>
<br />
过滤器的代码如下。这里先将二级域名和全球域名和用户ID的映射,保存在一个数据表里, 然后访问进来时对地址做一个判断, 再取出对应的用户ID. 再转一下就行了. 我的静态文件都在static目录，所以还加了一个static的判断。<br />
比如: <a href="http://time.you.com/board/21">http://time.you.com/board/21</a> 用time对应用户ID为6,则访问效果有&nbsp;<a href="http://time.you.com/board/21">http://www.you.com/6/board/21</a>相同, 不过地址栏还是显示<a href="http://time.you.com/board/21">http://time.you.com/board/21</a>。<br />
再比如：htttp://www.userdomain.com/board/21，这个是用户ID为6的全球域名，访问效果也和上面一样。<br />
<br />
<div style="border-bottom: #cccccc 1px solid; border-left: #cccccc 1px solid; padding-bottom: 4px; background-color: #eeeeee; padding-left: 4px; width: 98%; padding-right: 5px; font-size: 13px; word-break: break-all; border-top: #cccccc 1px solid; border-right: #cccccc 1px solid; padding-top: 4px"><span style="color: #0000ff">package</span><span style="color: #000000">&nbsp;com.yowob.commons;<br />
<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.io.IOException;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.util.HashMap;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.util.List;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;java.util.Map;<br />
<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.servlet.Filter;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.servlet.FilterChain;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.servlet.FilterConfig;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.servlet.ServletException;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.servlet.ServletRequest;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.servlet.ServletResponse;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;javax.servlet.http.HttpServletRequest;<br />
<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;org.apache.commons.lang.StringUtils;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;org.apache.commons.lang.math.NumberUtils;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;org.apache.commons.logging.Log;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;org.apache.commons.logging.LogFactory;<br />
<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;com.yowob.Constants;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;com.yowob.dao.SiteDAO;<br />
</span><span style="color: #0000ff">import</span><span style="color: #000000">&nbsp;com.yowob.dto.SiteDTO;<br />
<br />
</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">class</span><span style="color: #000000">&nbsp;URLFilter&nbsp;</span><span style="color: #0000ff">implements</span><span style="color: #000000">&nbsp;Filter&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">final</span><span style="color: #000000">&nbsp;Log&nbsp;log&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;LogFactory.getLog(URLFilter.</span><span style="color: #0000ff">class</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">final</span><span style="color: #000000">&nbsp;String&nbsp;DOMAIN_END&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">"</span><span style="color: #000000">.</span><span style="color: #000000">"</span><span style="color: #000000">&nbsp;</span><span style="color: #000000">+</span><span style="color: #000000">&nbsp;Constants.DOMAIN;&nbsp;</span><span style="color: #008000">//</span><span style="color: #008000">.you.com</span><span style="color: #008000"><br />
</span><span style="color: #000000">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">final</span><span style="color: #000000">&nbsp;Map</span><span style="color: #000000">&lt;</span><span style="color: #000000">String,&nbsp;Long</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;NAME_MAP&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;HashMap</span><span style="color: #000000">&lt;</span><span style="color: #000000">String,&nbsp;Long</span><span style="color: #000000">&gt;</span><span style="color: #000000">();<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">private</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">final</span><span style="color: #000000">&nbsp;Map</span><span style="color: #000000">&lt;</span><span style="color: #000000">String,&nbsp;Long</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;DOMAIN_MAP&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;HashMap</span><span style="color: #000000">&lt;</span><span style="color: #000000">String,&nbsp;Long</span><span style="color: #000000">&gt;</span><span style="color: #000000">();<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;@Override<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;init(FilterConfig&nbsp;filterConfig)&nbsp;</span><span style="color: #0000ff">throws</span><span style="color: #000000">&nbsp;ServletException&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;log.info(</span><span style="color: #000000">"</span><span style="color: #000000">------------------------------init</span><span style="color: #000000">"</span><span style="color: #000000">);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SiteDAO&nbsp;siteDAO&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">new</span><span style="color: #000000">&nbsp;SiteDAO();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;List</span><span style="color: #000000">&lt;</span><span style="color: #000000">SiteDTO</span><span style="color: #000000">&gt;</span><span style="color: #000000">&nbsp;list&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;siteDAO.getAll();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">for</span><span style="color: #000000">&nbsp;(SiteDTO&nbsp;siteDTO&nbsp;:&nbsp;list)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;name&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;siteDTO.getName();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(StringUtils.isNotEmpty(name))&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NAME_MAP.put(name,&nbsp;siteDTO.getId());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;String&nbsp;domain&nbsp;</span><span style="color: #000000">=</span><span style="color: #000000">&nbsp;siteDTO.getDomain();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(StringUtils.isNotEmpty(domain))&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DOMAIN_MAP.put(domain,&nbsp;siteDTO.getId());<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;&nbsp;}<br />
<br />
&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">public</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">static</span><span style="color: #000000">&nbsp;</span><span style="color: #0000ff">void</span><span style="color: #000000">&nbsp;updateName(String&nbsp;oldValue,&nbsp;String&nbsp;newValue,&nbsp;Long&nbsp;siteId)&nbsp;{<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff">if</span><span style="color: #000000">&nbsp;(S