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

如何从GET请求的Servlet重定向到POST请求的Servlet?

问题原因与解决办法

为什么会出现405错误?

response.sendRedirect("upload") 本质是告诉浏览器重新发起一个GET请求到目标地址,而你的upload.java仅配置支持POST方法,浏览器发送的GET请求不被允许,因此返回405错误。

解决方案

方案1:让upload支持GET请求

如果业务允许upload接收GET请求,直接在upload.java中添加doGet方法,复用doPost的逻辑:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    // 直接调用doPost处理GET请求
    doPost(request, response);
}

方案2:强制通过POST请求访问upload(原请求为GET时)

如果upload必须仅接受POST请求,且当前mystart是GET请求触发的,无法通过重定向/转发实现,需要在mystart中输出一个自动提交的HTML表单,让浏览器自动发起POST请求:

response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();

// 输出自动提交的表单
out.println("<html><body>");
out.println("<form style='display:none' action='upload' method='POST'>");
// 如需传递参数,添加隐藏域
// out.println("<input type='hidden' name='yourParam' value='"+ request.getParameter("yourParam") +"'>");
out.println("</form>");
out.println("<script>document.forms[0].submit();</script>");
out.println("</body></html>");

补充:如果mystart本身是POST请求的情况

如果mystart是通过POST请求触发的,也可以用服务器内部转发替代重定向,这种方式会保留原请求的方法(POST),且不会改变浏览器地址栏:

request.getRequestDispatcher("upload").forward(request, response);

内容的提问来源于stack exchange,提问作者Gidde

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 16:05:38