1

私は JSF 2.0.5、Tomcat 7.0.12、および prettyfaces を使用しています。

私の web.xml ファイルは次のとおりです。

<welcome-file-list>
    <welcome-file>/index.jsp</welcome-file>
</welcome-file-list> 

私のきれいなファイル構成:

<url-mapping>
    <pattern>/</pattern>
    <view-id>/jsp/index.jsf</view-id>
</url-mapping> 

index.jsp ファイルが空です。

私の質問は、URL 'foo.com' を書き込むと、最終的に http://www.foo.com/jsp/index.jsfにリダイレクト (301) されるということです。

私の Phase リスナーでは次のことを意味します。

HttpServletRequest req = (HttpServletRequest)context.getExternalContext().getRequest(); 
StringBuffer requestUrl = req.getRequestURL(); // i get http://www.foo.com/jsp/index.jsf

なぜ彼が jsp/index.jsf を叩いているのか誰か説明できますか?

誰かがぶつかったときに認識したいのでfoo.comwww.foo.com

4

2 に答える 2

1

誰かがアクセスしhttp://foo.com/たりhttp://www.foo.com/、設定を使用したりすると、PrettyFaces はリクエストをインターセプトし、内部的に に転送し/jsp/index.jsfます。PhaseListener はこの転送されたリクエストのみを参照するため、 のみを参照します/jsp/index.jsf

元の URL を取得する場合は、PrettyContext.getCurrentInstance().getRequestURL().toURL().

ただし、あなたのケースで少し奇妙なことの 1 つは、ユーザーがルート パスにアクセスするとリダイレクト (301) されると書いていることです。これにより、リダイレクト後に元のリクエストからすべての情報が失われるため、上記の提案が機能しない可能性があります。

おそらく、あなたのwelcome-fileエントリを削除して、このリダイレクトを引き起こす可能性のあるweb.xml他の書き換えルールがないことを確認してください。pretty-config.xml

于 2012-06-02T08:40:46.927 に答える
0

「/」パターンは、アプリケーションのコンテキスト ルートを意味します。この場合、www.foo.com を意味します。"/" から /jsp/index.jsf へのマッピングがあるため、サーブレット コンテナーはそこに移動します。

于 2012-05-09T15:28:48.217 に答える