【问题标题】:doPost method in servlet not getting calledservlet中的doPost方法没有被调用
【发布时间】:2018-12-02 11:33:50
【问题描述】:

我正在尝试覆盖 doGet 和 doPost 并尝试调用 doPost 但无法正常工作。下面是 JSP 和 Servlet 代码

    <%@ page language="java" %>
<!DOCTYPE html>
<html>
<head>
<title>Insert title here</title>
</head>
<body>
<form method="post" action="FirstServlet">

<input type="text" name="Name" value="Enter">
<input type="button" name="submit" value="Submit"/>
</form>
</body>
</html>

Servlet 代码在下面并尝试调用 doPost 方法,但它没有被调用,也没有在控制台中打印消息。但是,当我尝试直接从 URL 访问 servlet 时,它的 doGet 方法被调用了

import java.io.IOException;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class FirstServlet
 */
@WebServlet("/FirstServlet")
public class FirstServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    /**
     * @see HttpServlet#HttpServlet()
     */
    public FirstServlet() {
        super();
        System.out.println(" Inside Constructor");
        // TODO Auto-generated constructor stub
    }

    /**
     * @see Servlet#init(ServletConfig)
     */
    public void init(ServletConfig config) throws ServletException {
        // TODO Auto-generated method stub
        System.out.println(" Inside init");
    }


    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        System.out.println(" Inside doGet");
        response.getWriter().append("Served at: ").append(request.getContextPath());
    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
        System.out.println(" Inside doPost");
        doGet(request, response);
    }
}

【问题讨论】:

标签: java servlets


【解决方案1】:

您的 HTML 表单提交按钮不正确:修复 type 属性。 试试:

<input type="submit" name="submit" value="Submit"/>

【讨论】:

  • 这是正确的,它有效。谢了哥们。 BTW 提交和按钮有什么区别?
  • @JavaGeek,没问题。 'submit' 用于提交表单,浏览器会自动向服务器执行请求,'button' 只是一个 UI 按钮,为了处理点击,你必须附加 Javascript 函数。
  • @JavaGeek,HTML 表单很好的介绍:developer.mozilla.org/en-US/docs/Learn/HTML/Forms/…
猜你喜欢
  • 2013-05-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-18
  • 2012-06-12
  • 2012-02-27
  • 2011-02-01
  • 2014-09-27
相关资源
最近更新 更多