Html表单自动调用Servlet而不提交

时间:2013-08-02 21:42:50

标签: java html xml tomcat servlets

我的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文件夹中,我创建了名为“classes”的web.xml和文件夹

的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();
}

}

我启动tomcat服务器,当我键入localhost:8080时,它正在运行。

问题: - 1)当我输入localhost:8080 / pravesh / index.html时,它不显示我的html页面。相反,它会自动提交表单并运行MyServlet并在页面上打印

doGet

虽然如果删除整个WEB-INF文件夹,html页面会显示。

2)如果我将doPost()放在MyServlet.java中并将index.html表单的方法更改为post,而不是doGet(),则表示“此URL不支持HTTP方法GET”。

1 个答案:

答案 0 :(得分:1)

<url-pattern>/*</url-pattern>抓住/pravesh/index.html。因此,servlet MyServlet处理请求(实际上是GET请求)。

您需要一种不会捕获应用程序静态资源的模式。在您的表格中,您有:

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

模式应为:

<url-pattern>/MyServlet</url-pattern>