JAX-RS 是构建在 Servlet API 之上的吗?如何?

2024-02-03

我一直在读到 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(使用前将#替换为@)

JAX-RS 是构建在 Servlet API 之上的吗?如何? 的相关文章

随机推荐

  • Python 比 Java/C# 慢吗? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 Python 比 Java C 慢吗 性能比较 c java python ruby jython jruby groovy http blog
  • 伊莎贝尔和斯卡拉[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在考虑创建 Eclipse PDE 并且需要与 Isabelle 进行通信 我确实发现一些出版物声
  • 了解 Knuth Morris Pratt (KMP) 失效函数

    我一直在读关于 Knuth Morris Pratt 算法的维基百科文章 http en wikipedia org wiki Knuth E2 80 93Morris E2 80 93Pratt algorithm我对如何在跳转 部分匹配
  • 解析Java中的任何日期

    我知道这个问题被问了很多 显然你无法解析任何任意日期 然而 我发现 python dateutil 库能够解析我扔给它的每个日期 同时在找出日期格式字符串时需要绝对零的努力 Joda time 始终被认为是一个出色的 Java 日期解析器
  • 在scikit-learn中,DBSCAN可以使用稀疏矩阵吗?

    当我运行 scikit 的 dbscan 算法时 出现内存错误 我的数据约为20000 10000 它是一个二进制矩阵 也许这样的矩阵不适合使用DBSCAN 我是机器学习的初学者 我只是想找到一种不需要初始簇号的聚类方法 不管怎样 我发现了
  • MySQL 日期时间和时间戳字段是否比 Unix 时间戳整数更适合 PHP 应用程序?

    我正在阅读一篇文章 其中显示了一些非常好的信息和基准 关于三种不同的 MySQL 日期 时间存储选项的执行情况 MySQL DATETIME TIMESTAMP INT 性能以及使用 MyISAM 进行基准测试 http gpshumano
  • 是否有可能有一个利用 firebase 的 chrome 打包应用程序?

    我遇到了 CSP 问题 我尝试将 firebase 添加到权限和沙箱中 我正在尝试转换此 firebase 示例 chrome 扩展 https github com firebase firebase chrome extension h
  • 通过 css 的文本装饰线在 Safari 上无法使用我的“已完成”类工作

    我一直在多个设备上测试我的应用程序 刚刚发现我的 CSS 样式之一无法在 Safari 上运行 特别是我的 iPhone 和 iPad 我正在使用 Angular 制作一个待办事项应用程序 并且希望在项目标记为完成时用红线划掉文本 如果我创
  • 从最高到最低排名时处理平局

    我正在尝试为一个小项目制作一个排名管理器 总计存储在数据库中 我可以使用mysql轻松获取最大值和最小值 并按降序排列记录 当出现平局时就会出现问题 我需要以以下形式显示平局 1 2 3 3 4 5 6 7 7 7 7等 重复的数字将显示平
  • 如果密码正确,带有会话的 Codeigniter 登录系统会将用户重定向到页面

    我创建了一个登录系统 但每次设置 if 语句时 当我输入正确的密码时 它都会循环回到登录页面 我需要控制器中的索引函数 list employee 函数和 View employee 函数来将用户重定向到登录页面 如果他们直接访问 但如果他
  • 如何在 Ruby 中继承抽象单元测试?

    我有两个单元测试 它们应该共享许多常见的测试 但设置方法略有不同 如果我写类似的东西 class Abstract lt Test Unit TestCase def setup field create end def test 1 en
  • 禁用 Android 中的后退按钮

    如何在注销应用程序时禁用 Android 中的后退按钮 如果您打算处理设备上的后退按钮 请重写 onBackPressed 方法并且不执行任何操作 Override public void onBackPressed if shouldAl
  • 仅适用于希伯来语字符的 ng-pattern

    我想用ng pattern验证我的文本输入字段应该只接受希伯来语字符 有时输入没问题 有时由于某种原因被拒绝 第一个字母是验证 第二个字母不是 等等 例子
  • 如何将 ECDSA 密钥转换为 PEM 格式

    我有一个私人原始密钥米以太钱包 with a 密码短语 testwallet 现在我尝试按照此答案使用 OpenSSL 将其转换为 PEM 格式 echo a140bd507a57360e2fa503298c035854f0dcb248be
  • 更改 jupyter 笔记本标签小部件中的字体属性

    我正在尝试修改 python 2 7 中 jupyter 标签小部件的字体属性 粗细 颜色等 作为一个例子 我尝试过以下方法 import ipywidgets as widgets myLabel widgets Label value
  • 调整放置在 byte[] 数组中的图像大小

    放置在 byte 数组中的图像大小 不知道图像的类型 我必须生成另一个 byte 数组 其大小应达到 50kB 我怎样才能进行某种缩放 除非您想进行一些严肃的数学运算 否则您需要将字节数组加载到内存流中 从该内存流加载图像 并使用 Syst
  • Excel公式:如何按大写字母拆分字符串

    使用公式而不是VBA 我想提出一个解决方案来分割由多个单词组成的字符串 该公式应该识别有大写字母的单词并将它们分开 结果将是一个字符串 其中单词之间用 分隔 为了澄清这一点 我们举一个字符串的例子 Nursing StudentStuden
  • 如何限制画布中的拖放区域

    我有一个画布 假设尺寸为 500x600 我在该画布内有一些控件 用户可以通过拖放重新排列控件 但我想限制该画布内的拖放 例如 画布中有一个按钮 用户可以将该按钮拖放到画布内的任何位置 但是 如果用户尝试将按钮拖出画布边界 则它应该停留在画
  • 仅最后一个值在数组中重复

    我正在尝试在 javascript 中用逗号分隔附加一些值 我有这个查询 select boxes dispatch id projects project boxes hardware sum boxnumber as boxnumber
  • JAX-RS 是构建在 Servlet API 之上的吗?如何?

    我一直在读到 JAX RS 是构建在 servlet 之上的 这是字面意思吗 还是仅仅意味着它是一个更高级别的组件 如果是的话 它是如何运作的 JAX RS 是否创建一个解析请求并手动初始化的 servlet Path带注释的类并将修改后的