运行SpringBoot项目请求响应流程分析以及404和500报错的解决办法

 更新时间:2024年12月16日 11:09:36   作者:椰椰椰耶  
这篇文章主要介绍了运行Spring Boot项目请求响应流程分析以及404和500报错的解决办法,文中通过代码示例和图文讲解的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下

1. 运行项目

import org.springframework.boot.SpringApplication;  
import org.springframework.boot.autoconfigure.SpringBootApplication;  
  
@SpringBootApplication  
public class Application {  
  
    public static void main(String[] args) {  
        SpringApplication.run(Application.class, args);  
    }  
}

@SpringBootApplicationSpring Boot 启动类注解
点击启动类的 main 方法就可以运行 Spring Boot 项目了,启动成功如下图所示:

image.png

2. 输出 Hello world

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

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

import org.springframework.web.bind.annotation.RequestMapping;  
import org.springframework.web.bind.annotation.RestController;  
  
@RestController  
public class UserController {  

    @RequestMapping("/hello")  
    public String hello() {  
        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 服务器有:ApacheNginxIISTomcatJboss

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:注解写错

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

@Controller
public class UserController{
	
	@RequestMapping("/sayHi")
	public String sayHi(){
		return "hello, spring";
	}
}

此时访问也会报错

image.png

通过 Fiddler 观察 http 请求

image.png

500

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

错误实例:

@RestController
public class UserController {
	
	@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 服务器,无需配置 Tomcat 等 web 服务器,直接运行和部署程序
  • 可以完全抛弃繁琐的 XML,使用注解和配置的方式进行开发
  • 支持更多的监控的指标,可以更好的了解项目的运行情况等特点
    Spring Boot 可使用 IDEA 或网页创建,它的设计思想是约定大于配置,类上标注@SpringBootApplication 就可以启动 Spring Boot 项目了

以上就是运行Spring Boot项目请求响应流程分析以及404和500报错的解决办法的详细内容,更多关于Spring Boot请求响应404和500报错的资料请关注脚本之家其它相关文章!

相关文章

  • MyBatis中resultType和parameterType和resultMap使用总结

    MyBatis中resultType和parameterType和resultMap使用总结

    这篇文章主要介绍了MyBatis中resultType和parameterType和resultMap使用总结,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11
  • Maven多个项目实现聚合过程解析

    Maven多个项目实现聚合过程解析

    这篇文章主要介绍了Maven多个项目实现聚合过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-08-08
  • 如何利用Stream改变list中特定对象的某一属性

    如何利用Stream改变list中特定对象的某一属性

    这篇文章主要介绍了如何利用Stream改变list中特定对象的某一属性问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12
  • Java ScheduledExecutorService的具体使用

    Java ScheduledExecutorService的具体使用

    ScheduledExecutorService有线程池的特性,也可以实现任务循环执行,本文主要介绍了Java ScheduledExecutorService的具体使用,具有一定的参考价值,感兴趣的可以了解一下
    2023-05-05
  • 如何利用反射生成 MyBatisPlus中QueryWrapper动态条件

    如何利用反射生成 MyBatisPlus中QueryWrapper动态条件

    这篇文章主要介绍了如何利用反射生成 MyBatisPlus中QueryWrapper动态条件,分享在MyBatisPlus中经常会用到代码来构造查询条件等内容,需要的小伙伴可以参考一下
    2022-02-02
  • IDEA调试小技巧之Evaluate调试工具详解

    IDEA调试小技巧之Evaluate调试工具详解

    这篇文章主要介绍了IDEA调试小技巧之Evaluate调试工具,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-09-09
  • 详解Springboot如何优雅的进行数据校验

    详解Springboot如何优雅的进行数据校验

    基于 Spring Boot ,如何“优雅”的进行数据校验呢,本文将待大家详细介绍Springboot如何优雅的进行数据校验,文中有详细的代码示例和流程步骤,需要的朋友可以参考下
    2023-06-06
  • Spring Boot 结合 aop 实现读写分离

    Spring Boot 结合 aop 实现读写分离

    这篇文章主要介绍了Spring Boot 结合 aop 实现读写分离的示例,帮助大家更好的理解和使用Spring Boot框架,感兴趣的朋友可以了解下
    2020-11-11
  • Java数据导入功能之读取Excel文件实例

    Java数据导入功能之读取Excel文件实例

    这篇文章主要介绍了Java数据导入功能之读取Excel文件实例,本文给出了jar包的下载地址以及读取Excel文件的代码实例,需要的朋友可以参考下
    2015-06-06
  • JVM执行引擎的项目实践

    JVM执行引擎的项目实践

    执行引擎是Java虚拟机核心的组成部分之一,本文主要介绍了JVM执行引擎的项目实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-04-04

最新评论