浏览器和服务器两端进行数据交互,使用的就是HTTP协议(HTTP客⼾端和 HTTP服务器之间的交互数据 的格式)。
Web服务器就是对HTTP协议进⾏封装,程序员不需要直接对协议进⾏操作(⾃⼰写代码去解析http协议 规则),让Web开发更加便捷,所以Web服务器也被称为WWW服务器,HTTP服务器,主要功能是提供网上信息浏览服务。
常⻅的Web服务器有:Apache,Nginx,IIS,Tomcat,Jboss等。
SprootBoot内置了Tomcat服务器,无需配置即可直接运行。
Tomcat默认端口号是8080,所以程序访问时的端口号也是8080端口号。
浏览器输入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 的资源
把资源发送给浏览器
4xx 客户端发生错误
5xx 服务端发生错误(第一时间去看错误日志)
1)404错误
404表示用户访问的资源不存在。大概率是URL的路径写的不正确。
正确示例:
package com.example.demo; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class UserController { @RequestMapping("/sayHi") public String say() { return "hello Spring Boot ~"; } }
错误示例1:url单词拼错
错误示例2:注解写错
通过fiddler观察http请求
2)500错误
500表示服务器出现内部错误。一般是服务器的代码执行过程中遇到了一些特殊情况(服务器异常崩溃)就会产生这个状态码。
错误示例:
@RestController public class UserController { @RequestMapping("/sayHi") public String sayHi(){ int res = 10/0; return "hello,Spring"; } }
重启服务重新访问:
可以观察在idea上,程序后端控制台打印了具体的异常调用栈
异常信息⾥已经提⽰了出现异常的代码是 UserController.java 的第 11 ⾏。
错误原因是算术异常: 除数为0 。按照异常提⽰,去解决对应的问题即可。
总结:
- 4xx 状态码 表示路径不存在,往往需要检查URL是否正确,和代码中设定的contex path 以及 servlet path 是否一致
- 5xx 状态码 表示服务器出现错误,往往需要观察页面的提示内容 和 Tomcat的日志,观察是否存在报错
- 出现连接失败往往意味着 服务没有正常启动,也需要观察服务的自身日志是否有错误提示
观察⽇志是调试程序的重要途径.系统⽇志往往很多,需要在工作或学习过程中耐⼼阅读,经常阅读,熟练了就能更快速的找到问题了~