浅析 HttpServlet
本文包含内容Servlet 的处理流程和任务javax.servlet.http.HttpServlet 包WebServlet(…) 注解在 javax.servlet 包中定义了所有的 Servlet 都必须实现的或扩展的通用接口和类javax.servlet.http. 包中定义了采用 HTTP 通信协议的 HttpServlet 类。Servlet 是运行在带有支持 Java Servlet 规范的解释器的 web 服务器上的 Java 类。Servlet 的 TomcatJspEL specWebSocketApache TomcatJava 版本支持支持关系https://blog.csdn.net/jackpk/article/details/46235815— Servlet 框架由两个包组成企业版标准组成1javax.servlet2javax.servlet.http.Servlet 的处理流程和任务1Servlet 的处理流程2Servlet 的任务①读取客户端浏览器发送的显式的数据。包括HTML表单或来自 applet 或自定义 HTTP 客户端程序表单②读取客户端浏览器发送的隐式的 HTTP 请求数据。包括 cookies媒体类型及浏览器能理解的压缩格式等③处理数据并生成结果。可对数据库进行访问执行 RMI 或 CORBA 调用调用 Web 服务或者直接计算得出对应的响应④发送显式的数据即文档到客户端浏览器。该文档的格式可以是文本文件HTML 或 XML、二进制文件GIF 图像、Excel 等⑤发送隐式的 HTTP 响应到客户端浏览器。返回响应类型contentType 如 HTML页面plain文本设置 cookies 和缓存参数以及其他类似的任务。当一个 Web 服务器响应一个 HTTP 请求时响应通常包括一个状态行一些响应报头一个空行和文档。— Servlet 处理 HTTP 请求过程① Web客户端向 Servlet 发出 HTTP 请求② Servlet 容器解析 HTTP 请求③ Servlet 容器创建一个 HttpRequest 对象在该对象中封装 HTTP 请求信息包括客户端发送的数据和请求类型④ Servlet 容器创建一个 HttpResponse 对象.— javax.servlet.http.HttpServlet 包Servlet 服务器 HTTP 响应关于HTTP响应参考菜鸟教程 https://www.runoob.com/servlet/servlet-server-response.htmlHttpServlet (abstract class)Http 请求方式包括六种DELETEGETPOSTOPTIONSPUTTRACE。HttpServlet 为公共抽象类(什么都不做)提供要进行子类化的抽象类以创建适用于Web站点的HTTP Servlet。HttpServlet 必须重写至少一个方法的子类。通常是以下方法之一处理标准 HTTP 请求void service(ServletRequest req, ServletResponse res) –继承自 javax.servlet将客户端请求分派给受保护的 service方法。客户端发送的 HTTP 请求和服务器的 HTTP 响应均在service() 下完成。 protected void doGet(HttpServletRequest req, HttpServletResponse resp) –用于HTTP GET 请求 protected void doPost(HttpServletRequest req, HttpServletResponse resp) –用于 HTTP POST 请求 protected void doPut(HttpServletRequest req, HttpServletResponse resp) –用于 HTTP PUT 请求 protected void doDelete(HttpServletRequest req, HttpServletResponse resp) –用于 HTTP DELETE 请求(init 并且 destroy –管理为 Servlet 的生命周期而持有的资源 getServletInfo –Servlet 用来提供有关自身的信息) protected long getLastModified(HttpServletRequest req), --从public service方法接收标准HTTP请求 并将它们分派给此类中定义的doXXX方法。HttpServlet 包括更多方法如 doHead(…), doOptions(…), doTrace(…),关于 HttpServlet 下的方法这里不详细记录更多详细内容API 详述https://docs.oracle.com/javaee/7/api/javax/servlet/http/HttpServlet.html注意① HttpServlet 是 javax.servlet 的子类Servlet 对浏览器发送的 HTTP 请求(request) 和 HTTP响应(response)都是在 service() 方法中进行的。② 如果 Servlet 通过 javax.servlet.http.HttpServlet 实现对 doGet(…) 或 doPost(…) 重写那么该 Servlet只能对 GET 或 POST 作出响应。③ 如果开发人员想处理所有类型的请求request只要简单地实现service方法即可但假如选择实现service方法则不必实现doPost或doGet方法除非在service方法的开始调用super.service()— 创建 HttpServlet 步骤…扩展 HttpServlet 抽象类;…重写 HttpServlet 部分方法。如 doGet(…), doPost(…);…获取 Http 请求信息。通过 HttpServletRequest 对象获取用户提交的数据或URL上的查询字符串;…生成 HTTP 响应结果。通过 HttpResponse 对象.getWirter() 方法生成响应结果该方法返回 PrintWriter 对象。— Http 服务器端响应实例package servlet; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.annotation.WebServlet; //关于 WebServlet(…) 注解 // – 如引入注解有误则需要导入 .jar 包jackson-annotation-2.2.3.jar //WebServlet(...) 注解相关内容 WebServlet(“/BaseServlet”) public class BaseServlet extends HttpServlet {//1. 扩展 HttpServlet 抽象类 //2. 重写 doPost(…) 和 doGet(…)方法 Override //ServletException 处理异常无法处理 POST 请求 //IOException 处理异常处理 POST 请求时检测到输入或输出错误 Protected void doPost(HttpServletRequset req, HttpServletResponse resp) throws ServletException, IOException { try { //3. 获取客户端请求信息 String myName req.getParameter(“myName”); if(null ! myName) { myName resp.setCharacterEncoding(“UTF-8”); } else { myName “你的名字”; } //4. 生成 HTTP 响应结果并向客户端回显信息 resp.setContentType(“text/plain”); //返回结果为 plain -- .txt 文本 PrintWriter pw resp.getWriter(); pw.write(myName); pw.flush(); //刷新 PrintWriter缓存区 pw.close(); } catch(Exception e) { e.printStackTrace(); } }//end doPost protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { this.doPost(req, resp); }//end doGet }//end class BaseServlet extends HttpServlet最后在 web.xml 中添加如使用了 WebServlet(“”) 注解, 则无需这一步操作servlet !-- 类名称 -- servlet-nameBaseServlet/servlet-name !—包名.类名 -- servlet-classservlet.BaseServlet/servlet-class /servlet servlet-mapping servlet-nameBaseServlet/servlet-name !—项目路径-- url-pattern/servletLearn/url-pattern /servlet-mapping参考资料菜鸟教程 – Servlet 服务器 HTTP 响应https://www.runoob.com/servlet/servlet-server-response.html博客园 Author 小顾问 – HttpServlet详解https://www.cnblogs.com/panjun-Donet/archive/2010/02/22/1671290.htmlOracle Java EE API – 类HttpServlethttps://docs.oracle.com/javaee/7/api/javax/servlet/http/HttpServlet.html

