0

私の場合、web.xml次のようなサーブレットの URL パターンがあります。

<url-pattern>/*/myservice</url-pattern>

blablabla/myserviceだから私はそれをas も使って呼びたいanyWord/myservice

しかし、うまくいきません。この URL を使用して呼び出す場合にのみ機能します: /*/myservice (URL にアスタリスクを使用)。

4

3 に答える 3

2

そんなことはできません。サーブレット 2.5 仕様 (仕様の他のレベルでもそれほど違いはありません) によると、SRV.11.2 の章:

  • パス マッピングには、文字で始まりサフィックス/で終わる文字列が使用されます。/*
  • プレフィックスで始まる文字列*.は、拡張マッピングとして使用されます。
  • 文字のみを含む文字列/は、アプリケーションの「デフォルト」サーブレットを示します。この場合、サーブレット パスはリクエスト URI からコンテキスト パスを引いたものであり、パス情報は null です。
  • 他のすべての文字列は、完全一致のみに使用されます。

あなたのケースは 4 番目の箇条書きに該当するため、正確なマッピングが使用されます。

これを回避するには、/(3 番目のケース) のマッピングを使用します。すべてのリクエストを特定のサーブレットにマップし、そのサーブレットがリクエストを何らかのハンドラー (他のサーブレットまたはカスタム クラス) に再ルーティングするようにします。

例えば:

<url-pattern>/</url-pattern>
<servlet-name>MyServlet</servlet-name>

次に、MyServletのコード内で、リクエストで受け取った URL を ( を使用してrequest.getPathInfo()) 検査し、値を使用してリクエストを他のハンドラーに転送します。

于 2012-12-06T05:48:54.583 に答える
1

URL パターンが /* のときにフィルターを使用でき、フィルター内で必要なリダイレクトを決定できます。

<filter>
<display-name>MyFilter</display-name>
<filter-name>MyFilter</filter-name>
<filter-class>com.MyfilterClass</filter-class>

<filter-mapping>
<filter-name>MyFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

</filter>
于 2012-12-06T06:01:23.453 に答える
0

2 つの ULR マッピング セクションについてはどうでしょうか。

  <servlet-mapping>  
    <servlet-name>ModifyMemberSVL</servlet-name>  
    <url-pattern>/ModifyMember</url-pattern>  
  </servlet-mapping>  
  <servlet-mapping>  
    <servlet-name>ModifyMemberSVL</servlet-name>  
    <url-pattern>/Administration/Add_Member/ModifyMember</url-pattern>  
  </servlet-mapping>  
于 2012-12-06T06:03:25.457 に答える