前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Spring】运行Spring Boot项目,请求响应流程分析以及404和500报错

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

作者头像
椰椰椰耶
发布2024-10-15 15:53:58
1290
发布2024-10-15 15:53:58
举报
文章被收录于专栏:学习

1. 运行项目

代码语言:javascript
复制
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
image.png

2. 输出 Hello world

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

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

代码语言:javascript
复制
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
image.png|498

3. Web 服务器

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

image.png
image.png

前面文章已经介绍了 HTTP 协议,知道了 HTTP 协议就是 HTTP 客户端和 HTTP 服务器之间的交互数据的格式

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

  • 常见的 Web 服务器有:ApacheNginxIISTomcatJboss

Spring Boot 内置了 Tomcat 服务器,无需配置就可直接运行

image.png
image.png

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

4. 请求响应流程分析

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

image.png
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
image.png|595
错误实例 2:注解写错

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

代码语言:javascript
复制
@Controller
public class UserController{
	
	@RequestMapping("/sayHi")
	public String sayHi(){
		return "hello, spring";
	}
}
  • 此时访问也会报错
image.png
image.png

通过 Fiddler 观察 http 请求

image.png
image.png

500

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

错误实例:

代码语言:javascript
复制
@RestController
public class UserController {
	
	@RequestMapping("/sayHi") {
		int res = 10/0;
		return "hello, Spring";
		}
}
  • 重启 Tomcat 服务器,重新访问页面,可以看到:
image.png
image.png

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

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

无法访问此网站

一般是 Tomcat 启动失败了

image.png|486
image.png|486

打开 Fiddler 的话,界面如下:

image.png
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 项目了
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-10-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 运行项目
  • 2. 输出 Hello world
  • 3. Web 服务器
  • 4. 请求响应流程分析
  • 5. 访问出错怎么办
    • 404
      • 错误实例 1:URL 单词拼错
      • 错误实例 2:注解写错
    • 500
      • 无法访问此网站
        • 小结
        • 总结
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档