1

私には 2 つのクライアントがあり、それぞれがほぼ同じデザインのレストランのウェブサイトです。

メインページ、メニューページ、お問い合わせページなどがあります。

おそらく自分の Amazon AWS 仮想マシンの Tomcat または GlassFish で実行されている Java でこれを構築したいと考えています。

私の質問は、次の場所に Web アプリケーションが 1 つある場合です。

1.2.3.4/myapp

どこ

1.2.3.4/myapp?clientid=1

レストラン A の Web サイトを表示し、

1.2.3.4/myapp?clientid=2

レストランBのウェブサイトを表示

どうすれば設定できますか:

www.restaurantA.comの内容を示します1.2.3.4/myapp?clientid=1

www.restaurantB.comの内容を示します1.2.3.4/myapp?clientid=2

?

提案やアイデアは大歓迎です!

4

2 に答える 2

0

Tomcatこれは、私が現在展開しているソリューションです。?clientid=1とを使用する代わりに、送信元アドレスに応じて特定の Web アプリに要求を渡すようにファイルを?clientid=2構成できます。で:server.xmlIPserver.xml

<Host name="www.restaurantA.com"  
    appBase="restaurantA"
    unpackWARs="true" 
    autoDeploy="true">
</Host>
<Host name="www.restaurantB.com"  
    appBase="restaurantB"
    unpackWARs="true" 
    autoDeploy="true">
</Host>

次に で$TOMCAT_HOME/、 とwebappsという名前の 2 つのフォルダを作成しrestaurantAますrestaurantBROOT.war正しいフォルダにWeb アプリケーションをデプロイし、再起動しTomcatます。私の意見では、このソリューションははるかにクリーンであり、Web アプリケーションを互いに完全に分離します。

于 2012-08-27T15:09:10.330 に答える
0

元の 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 で値を使用するには、次のようにアクセスします。Filterinit()

<title><%=request.getAttribute("title")%></title>

実際の例を見たい場合は、http://thermodynamiccomputing.org/http://fnode.xeiam.com/をチェックしてください。両方のこれらの Web サイトは、実際には、先ほど説明したフィルタリング手法を使用したまったく同じ Web アプリケーションです。

于 2012-08-28T07:44:07.317 に答える