【发布时间】:2016-04-25 13:14:16
【问题描述】:
使用 doGet()/doPost() 代替 processRequest() 有什么区别?
应该有人使用 doGet() 和 doPost() 对来处理他/她的请求还是使用一个方法 processRequest() ?
【问题讨论】:
标签: servlets jakarta-ee httprequest
使用 doGet()/doPost() 代替 processRequest() 有什么区别?
应该有人使用 doGet() 和 doPost() 对来处理他/她的请求还是使用一个方法 processRequest() ?
【问题讨论】:
标签: servlets jakarta-ee httprequest
有什么区别?
只需将通用代码移动到一个地方即可,例如:
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。
【讨论】: