jakarta-ee - servletRequest是接口还是类?ServletRequest和HttpServletRequest有什么区别?
问题描述
基本上我想问如果我们有ServletRequest,HttpServletRequest有什么用?如果它用于http协议,那么我们的servlet如何知道请求是httprequest
解决方案
两者ServletRequest
和HttpServletRequest
也是 接口 .
ServletRequest
代表请求的最通用概念。它对 HTTP 一无所知,因为它被设计为独立于协议。HttpServletRequest
扩展它以表示使用特定协议(在这种情况下为 HTTP)进行通信的请求。
具有这些分离是设计选择,这样我们可以通过简单地定义和实现扩展的新请求类型来增强 Servlet 容器可以与其他协议一起使用ServletRequest
。由于继承,我们可以重用现有的ServletRequest
代码和现有的 Servlet 基础设施来处理这个新协议。
例如,假设您发明了一个Sandeep Protocol
优于 HTTP 的协议( ),您可以通过定义和实现SandeepServletRequest
扩展来使 servlet 容器支持它ServletRequest
我们的 servlet 怎么知道请求是 httprequest?
这取决于协议的设计方式。例如,在 HTTP 的情况下,HTTP 规范定义的请求应如下所示:
因此容器可能会检查接收字节的第一行是否包含 HTTP 方法和单词 "HTTP" 。如果是,则将其视为 HTTP 请求并创建一个HttpServletRequest
实例。
推荐阅读
- amazon-web-services - 如何修改已创建的 IAM 角色的承担角色策略?
- python - 获得时间异常后,我将如何重新启动 Web 驱动程序并继续运行脚本?
- mysql - MySQL 间隙锁行为不符合预期
- javascript - 如何在mvc的视图中传递html href内的变量
- javascript - 使用 jsPDF 将多个不同的图像添加到 PDF
- javascript - 获取api响应慢且不稳定
- angular - Angular 9 无法在日期管道之后过滤日期
- excel - Power Query 将不同的列表合并到表中
- php - wordpress docker-compose 使用 nginx 设置时出现 502 错误网关错误
- uml - 需要帮助阅读 UML 图