我一直在阅读有关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
答案 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)明确地说:
编辑:我现在看到的问题是关于在一个servlet中通过参数区分许多方法。是的,这是不好的做法。您应该将不同的操作分成不同的servlet。在UI中,最好使用不同的表单来进行不同的操作,而不是使用多个提交按钮的表单。在编辑时,更容易破坏由一堆if语句控制的意大利面条代码servlet。几乎没有理由重写服务方法。服务处理标准HTTP 请求通过将它们分派给每个HTTP请求类型的处理程序方法( 上面列出的doXXX方法。