【问题标题】:servlet eclipse on tomcat7 HTTP Status 405 - HTTP method POST is not supported by this URLtomcat7 HTTP 状态 405 上的 servlet eclipse - 此 URL 不支持 HTTP 方法 POST
【发布时间】:2014-01-30 20:18:44
【问题描述】:

我是 servlet/jsp/portlet 技术的新手,我正在努力理解,所以如上所述,我遇到了这个 servlet 的问题:


package trekking;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class Login
 */
public class Login extends HttpServlet {
    private static final long serialVersionUID = 1L;

    /**
     * see HttpServlet#HttpServlet()
     */
    public Login() {
    }

    /**
     * @param name 
     * @param pass 
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     * 
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response, String name, String pass) throws ServletException, IOException {
String u,p;
        u=request.getParameter(name);
        p=request.getParameter(pass);
        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
        out.println("<html>");
        out.println("<head>");
        out.println("<title>Hello World!</title>");
        out.println("You are "+u+"!");
        out.println("</head>");
        out.println("<body>");
        out.println("<h1>Hello World!</h1>");
        out.println("</body>");
        out.println("</html>");
    }
}

在html页面中通过这种形式调用:

<form action="Login" method="post">
<label for="uname">UserName</label>
<input name="user" id="uname" type="text"></input>
<label for="pwd">Password</label>
<input name="pass" id="pwd" type="password"></input>
<input type="submit" value="invia">
</form>

如果您需要其他任何东西,我在这里。 谢谢你。 :D

【问题讨论】:

    标签: java eclipse tomcat servlets post


    【解决方案1】:

    您尚未覆盖 doPost 方法。你已经超载了它。

    protected void doPost(HttpServletRequest request, HttpServletResponse response, String name, String pass) throws ServletException, IOException {
    

    由于没有调用您的重载方法,因此您将获得默认的继承 HttpServlet#doPost() 行为,该行为返回 405。

    【讨论】:

    • 很好用!(IDE 校正器添加了这两个参数)
    • @user3254815 我认为它添加了它们,因为您使用的是 name 而不是字符串文字 "name"。
    • 我可以试试这个。
    • 是的,它是这样的,现在完美运行,我已经了解参数传递的工作原理!谢谢你:D
    【解决方案2】:

    从您的 doPost 方法中删除“名称”和“传递”参数。

    【讨论】:

      猜你喜欢
      • 2014-01-16
      • 2023-03-29
      • 2021-05-21
      • 2011-05-16
      • 2016-01-03
      • 2014-10-12
      • 2015-03-11
      相关资源
      最近更新 更多