元の URL に応じて異なるコンテンツを提供する単一の webapp のみが必要な場合は、単純にjavax.servlet.Filter
. 最初に でフィルターを宣言しますweb.xml
。
<filter>
<filter-name>DomainNameFilter</filter-name>
<filter-class>com.whatever.blah.DomainNameFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>DomainNameFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
DomainNameFilter
次に、を実装するという名前のクラスを作成しますjavax.servlet.Filter
。このdoFilter()
メソッドでは、次のように元の URL を取得できます。
request.getServerName()
chain.doFilter(request, response);
他のフィルターを使用している場合も忘れずに呼び出してください。元のドメイン名がわかったので、適切な応答を作成できます。doFilter()
メソッドにドメイン固有の属性を次のように設定することで、これを行いました。
request.setAttribute("title", titleMap.get(request.getServerName()));
はtitleMap
、のメソッドHashMap
で DB からロードされるです。たとえば、JSP で値を使用するには、次のようにアクセスします。Filter
init()
<title><%=request.getAttribute("title")%></title>
実際の例を見たい場合は、http://thermodynamiccomputing.org/とhttp://fnode.xeiam.com/をチェックしてください。両方のこれらの Web サイトは、実際には、先ほど説明したフィルタリング手法を使用したまったく同じ Web アプリケーションです。