@Path和@WebServlet之间的区别

时间:2014-07-15 12:21:42

标签: rest java-ee servlets

在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 个答案:

答案 0 :(得分:6)

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

另一方面,@WebServlet("/SomePath")指出Servlet将在www.yourapp.com/SomePath上侦听请求,它基本上取代servlet-mapping中的web.xml元素。您仍然可以像这样配置servlet,您可以选择XML还是注释配置。

答案 1 :(得分:0)

@Path注释标识资源响应的URI路径模板,并在资源的类或方法级别指定。 @Path注释的值是相对于部署资源的服务器的基本URI,应用程序的上下文根以及JAX-RS运行时响应的URL模式的部分URI路径模板。

@WebServlet注释用于声明servlet。带注释的类必须扩展javax.servlet.http.HttpServlet类。