Servlets:doPost和doGet简单查询

时间:2012-03-31 19:43:18

标签: servlets

public class CornelltaxiServlet extends HttpServlet {
public void doGet(HttpServletRequest req, HttpServletResponse resp)
        throws IOException {
    resp.setContentType("text/plain");
    resp.getWriter().println("Hello, world");
}

public void doPost(HttpServletRequest req, HttpServletResponse resp) throws IOException {
    //resp.setContentType("text/plain");
    //resp.getWriter().println("Hello, world");
}

}

根据我对doGet和doPost的理解,我把“Hello,world”消息放在哪里并不重要。但是,当我尝试使用doPost方法打印它时,它不起作用。有人可以帮我解释一下吗?

另外,来自

void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    // Preprocess request: we actually don't need to do any business stuff, so just display JSP.
    request.getRequestDispatcher("/WEB-INF/hello.jsp").forward(request, response);
}

request.getRequestDispatcher("/WEB-INF/hello.jsp").forward(request, response);

这是做什么的?

1 个答案:

答案 0 :(得分:2)

请求HTTP GET时调用doGet()方法(例如,当您在浏览器中键入servlet的URL时)。然后Hello, world将出现在浏览器中。

另一方面,

doPost()将用于HTTP POST。你需要例如:

<form method="POST" action="/your/servlet"

当您提交此类表单时,您应该在浏览器中看到“Hello,world”(即取消注释时)。

至于你的第二个问题:

request.getRequestDispatcher("/WEB-INF/hello.jsp").forward(request, response);

这会将请求处理转发到hello.jsp。基本上,将呈现该文件的内容而不是Hello, world。使用resp.getWriter()发送内容并转发是错误的。选一个。