doPost(),doGet()和service()以及URL模式

时间:2014-01-10 00:09:38

标签: java rest servlets

我一直在阅读有关doPost(),doGet()和service()以及REST的相关内容,但我遇到了一个我无法找到答案的问题。这个问题可能更主观,因为它与URL美学而不是惯例有关。

当组织项目的结构时,有时候如果它足够小,我宁愿有一个单独的servlet,其中WebSite的不同方法由“GET”参数表示

http://localhost/Servlet?option=METHOD

然而,这在尝试将“GET”与“POST”分开时会引发冲突。现在我要问的是,如果有一个“好看的”(主观意见)URL意味着使用该格式,那么实现service()方法是最好的使用方法吗?

我愿意接受建议,例如使用

http://localhost/Servlet/Option

但是我如何才能实现这样的格式也能够将参数传递为

http://localhost/Servlet/Option?param=value 

1 个答案:

答案 0 :(得分:1)

你可以只打一个电话来实现两个:

public void doPost(HttpServletRequest request, HttpServletResponse  response) throws IOException, ServletException
{
    doGet(request, response);
}

public void doGet(HttpServletRequest request, HttpServletResponse  response) throws IOException, ServletException
{
  .......
}

至于服务()我不知道为什么人们会覆盖它。文档(http://docs.oracle.com/javaee/7/api/javax/servlet/http/HttpServlet.html)明确地说:

  

几乎没有理由重写服务方法。服务处理标准HTTP   请求通过将它们分派给每个HTTP请求类型的处理程序方法(   上面列出的doXXX方法。

编辑:我现在看到的问题是关于在一个servlet中通过参数区分许多方法。是的,这是不好的做法。您应该将不同的操作分成不同的servlet。在UI中,最好使用不同的表单来进行不同的操作,而不是使用多个提交按钮的表单。在编辑时,更容易破坏由一堆if语句控制的意大利面条代码servlet。