为什么我不能在我的 servlet 代码中使用 doGet 方法?



我是Servlet的新手,我已经开发了一个HTML页面,该页面具有触发的提交按钮我的servlet.一切正常。但是现在我想使用get方法,因为我的HTML页面没有发布任何内容。因此,我进行了以下更改:1)在我的page.html文件中,我用方法=" get"替换方法=" post"。2)我用servlet中的doget更改了Dopost。但是我收到的错误消息是"在这里不允许"。为什么是这样?这是原始文件正确工作(在更改之前):

我的页面.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>

最后我的servlet文件naty convise.java

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");
}
}

我不想添加任何输入字段。方法。

只需在doGet()方法中完成工作(不要忘记在编辑servlet代码后正确重建/重建/重新启动/重新启动项目,否则您仍然会面对a&quot a&quot'http 405:不允许使用"错误")并调用URL直接的servlet而不是浏览器地址栏中的JSP的URL。

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

http://example.com/contextname/idiot

而不是

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


无关的到具体问题,在servlet中发射HTML是不良设计。它应该由JSP完成。完成doGet()业务逻辑后,您可以使用RequestDispatcher#forward()将请求转发到JSP。此外,无包装的课程也是一个糟糕的设计。您应该始终将公开重复使用的Java课程放入软件包中。无包装的servlet只能在tomcat JVM版本的某些组合中工作。

另请参见:

  • 我们的servlets wiki页面 - 包含具体(并设计正确的)Hello World示例

最新更新