【问题标题】:What's the difference between doGet()/doPost() and processRequest()? [duplicate]doGet()/doPost() 和 processRequest() 有什么区别? [复制]
【发布时间】:2016-04-25 13:14:16
【问题描述】:

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

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

【问题讨论】:

    标签: servlets jakarta-ee httprequest


    【解决方案1】:

    有什么区别?

    只需将通用代码移动到一个地方即可,例如:

    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() 方法。

    希望将两者都路由到 processRequest() 方法的一个示例是,如果您要为 POST 请求上传文件并查看 GET 请求的一些数据。

    processRequest() 被认为是好的做法吗?

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-01-18
      • 1970-01-01
      • 1970-01-01
      • 2015-11-23
      • 2013-02-13
      • 2011-04-26
      • 2016-09-24
      相关资源
      最近更新 更多