我一直在读到 JAX-RS 是构建在 servlet 之上的。这是字面意思吗,还是仅仅意味着它是一个更高级别的组件?如果是的话,它是如何运作的? JAX-RS 是否创建一个解析请求并手动初始化的 servlet@Path
带注释的类并将修改后的参数传递给它们? JSR 似乎没有具体说明这一点,并且没有一本提到它的书籍详细介绍这一点。
注意:我在部署 JAX 或 servlet 时没有遇到问题,我只是对细节感到好奇,因为它可以让我更好地理解 Web 容器的工作原理。
我一直在读到 JAX-RS 是构建在 servlet 之上的。这句话字面意思是真的吗
简而言之,是的,JAX-RS 规范是构建在 Servlet 以及任何其他部署方法(例如@Jilles van Gurp 提到 https://stackoverflow.com/a/41397295/2587435) is 具体实施.
JAX-RS 是否创建一个解析请求并手动初始化 @Path 注解的类并将修改后的参数传递给它们的 servlet?
JAX-RS 不执行任何操作。它是实现入口点 servlet 的实现(例如 Jersey、RESTEasy、CXF)。实现是否需要显式解析请求?不,不all它的。大部分内容是由 servlet 容器处理的。主要是实现只需要解析请求body(因为“请求”不仅仅意味着正文,例如 URL、标头)。
基本上,与 JAX-RS 相关的所有内容都由实现处理。 servlet 容器除了传递 HttpServletRequest 和 HttpServletResponse 之外没有任何作用,就像您要实现自己的 servlet 一样。如果您要创建自己的 JAX-RS 实现,那么向您传递 HttpServletRequest(Response) 的 servlet 就是请求入口点,其他一切都由您决定。
EDIT
因为“请求”不仅仅意味着身体,例如URL
坏例子。实际上,JAX-RS 的实现would解析 URL 以获取路径参数和查询参数。尽管 Servlet 容器将解析 URL 并将查询参数添加到 HttpServletRequest 参数映射中,但该映射也具有表单 POST 参数,因此实现也需要自己解析查询参数。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)