web-dev-qa-db-ja.com

サーブレットマッピング:末尾のスラッシュを含むURLのURLパターン

サーブレットマッピングに関連する問題があります。 web.xmlに次のものがあります。

<servlet>
    <servlet-name>HelloWorldServlet</servlet-name>
    <servlet-class>test.HelloWorldServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>HelloWorldServlet</servlet-name>
    <url-pattern>/HelloWorld</url-pattern>
</servlet-mapping>

http://localhost:<port>/MyApp/HelloWorldにアクセスすると、サーブレットHelloWorldServletが呼び出されます。

また、私のサーブレットがhttp://localhost:<port>/MyApp/HelloWorld/に応答することを望みます。どうすればこの効果を達成できますか? NetBeansを使用して開発していますが、/で終わるパターンを配置できません。

26
Gabriel Llamas

_<url-pattern>_にワイルドカードを追加した後

_<url-pattern>/HelloWorld/*</url-pattern>
_

HttpServletRequest.getPathInfo() を使用して、URLに関連付けられた追加のパスを取得できます。

例えば。

_http://localhost:<port>/MyApp/HelloWorld/one/_

結果は

_/one/
_

JavaDocから:

クライアントがこの要求を行ったときに送信したURLに関連付けられた追加のパス情報を返します。追加のパス情報は、サーブレットのパスに続きますが、クエリ文字列の前にあり、「/」文字で始まります。

29
Buhake Sindi

ワイルドカードを使用します。特定のURLに向かうすべてのトラフィックを同じサーブレットにリダイレクトできます。たとえば、次を追加できます。

<servlet-mapping>
    <servlet-name>HelloWorldServlet</servlet-name>
    <url-pattern>/HelloWorld/*</url-pattern>
</servlet-mapping>

これにより、スラッシュ付きのURLが元のサーブレットにリダイレクトされます。

ある考え-これは、このURLパターンにあるものをサーブレットにリダイレクトします。他のURLがこのURLを通過したい場合は、(指定されたURLを見て)正しいURLにリダイレクトするサーブレットを作成する必要があります。または、マッピングを提供するフレームワークを使用できます。

7
Jonathan B