相关新闻

终极指南:三步让经典《暗黑破坏神2》在现代PC上流畅运行的完整方案

终极指南:三步让经典《暗黑破坏神2》在现代PC上流畅运行的完整方案

终极指南:三步让经典《暗黑破坏神2》在现代PC上流畅运行的完整方案 【免费下载链接】d2dx D2DX is a complete solution to make Diablo II run well on modern PCs, with high fps and better resolutions. 项目地址: https://gitcode.com/gh_mirrors/d2/d2dx …

2026/10/6 18:19:55 阅读更多 →
EdgeRemover终极指南:三步彻底卸载Windows系统Edge浏览器

EdgeRemover终极指南:三步彻底卸载Windows系统Edge浏览器

EdgeRemover终极指南:三步彻底卸载Windows系统Edge浏览器 【免费下载链接】EdgeRemover A PowerShell script that correctly uninstalls or reinstalls Microsoft Edge on Windows 10 & 11. 项目地址: https://gitcode.com/gh_mirrors/ed/EdgeRemover 你…

2026/9/29 9:34:27 阅读更多 →
sklearn.linear_model.LogisticRegression()函数解析(最清晰的解释)

sklearn.linear_model.LogisticRegression()函数解析(最清晰的解释)

欢迎关注WX公众号:【程序员管小亮】 sklearn.linear_model.LogisticRegression()函数全称是Logistic回归(aka logit,MaxEnt)分类器。 class sklearn.linear_model.LogisticRegression(penaltyl2, dualFalse, tol0.0001, C1.0, f…

2026/10/13 9:24:44 阅读更多 →

最新新闻

Windows本地部署SAM3:从环境配置到图像分割Demo全流程实战

Windows本地部署SAM3:从环境配置到图像分割Demo全流程实战

聊一个最近折腾完的活儿:在Windows系统上把SAM3本地部署起来,跑通了一个图像分割demo。如果你对“点一下就把图上物体抠出来”这种能力感兴趣,又不想把图片传到任何在线平台,这篇文章应该正好合适。这里的SAM3,指的是第…

2026/10/15 6:58:51 阅读更多 →
PS5远程串流实战指南:从局域网到外网,任意设备接管主机

PS5远程串流实战指南:从局域网到外网,任意设备接管主机

先说个场景:大屏被家里人占着看剧,主机在卧室,你人躺在客厅沙发上,手机就在手边。这时候抛开“必须坐在电视前才能玩”的惯性,把PS5的画面和操作无缝拉到眼前这块小屏幕上,体验一次之后,大概率就…

2026/10/15 6:58:51 阅读更多 →
企业级物联网平台架构设计:从设备接入到稳定运营的完整指南

企业级物联网平台架构设计:从设备接入到稳定运营的完整指南

做物联网平台这几年,我有一个越来越强烈的感受:企业级物联网平台最难的地方,从来不在技术炫技,而在那些没人愿意细抠的脏活累活。设备接入、数据治理、权限管理、异常恢复,每一件单独看都不起眼,凑在一起却…

2026/10/15 6:58:51 阅读更多 →
8A同步降压芯片JW5068A深度解析:I2架构与谷值限流设计

8A同步降压芯片JW5068A深度解析:I2架构与谷值限流设计

简介:这是一份 JW5068A 同步降压转换器官方芯片手册,面向电源设计工程师、硬件开发者及电子爱好者。芯片基于 I2 架构,支持宽输入电压工作,可输出 8A 连续电流与 16A 峰值电流,最高效率达 95%,轻载时仍能保…

2026/10/15 6:58:51 阅读更多 →
家居装修AI咨询助手:从RAG知识库到一问即答的产品实战

家居装修AI咨询助手:从RAG知识库到一问即答的产品实战

做家居装修AI智能咨询助手之前,我在装修论坛和投诉平台里泡了将近两个月,看业主们怎么描述自己遇到的困惑。装修这个行业,信息不是少,而是又多又杂。同一个问题,网上能搜出十个答案,而且经常互相打架——“…

2026/10/15 6:58:51 阅读更多 →
第一次用Bambu Studio切片:从导入模型到出件的完整上手教程

第一次用Bambu Studio切片:从导入模型到出件的完整上手教程

第一次用Bambu Studio切片:从导入模型到出件的完整上手教程 【免费下载链接】BambuStudio PC Software for BambuLab and other 3D printers 项目地址: https://gitcode.com/GitHub_Trending/ba/BambuStudio Bambu Studio 是一款面向 Bambu Lab 及其他品牌 3…

2026/10/15 6:57:51 阅读更多 →

日新闻

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

1. 为什么选择容器化方式部署 LoRa 网络服务LoRa 物联网项目落地时,网络服务器是整个链路的核心枢纽。它负责接收网关上报的数据包、完成去重与解密、再把有效载荷分发给上层应用。早期大家习惯把网络服务器直接装在物理机上,依赖一堆系统库和特定版本的…

2026/10/15 0:00:46 阅读更多 →
共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

1. 共享推理服务里,扩缩容到底难在哪做过大模型推理服务部署的人,大概都经历过这样的场景:一个团队共用一套推理集群,A 业务跑的是 7B 的小模型,B 业务跑的是 72B 的大模型,C 业务白天流量高、晚上几乎归零…

2026/10/15 0:00:46 阅读更多 →
Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

1. 引子:一次内核恐慌引发的追查先从一个真实场景说起。某次我给一台老旧的嵌入式设备折腾系统裁减,为了把启动时间压进两秒以内,我手贱地把一串自认为“没用”的 systemd 服务给 disable 了,其中就包括systemd-remount-fs.servic…

2026/10/15 0:00:46 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/14 16:30:29 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 0:14:36 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 22:45:47 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 7:53:34 阅读更多 →