3

この単純なサーブレット アプリケーションを作成するために、JDK 7 で Tomcat 7 と Eclipse を使用しています。しかし、war ファイルを tomcat にコピーすると、起動できず、次のエラーが発生します。

[create_subscription] および [servlet.create] という名前のサーブレットは両方とも、許可されていない URL パターン [/create] にマップされています

web.xml は次のとおりです。

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>CC</display-name>
  <welcome-file-list>
  <welcome-file>index.html</welcome-file>
  <welcome-file>index.htm</welcome-file>
  <welcome-file>index.jsp</welcome-file>
  <welcome-file>default.html</welcome-file>
  <welcome-file>default.htm</welcome-file>
  <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>

<servlet>
  <servlet-name>create_subscription</servlet-name>
  <servlet-class>servlet.create</servlet-class>
</servlet>

<servlet-mapping>
  <servlet-name>create_subscription</servlet-name>
  <url-pattern>/create</url-pattern>
</servlet-mapping>

</web-app>
4

3 に答える 3

9

web.xmlとアノテーションの両方で同じマッピングが宣言されている場合、Tomcatの新しいバージョンでこの正確なエラーが発生します。

于 2013-03-15T01:42:03.893 に答える
1

サーブレット クラスを確認します。@WebServlet("/xyz") になります。この行にコメントを付けると、正常に動作するはずです。

または、 @WebServlet(value="/create",name="create_subscription") として使用できます

実際に @WebServlet("/xyz") を使用すると、サーブレット名が完全修飾サーブレット名と見なされます。したがって、Tomcat は、1 つの URL に対して 2 つのサーブレット マッピングがあると考えているため、エラーが発生します。

于 2015-02-23T09:26:52.373 に答える
0

servlet.create で別のエントリがあるのではないかと思います。war 内の web.xml を表示できますか。

問題がなければ、おそらくパッケージ宣言を servlet.create から com.test などに変更して、再実行してください。

2 つのサーブレットをまったく同じ URL パターンにマップできない理由について

サーブレットの仕様には明示的に記載されていませんが、一部のサーバーでは許可されていません。さらに、サーブレットへの URL の一致は最初の一致で停止するため、まったく同じ URL を 2 つ持つことは意味がありません。

サーブレット 2.4仕様 PDF 85歳以上

于 2013-02-07T11:34:44.800 に答える