java - Html Form无需提交自动调用Servlet

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

网络.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 表单的方法更改为发布,而不是 doGet(),它会显示“此 URL 不支持 HTTP 方法 GET”。

最佳答案

<url-pattern>/*</url-pattern> catch /pravesh/index.html .所以,servlet MyServlet处理请求(实际上是 GET 请求)。

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

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

模式应该是:

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

关于java - Html Form无需提交自动调用Servlet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18026559/

相关文章:

html - 在移动 View 电子邮件 html 中打破特定字母的单词

java - 使用XSLT输出多个文件

java - 从 c :out tag to struts s:text tag 传递一个参数

java - 为 java 6 而不是 java 7 编译有什么缺点吗?

javascript - 用包含内联脚本的 HTML 代码替换完整的 HTML 文档

html - 周 View 小时段 Angular 日历

java - globalBinding 标签可以包含在根元素中吗?

java - 在 powermock 中模拟可能为空值的方法

java - 使用 TestSuite 跨包收集测试用例

java - android应用程序存储ArrayList内容的最佳方法?