You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Servlet编写Hello World程序出现HTTP 405 Method Not Allowed错误如何解决

错误原因

浏览器直接通过地址栏访问资源时默认发送的是GET请求,而你提供的Servlet代码仅重写了doPost()方法用于处理POST请求,未实现对应的doGet()方法。HttpServlet父类的默认doGet()实现会直接返回405状态码,和你看到的报错信息完全匹配。

解决办法

  • 方案一:新增doGet()方法,可直接调用已有的doPost()复用逻辑,无需重复编写业务代码,修改后代码如下:
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class HelloWorld extends HttpServlet
{
    // 新增处理GET请求的方法
    public void doGet(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException
    {
        doPost(req, res);
    }

    public void doPost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException
    {
        res.setContentType("text/html");
        PrintWriter out = res.getWriter();
        out.println("<h1>Hello World</h1>");
    }
}
  • 方案二:如果业务规则要求该接口仅接受POST请求,就不要通过地址栏直接访问,改为通过前端POST表单提交的方式请求接口,表单示例代码如下:
<form action="替换为你的Servlet映射路径" method="post">
  <button type="submit">访问HelloWorld接口</button>
</form>
  • 方案三:重写Servlet的service()方法,所有请求类型都会被该方法统一处理,不过该写法会破坏Servlet原生的请求方法分发逻辑,非特殊场景不推荐使用:
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    resp.setContentType("text/html");
    PrintWriter out = resp.getWriter();
    out.println("<h1>Hello World</h1>");
}

内容的提问来源于stack exchange,提问作者P Sai Akhil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 08:18:01