1

私はWebプログラミングに非常に慣れていないので、入力フォームからデータを収集し、を介してサーブレットに渡す簡単なアプリケーションを作成しようとしていますHTTPServletRequest。各サーブレットは、内の特定のURLにマップする必要があることを知っていますweb.xml。私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>InputFormTest</display-name>
  <welcome-file-list>
    <welcome-file>InputForm.jsp</welcome-file>
  </welcome-file-list>
  <servlet>
    <description></description>
    <display-name>InputFormTest</display-name>
    <servlet-name>InputFormTest</servlet-name>
    <servlet-class>com.jsp.core.InputFormTest</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>InputFormTest</servlet-name>
    <url-pattern>/InputFormTest</url-pattern>
  </servlet-mapping>
</web-app>

InputForm.jspが正しく表示されます。Eclipseのコンテキストメニューを使用してInputFormTestサーブレットを追加しました。つまり、[新規]-> [サーブレット]で、次のコードがあります。

package jsp.core;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class InputFormTest
 */
public class InputFormTest extends HttpServlet {
    private static final long serialVersionUID = 1L;

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
        out.println("<html>");
        out.println("<head>");
        out.println("<title>InputFormTest</title>");
        out.println("</head>");
        out.println("<body>");
        out.println("<h1>User inserted: " + request.getParameter("id") + "</h1>");
        out.println("</body>");
        out.println("</html>");
    }
}

私には2つの問題があります:

  1. まず、Eclipse内でアプリケーションを実行した後、次のエラーが発生します

    HTTPステータス404-/InputFormTest


    タイプステータスレポート

    メッセージ/InputFormTest

    description要求されたリソースは利用できません。


    Apache Tomcat / 6.0.36

  2. 第二に、変更<url-pattern>/InputFormTest</url-pattern>web.xmlても上記の出力には影響しません。これは奇妙なことですmessage /InputFormTestweb.xml

ヒントをいただければ幸いです。

4

3 に答える 3

5

OK、私はついにそれを理解しました。推測できるように、答えは簡単です。Eclipseの内部ブラウ​​ザーはページをキャッシュします。

つまり、「実行」->「サーバーで実行」を使用して新しく変更されたプロジェクトを実行した後にEclipse内部ブラウ​​ザーに表示されるページは、古いキャッシュされたページです。後で手動で更新する必要があります。Web開発プロジェクトの場合の一種の奇妙な振る舞い。それを除けば、すべてが正常に機能します-ケースは閉じられています。

于 2012-11-16T10:20:13.707 に答える
0

サーバーとサーバーエクスプローラーを右クリックし、[クリーン]をクリックします。アプリケーションを再実行してみてください。私はそれがうまくいくと思います。

お役に立てれば。

于 2013-06-06T19:59:11.547 に答える
0

上記の答えに追加しようとしています:

サーバーのキャッシュをクリアしてプロジェクトを更新しても、それでも機能しない場合は、使用しているWebブラウザーのキャッシュをクリアしてみてください。これは、更新されたWebXMLを機能させるために実行しなければならなかった最後のステップでした。

于 2016-04-24T05:41:02.697 に答える