0

私の Apache tomcat インストール ディレクトリは C:\apache-tomcat-7.0.42 です。

webapps フォルダーに index.html と WEB-INF フォルダーを作成しました。

index.html

<html>
<form action="MyServlet" method="post">
<pre>
        Enter A: <input type="text" name="fieldA">
        Enter B: <input type="text" name="fieldA">          
        Add <input type="radio" name="operation" value="add"> 
        Sub <input type="radio" name="operation" value="sub"> 
        Add <input type="radio" name="operation" value="mul"> 
        Div <input type="radio" name="operation" value="div">           
        <input type="submit" value="submit">
        Result: <input type="text" name="result">           
<pre>
</form>
</body>
</html>

WEB-INF フォルダーに web.xml と「classes」という名前のフォルダーを作成しました

web.xml

<web-app>
<servlet>
    <servlet-name>MyServlet</servlet-name>
    <servlet-class>MyServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>MyServlet</servlet-name>
    <url-pattern>/*</url-pattern>
</servlet-mapping>
</web-app>

webapps/pravesh/WEB-INF/classes フォルダーに MyServlet.java を作成しました

MyServlet.java

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.io.IOException;
import javax.servlet.ServletException;

public class MyServlet extends HttpServlet
{

public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException
{
    response.setContentType("text/html");
    PrintWriter out=response.getWriter();
    out.println("<html><body>");
    out.println("doGet");
    out.println("</body></html>");
    out.close();
}

}

localhost:8080 と入力すると表示されるように、実行中の tomcat サーバーを起動します。

問題:- 1) localhost:8080/pravesh/index.html と入力すると、html ページが表示されません。代わりに、フォームを自動的に送信し、MyServlet を実行してページに印刷します。

doGet

ただし、WEB-INF フォルダー全体を削除すると、html ページが表示されます。

2) MyServlet.java に doPost() を配置し、index.html フォームのメソッドを post に変更すると、doGet() の代わりに、「この URL では HTTP メソッド GET がサポートされていません」と表示されます。

4

1 に答える 1

1

<url-pattern>/*</url-pattern>キャッチ。/pravesh/index.htmlしたがって、サーブレットMyServletはリクエスト (実際には GET リクエスト) を処理します。

アプリケーションの静的リソースをトラップしないパターンが必要です。フォームには次のものがあります。

<form action="MyServlet" method="post">

パターンは次のようになります。

<url-pattern>/MyServlet</url-pattern>
于 2013-08-02T21:49:26.720 に答える