1

サーブレット コンテキスト リスナーの web.xml に次のコンテンツを追加しました---

 <listener>
 <listener-class>
 com.anyaservices.log4j.ApplicationServletContextListener
 </listener-class>
 </listener>

「welcome-file-list」の直後にこれを追加しました

ウェルカム ファイル リスト ノードの最後の行を以下に示します。

 </welcome-file-list>

ここで、コンテキスト リスナを使用できるように、サーブレットにいくつかの変更を加えました。サーブレットに加えて、ウェルカム メッセージを表示するだけの「Hello.jsp」ファイルがあります。

JSP ファイルに変更を加えていません。しかし、サーブレット コンテキスト リスナのコードを変更した後、Hello.jsp に移動しようとすると、Tomcat= The requested resource is not available. でエラーが発生します。

ここで私は何を間違えましたか?JSP ファイルが現在表示されていないのはなぜですか?

編集-- 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_2_5.xsd" id="WebApp_ID" version="2.5">
    <display-name>Test Web Application</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>Hello.jsp</welcome-file>
    </welcome-file-list>
    <listener>
    <listener-class>
     com.test.log4j.ApplicationServletContextListener
    </listener-class>
  </listener>
    <servlet>
      <description>Used to run a single crawl job</description>
      <display-name>runsinglecrawljob</display-name>
      <servlet-name>runsinglecrawljob</servlet-name>
      <servlet-class>com.test.runsinglecrawljob</servlet-class>
    </servlet>
    <servlet-mapping>
      <servlet-name>runsinglecrawljob</servlet-name>
      <url-pattern>/runsinglecrawljob</url-pattern>
    </servlet-mapping>
    <servlet>
      <description>Home page</description>
      <display-name>home</display-name>
      <servlet-name>home</servlet-name>
      <servlet-class>home</servlet-class>
    </servlet>
    <servlet-mapping>
      <servlet-name>home</servlet-name>
      <url-pattern>/home</url-pattern>
    </servlet-mapping>
    <servlet>
      <description>Run a single crawl job after asking users for parameters of that       job</description>
      <display-name>runsinglejob</display-name>
      <servlet-name>runsinglejob</servlet-name>
      <servlet-class>com.test.runsinglecrawljob</servlet-class>
    </servlet>
    <servlet-mapping>
      <servlet-name>runsinglejob</servlet-name>
      <url-pattern>/runsinglejob</url-pattern>
    </servlet-mapping>

  </web-app>

アクセスしようとしている URL は http://localhost:8080/test_web_app/Hello.jsp です。

4

1 に答える 1

0

Tomcat は、org.apache.jasper.servlet.JspServlet を介して JSP ファイルを処理します。おそらく、何らかの理由でリスナー クラスが JspServlet の操作に干渉している可能性があります。ウェルカム ファイル リストにすべてのファイルをリストする必要はありません。war 内の任意の jsp ファイルを使用できるようにする必要があります (ただし、WEB-INF または META-INF フォルダー内に配置しないでください)。

log4j の設定を確認する必要があると思います。WEB-INF/classes の log4j.properties ファイルで log4j を初期化しましたか?

于 2012-08-07T21:00:36.957 に答える