0

Tomcat が余分なパス情報をサーブレット名の一部として扱っているという問題があります。これにより、Web アプリケーションの一連の RESTFul 機能が壊れています (クローラーに適したリンクに ?name=value のペアではなく、追加のパス情報を使用しています)。

以前は正しく機能していましたが、明示的なマッピングを追加し、Invokerサーブレットを提供するために以前使用していたサーブレットを削除すると、機能しなくなりました。たとえば、次のリンクを考えてみましょう。

http://mydomain.com/servlet/MyServlet/param1/param2/param3

MyServlet以前は正しく呼び出され、「/param1/param2/param3」が によって返されgetPathInfo()ましたHttpServletRequest

現在、Tomcat は MyServlet/param1/param2/param3 をサーブレットとしてロードしようとしているようです。

[2008/09/23:16:44:23 -0700] "GET /servlet/MyServlet/param1/param2/param3 HTTP/1.0" 404

これらを web.xml で定義およびマッピングする方法を次に示します。「http://mydomain.com/servlet/MyServlet」を押すだけで問題なく動作します。

<servlet>
  <servlet-name>MyServlet</servlet-name>
  <servlet-class>com.myclass.etcetera.MyServlet</servlet-class>
</servlet>

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

1 に答える 1

2

/servlet/MyServlet/* にマップする必要があります

末尾の「/*」がありません。

于 2008-09-24T00:47:15.197 に答える