【问题标题】:Difference between @Path and @WebServlet@Path 和 @WebServlet 的区别
【发布时间】:2014-09-05 15:25:23
【问题描述】:

我注意到在 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 一样的基本功能。

【问题讨论】:

    标签: rest jakarta-ee servlets


    【解决方案1】:

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

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

    【讨论】:

    • 但是我使用 @WebServlet 来提供 RESTful 服务,所以我不明白你的意思。
    • 当然你可以这样做,但我认为这不是一个好主意,你必须自己实现很多东西(这很容易出错) - 如果我是你,我会一定要使用 Java REST API 编写 REST 服务,而不是通过 servlet 来破解它。
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-04-18
      • 2018-08-16
      • 2015-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多