【JavaEE】Web服务器与请求响应流程:深入了解如何处理Web请求


Web服务器

浏览器和服务器两端进⾏数据交互, 使⽤的就是HTTP协议

在这里插入图片描述

前⾯我们已经学习了 HTTP 协议, 知道了 HTTP 协议就是 HTTP 客⼾端和 HTTP 服务器之间的交互数据的格式.

Web 服务器就是对HTTP协议进⾏封装, 程序员不需要直接对协议进⾏操作(⾃⼰写代码去解析http协议规则),让Web开发更加便捷, 所以Web服务器也被称为WWW服务器, HTTP服务器, 主要功能是提供⽹上信息浏览服务.

常⻅的Web服务器有: Apache,Nginx, IIS, Tomcat, Jboss等

SpringBoot 内置了Tomcat服务器, ⽆需配置即可直接运⾏

在这里插入图片描述

Tocmat默认端⼝号是8080, 所以我们程序访问时的端⼝号也是8080

  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::               (v2.7.17)

2023-11-24 12:59:29.331  INFO 16464 --- [           main] com.example.demo.DemoApplication         : Starting DemoApplication using Java 1.8.0_271 on LAPTOP-CVE710EG with PID 16464 (D:\JavaFrame\demo\target\classes started by 幽琴健 in D:\JavaFrame\demo)
2023-11-24 12:59:29.339  INFO 16464 --- [           main] com.example.demo.DemoApplication         : No active profile set, falling back to 1 default profile: "default"
2023-11-24 12:59:31.210  INFO 16464 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat initialized with port(s): 8080 (http)
2023-11-24 12:59:31.227  INFO 16464 --- [           main] o.apache.catalina.core.StandardService   : Starting service [Tomcat]
2023-11-24 12:59:31.227  INFO 16464 --- [           main] org.apache.catalina.core.StandardEngine  : Starting Servlet engine: [Apache Tomcat/9.0.82]
2023-11-24 12:59:32.394  INFO 16464 --- [           main] o.a.c.c.C.[Tomcat].[localhost].[/]       : Initializing Spring embedded WebApplicationContext
2023-11-24 12:59:32.394  INFO 16464 --- [           main] w.s.c.ServletWebServerApplicationContext : Root WebApplicationContext: initialization completed in 2972 ms
2023-11-24 12:59:32.880  INFO 16464 --- [           main] o.s.b.w.embedded.tomcat.TomcatWebServer  : Tomcat started on port(s): 8080 (http) with context path ''
2023-11-24 12:59:32.891  INFO 16464 --- [           main] com.example.demo.DemoApplication         : Started DemoApplication in 4.134 seconds (JVM running for 6.67)
8080 (http) with context path ''

注意这句日志,在Servlet中,路径是http://ip:port/context path/servlet path

而现在在SpringBootcontext path就是空的了,直接就是servlet path

错误日志推荐从下往上一段一段看

请求响应流程分析

浏览器输⼊URL之后, 发起请求, 就和服务器之间建⽴了连接

服务器:

在这里插入图片描述

浏览器:

  • 输⼊⽹址:http://127.0.0.1:8080/hello

    • 通过IP地址127.0.0.1定位到⽹络上的⼀台计算机, 127.0.0.1就是本机

    • 通过端⼝号8080找到计算机上对应的进程 , 也就是在本地计算机中找到正在运⾏的8080端⼝的程序

    • /user/sayhi是请求资源位置

      • 资源:对计算机⽽⾔资源就是数据
        • web资源:通过⽹络可以访问到的资源(通常是指存放在服务器上的数据)

http://127.0.0.1:8080/user/sayhi ,就是向本地计算机中的8080端⼝程序,获取资源位置是/user/sayhi的数据

8080端⼝程序,在服务器找/hello位置的资源数据,发给浏览器

服务器:

  • 接收到浏览器发送的信息(如:/user/sayhi)
  • 在服务器上找到/user/sayhi的资源
  • 把资源发送给浏览器

小结

最开始学习Spring的时候, 会遇到很多问题, 更多是环境相关的问题.

我们不仅要学习 Spring 代码的基本写法, 更重要的是学习排查错误的思路

程序猿调试 BUG 如同医⽣诊病.

⼀个有经验的程序猿和⼀个新⼿程序猿相⽐, 最⼤的优势往往不是代码写的多好, ⽽是调试效率有多⾼. 同⼀个问题可能新⼿花了⼏天都⽆法解决的, 但是有经验的程序猿可能⼏分钟就搞定了.

熟悉 HTTP 协议能让我们调试问题事半功倍.

  • 4xx 的状态码表⽰路径不存在, 往往需要检查 URL 是否正确, 和代码中设定的 Context Path 以及Servlet Path 是否⼀致.
  • 5xx 的状态码表⽰服务器出现错误, 往往需要观察⻚⾯提⽰的内容和 Tomcat ⾃⾝的⽇志, 观察是否存在报错.
  • 出现连接失败往往意味着服务没有正确启动, 也需要观察 服务的⾃⾝⽇志是否有错误提⽰.

观察⽇志是调试程序的重要途径. 系统⽇志往往很多, 需要同学们耐⼼阅读, 经常阅读, 熟练了就能更快速的找到问题了

  • 13
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值