@Path和@WebServlet之间的区别

5
在Java EE中,我注意到您可以将URI的路径指定为以下方式之一:
@Path("/SomePath")
public class MyClass

或者

@WebServlet("/SomePath")
public class MyClass extends HttpServlet

我认为@Path用于非Servlet内容,而@WebServlet用于Servlet。但它们是否有效地服务于相同的目的?
@Path的信息可以在此处找到: http://docs.oracle.com/cd/E19798-01/821-1841/6nmq2cp26/index.html 但乍一看,它似乎提供了与@WebServlet相同的基本功能。
2个回答

9

@Path注解定义了RESTful Web服务的路径,因此当您有@Path("/SomeService")时,它将转换为www.yourapp.com/baseRestUrl/SomeService。您还可以在提供REST服务的方法上定义它。请注意,baseRestUrlweb.xml或扩展Application类的类中定义。

另一方面,@WebServlet("/SomePath")表示Servlet将监听www.yourapp.com/SomePath的请求,它基本上是web.xmlservlet-mapping元素的替代品。您仍然可以像这样配置servlet,这取决于您是更喜欢XML还是注释配置。


但是我使用@WebServlet来实现RESTful服务,所以我不明白你的观点。 - Johann
2
当然你可以这样做,但我认为这不是一个好主意,因为你必须自己实现很多东西(这容易出错)- 如果我是你,我肯定会使用Java REST API编写REST服务,而不是通过servlet进行黑客攻击。 - Petr Mensik

0
@Path注解标识资源响应的URI路径模板,并在资源的类或方法级别上指定。@Path注解的值是相对于部署资源的服务器的基本URI、应用程序的上下文根和JAX-RS运行时响应的URL模式的部分URI路径模板。
@WebServlet注解用于声明一个servlet。被注释的类必须扩展javax.servlet.http.HttpServlet类。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接