eclipse ee servlet tomcat doPost http405

Posted

技术标签:

【中文标题】eclipse ee servlet tomcat doPost http405【英文标题】: 【发布时间】:2011-11-28 17:28:56 【问题描述】:

我正在尝试使用 eclipse ee 和 tomcat 通过 eclipse 启动服务器从 html 到 Java Servlet。 但我得到: HTTP 状态 405 - 此 URL 不支持 HTTP 方法 POST

<!DOCTYPE html>
<html>
<head>
<script type="text/javascript">

</script>
</head>
<body>
<form method="POST" action="AddHost">
Host name : <input name="hostname" type="text"><br>
Genre : <input name="genre" type="text" ><br>
<input type="submit" value="add host">
</form>
</body>

</html>

这是 servlet:

import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.*;
@WebServlet("/AddHost")
public class Addhost extends HttpServlet 

    public void doPost(HttpServletResponse res,HttpServletRequest req) throws IOException
        String hostname = req.getParameter("hostname");
        String genre = req.getParameter("genre");


    
    public void doGet(HttpServletResponse res,HttpServletRequest req) throws IOException
        doPost(res,req);
    

【问题讨论】:

【参考方案1】:

您使用了错误的方法 doPost 签名,而不是 overriding,您是 overloading

来自javadoc HttpServlet 包含:

protected void doPost(HttpServletRequest req, HttpServletResponse resp)

所以你应该改变这个:

public void doPost(HttpServletResponse res,HttpServletRequest req)

到这里:

@Override
public void doPost(HttpServletRequest req, HttpServletResponse res)

@Override 注解不是必需的,但强烈建议避免此类错误。

已编辑: 我添加了第 mth 建议的覆盖注释

【讨论】:

谢谢,没有意识到参数需要按这个顺序排列。是否有一个原因?我会在允许的时候接受。 是的,顺序很重要。在 Java 中,我们可以有几个方法名称相同但参数的顺序、数量和类型不同。检查我的更新和重载链接 这就是为什么添加@Override 是有帮助的——编译器会在你没有真正覆盖而是错误地重载时捕获它。当然,使用您选择的 IDE 的“覆盖方法”功能也有很大帮助(因为 IDE 会为您创建正确的框架方法)

以上是关于eclipse ee servlet tomcat doPost http405的主要内容,如果未能解决你的问题,请参考以下文章

eclipse找不到javax.servlet这个包,我下载了个j2ee.jar,应该放到哪才能用?

eclipse ee怎么查看 HttpServlet的源代码?eclipse关联不了,还是 javaee没有源代码的?

Java Servlet之创建工程(jdk7+tomcat7+eclipse)

Eclipse JSP/Servlet 环境搭建

加载web项目时报的错误:Tomcat version 6.0 only supports J2EE 1.2, 1.3, 1.4

部署第一个servlet应用到tomcat上