Java Web服务器是怎么处理请求的?
从2017年初开始自学Java,到现在工作一年半,恍然间已经在Java世界里畅游了大概5年。
作为一名Java后端程序员,如今日常工作就是写写接口,用来接收前端的请求,然后返回处理结果。
回想当初刚开始学习时,还需要自己定义Servlet
实现类。实现service()
方法,手动从request
中解析出请求参数,经过业务处理后,再通过response
将结果返回给前端。
学习和使用后Spring MVC后,直接在形参前添加@RequestParam
或@RequestBody
注解,就可以直接将前端请求参数转换成我们需要的对象。直接在响应参数前添加@ResponseBody
注解,就可以直接将返回值转换成JSON格式发送给前端。
后来,阅读了Java Servlet规范、Spring MVC源码和Tomcat源码,才发现Java领域Web服务器的本质其实就是Servlet
。
在Java领域的Web服务器,比如Tomcat、Jetty或Undertow,它们都是根据Java Servlet规范实现的。
就好比我们会根据产品经理的需求进行业务实现。这些Web服务器也会根据Java Servlet规范进行开发。
Web服务器都会按照Java Servlet规范的流程运行:
- 监听端口
- 接受到请求后创建
Socket
连接 - 从
Socket
连接中获取InputStream
和OutputStream
对象 - 从
InputStream
中解析HTTP数据,封装成request
- 将
OutputStream
封装成response
- 将
request
和resposne
作为参数传递给Servlet
在Java领域,所有Web服务都按照这个基本流程运行。理解这一点,我们日常开发会更加得心应手,对前后端交互也会更有底气。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构