0


【Spring】运行Spring Boot项目,请求响应流程分析以及404和500报错

1. 运行项目

importorg.springframework.boot.SpringApplication;importorg.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplicationpublicclassApplication{publicstaticvoidmain(String[] args){SpringApplication.run(Application.class, args);}}
  • @SpringBootApplicationSpring Boot 启动类注解 点击启动类的 main 方法就可以运行 Spring Boot 项目了,启动成功如下图所示:image.png

2. 输出 Hello world

JavaEE 更多是围绕着如何使用 Java 来进行 web 开发。如果要和浏览器进行交互,就需要使用 Spring Boot 来实现

在创建的项目包路径下创建 UserController 文件,实现代码如下:

importorg.springframework.web.bind.annotation.RequestMapping;importorg.springframework.web.bind.annotation.RestController;@RestControllerpublicclassUserController{@RequestMapping("/hello")publicStringhello(){return"Hello, Spring";}}
  • 重新启动项目,访问 127.0.0.1:8080/hello,最终效果如下:image.png|498

3. Web 服务器

浏览器和服务器两端进行数据交互,使用的就是

HTTP

协议image.png
前面文章已经介绍了

HTTP

协议,知道了

HTTP

协议就是

HTTP

客户端和

HTTP

服务器之间的交互数据的格式

Web

服务器就是对

HTTP

协议进行封装,程序员不需要直接对协议进行操作(自己写代码去解析

HTTP

协议规则),让

Web

开发更加便捷,所以

Web

服务器也被称为

WWW

服务器,

HTTP

服务器,主要功能是提供网上的信息浏览服务

  • 常见的 Web 服务器有:ApacheNginxIIS,**Tomcat**,Jboss
Spring Boot

内置了

Tomcat

服务器,无需配置就可直接运行image.png
Tomcat 默认端口号是 8080,所以我们程序访问时的端口号也是 8080

4. 请求响应流程分析

浏览器输入 URL 之后,发起请求,就和服务器之间建立了连接
image.png

浏览器,输入网址:

127.0.0.1:8080/user/sayhi
  • 通过 IP 地址 127.0.0.1 定位到网络上的一台计算机(127.0.0.1 就是本机)
  • 通过端口号 8080 找到计算机上对应的进程,也就是在本地计算机中找到正在运行的 8080 端口的程序
  • /user/sayhi 是请求资源位置 - 资源:对计算机而言资源就是数据- web 资源:通过网络可以访问到的资源(通常指放在服务器上的数据)
127.0.0.1:8080/user/sayhi

,就是向本地计算机中的

8080

端口程序,获取资源位置是

/user/sayhi

的数据,然后发给服务器


服务器:

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

5. 访问出错怎么办

404

404 表示用户访问的资源不存在,大概率是 URL 路径写的不正确

错误实例 1:URL 单词拼错

image.png|595

错误实例 2:注解写错

注释写错或者没写都会报错

@ControllerpublicclassUserController{@RequestMapping("/sayHi")publicStringsayHi(){return"hello, spring";}}
  • 此时访问也会报错image.png

通过

Fiddler

观察

http

请求 image.png

500

服务器出现内部错误,一般是服务器的代码执行过程中遇到了一些特殊情况(服务器异常崩溃),会产生这个状态码

错误实例:

@RestControllerpublicclassUserController{@RequestMapping("/sayHi"){int res =10/0;return"hello, Spring";}}
  • 重启 Tomcat 服务器,重新访问页面,可以看到:image.png

此时,程序后端控制台已经打印了具体的异常调用栈image.png

  • 异常信息里已经提示了出现异常的代码是 UserController.java 的第 11 行
  • 错误原因是算术异常:除数为 0
  • 按照异常提示,去解决对应的问题即可

无法访问此网站

一般是

Tomcat

启动失败了 image.png|486

打开 Fiddler 的话,界面如下:image.png

**这种情况一般是服务器未启动,也就是

Tomcat

未启动,或者 IP/端口号写错了**

小结

熟悉

HTTP

协议能让我们调试问题事半功倍

  • 4xx 的状态码标识路径不存在,往往需要向上检查 URL 是否正确,和代码中设定的 Context Path 以及 Servlet Path 是否一致
  • 5xx 的状态码表示服务器出现错误,往往需要观察页面提示的内容和 Tomcat 自身的日志,观察是否存在报错
  • 出现连接失败往往意味着服务没有正确启动,也需要观察服务器的自身日志是否有错误提示

程序猿调试 BUG 如同医生诊病
一个有经验的程序猿和一个新手程序猿相比,最大的优势往往不是代码写的多好,而是调试效率有多高。如同一个问题可能新手花了几天都无法解决,但是有经验的程序猿可能几分钟就搞定了

总结

Spring Boot

是为了快速开发

Spring

而诞生的,

Spring Boot

具备:

  • Spring Boot 提供了启动添加依赖的功能,可以快速集成框架
  • 内置 web 服务器,无需配置 Tomcatweb 服务器,直接运行和部署程序
  • 可以完全抛弃繁琐的 XML,使用注解和配置的方式进行开发
  • 支持更多的监控的指标,可以更好的了解项目的运行情况等特点Spring Boot 可使用 IDEA 或网页创建,它的设计思想是约定大于配置,类上标注@SpringBootApplication 就可以启动 Spring Boot 项目了
标签: spring spring boot java

本文转载自: https://blog.csdn.net/Yeeear/article/details/142695889
版权归原作者 椰椰椰耶 所有, 如有侵权,请联系我们删除。

“【Spring】运行Spring Boot项目,请求响应流程分析以及404和500报错”的评论:

还没有评论