0

我是 servlet 的新手,我开发了一个 html 页面,它有一个触发我的 servlet 的提交按钮。一切正常。但现在我想使用 GET 方法,因为我的 html 页面没有发布任何内容。因此我做了以下更改: 1) 在我的 page.html 文件中,我将 method="POST" 替换为 method="GET"。2)我在我的servlet 中用doGet 改变了doPost。但我收到“此处不允许获取”的错误消息。为什么会这样?以下是正常工作的原始文件(在进行更改之前):

我的 page.html 页面:

<html>
<head>
<title>A simple revision of servlets</title>
</head>
<body>
<form method="POST" action="Idiot">
    <input type="SUBMIT">
</form>
</body>
</html>

我的部署描述符:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
version="2.5">
<servlet>
<servlet-name>TangoCharlie</servlet-name>
<servlet-class>Revise</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>TangoCharlie</servlet-name>
<url-pattern>/Idiot</url-pattern>
</servlet-mapping>
</web-app>

最后是我的名为 Revise.java 的 servlet 文件

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

public class Revise extends HttpServlet
{
public void doPost(HttpServletRequest request,HttpServletResponse response) throws IOException,ServletException
{
    response.setContentType("text/html");
    PrintWriter out=response.getWriter();
    out.println("<html><body><h3>Hello India</h3></body></html>");
    out.println("Hello");
}
}
4

1 回答 1

0

我不想添加任何输入字段。我的目标只是在没有使用“POST”方法调用的 html 页面上的单个按钮的情况下运行 servlet。

只需在doGet()方法中完成工作(不要忘记在编辑 servlet 代码后正确重建/重新部署/重新启动项目,否则您仍然会遇到“HTTP 405:不允许方法”错误)并直接调用 servlet 的 URL浏览器地址栏中 JSP 的 URL。

因此,浏览器地址栏中的 URL 应该是

http://example.com/contextname/白痴

代替

http://example.com/contextname/page.html


与具体问题无关,在 servlet 中发出 HTML 是糟糕的设计。它应该由 JSP 完成。完成业务逻辑后,您可以使用RequestDispatcher#forward()将请求转发到 JSP 。doGet()此外,无包类也是一个糟糕的设计。您应该始终将可公开重用的 Java 类放在一个包中。无包 servlet 仅适用于 Tomcat + JVM 版本的某些组合。

也可以看看:

于 2012-10-22T15:05:04.460 回答