Servlets 什么';doGet()/doPost()和processRequest()之间的区别是什么?

Servlets 什么';doGet()/doPost()和processRequest()之间的区别是什么?,servlets,jakarta-ee,httprequest,Servlets,Jakarta Ee,Httprequest,使用doGet()/doPost()代替processRequest()有什么区别 有人应该使用doGet()和doPost()对来处理他/她的请求,还是使用一个方法processRequest() 有什么区别 这只是将通用代码移动到一个地方的问题,例如: public class TestServlet extends HttpServlet { protected void processRequest(HttpServletRequest request, HttpServle

使用doGet()/doPost()代替processRequest()有什么区别

有人应该使用doGet()和doPost()对来处理他/她的请求,还是使用一个方法processRequest()

有什么区别

这只是将通用代码移动到一个地方的问题,例如:

public class TestServlet extends HttpServlet 
{

    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
        response.getWriter().println("Welcome to TestSevlet");
    }

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
        processRequest(request, response);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
        processRequest(request, response);
    }
}
*注意:doPost()和doGet()是Servlet接口的一部分,processRequest()只是帮助器方法的常用名称,不属于任何接口

您应该使用processRequest()吗

这取决于Servlet的行为方式以及Servlet的调用方式,如果您希望POST请求的行为与GET请求的行为不同,那么就分别实现它们。如果servlet在调用GET或POST时应该具有相同的行为,则将它们路由到相同的processRequest()方法

在大多数情况下(可能90%的情况下),可以将doGet()和doPost()路由到单个processRequest()方法

例如,如果要上载POST请求的文件并查看GET请求的某些数据,则不希望将两者都路由到processRequest()方法

processRequest()是否被视为良好实践

如果GET和POST做的是同一件事,那么绝对是的。事实上,Arun Gupta(JavaEE的主要规范负责人之一)使用了这种模式