亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

運(yùn)行SpringBoot項(xiàng)目請求響應(yīng)流程分析以及404和500報(bào)錯(cuò)的解決辦法

 更新時(shí)間:2024年12月16日 11:09:36   作者:椰椰椰耶  
這篇文章主要介紹了運(yùn)行Spring Boot項(xiàng)目請求響應(yīng)流程分析以及404和500報(bào)錯(cuò)的解決辦法,文中通過代碼示例和圖文講解的非常詳細(xì),對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下

1. 運(yùn)行項(xiàng)目

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 啟動(dòng)類注解
點(diǎn)擊啟動(dòng)類的 main 方法就可以運(yùn)行 Spring Boot 項(xiàng)目了,啟動(dòng)成功如下圖所示:

image.png

2. 輸出 Hello world

JavaEE 更多是圍繞著如何使用 Java 來進(jìn)行 web 開發(fā)。如果要和瀏覽器進(jìn)行交互,就需要使用 Spring Boot 來實(shí)現(xiàn)

在創(chuàng)建的項(xiàng)目包路徑下創(chuàng)建 UserController 文件,實(shí)現(xiàn)代碼如下:

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";  
    }  
}

重新啟動(dòng)項(xiàng)目,訪問 127.0.0.1:8080/hello,最終效果如下:

image.png|498

3. Web 服務(wù)器

瀏覽器和服務(wù)器兩端進(jìn)行數(shù)據(jù)交互,使用的就是 HTTP 協(xié)議

image.png

前面文章已經(jīng)介紹了 HTTP 協(xié)議,知道了 HTTP 協(xié)議就是 HTTP 客戶端和 HTTP 服務(wù)器之間的交互數(shù)據(jù)的格式

Web 服務(wù)器就是對 HTTP 協(xié)議進(jìn)行封裝,程序員不需要直接對協(xié)議進(jìn)行操作(自己寫代碼去解析 HTTP 協(xié)議規(guī)則),讓 Web 開發(fā)更加便捷,所以 Web 服務(wù)器也被稱為 WWW 服務(wù)器,HTTP 服務(wù)器,主要功能是提供網(wǎng)上的信息瀏覽服務(wù)

  • 常見的 Web 服務(wù)器有:ApacheNginx,IIS,Tomcat,Jboss

Spring Boot 內(nèi)置了 Tomcat 服務(wù)器,無需配置就可直接運(yùn)行

image.png

Tomcat 默認(rèn)端口號(hào)是 8080,所以我們程序訪問時(shí)的端口號(hào)也是 8080

4. 請求響應(yīng)流程分析

瀏覽器輸入 URL 之后,發(fā)起請求,就和服務(wù)器之間建立了連接

image.png

瀏覽器,輸入網(wǎng)址:127.0.0.1:8080/user/sayhi

  • 通過 IP 地址 127.0.0.1 定位到網(wǎng)絡(luò)上的一臺(tái)計(jì)算機(jī)(127.0.0.1 就是本機(jī))
  • 通過端口號(hào) 8080 找到計(jì)算機(jī)上對應(yīng)的進(jìn)程,也就是在本地計(jì)算機(jī)中找到正在運(yùn)行的 8080 端口的程序
  • /user/sayhi 是請求資源位置
    • 資源:對計(jì)算機(jī)而言資源就是數(shù)據(jù)
    • web 資源:通過網(wǎng)絡(luò)可以訪問到的資源(通常指放在服務(wù)器上的數(shù)據(jù))

127.0.0.1:8080/user/sayhi,就是向本地計(jì)算機(jī)中的 8080 端口程序,獲取資源位置是 /user/sayhi 的數(shù)據(jù),然后發(fā)給服務(wù)器

服務(wù)器:

接收到瀏覽器發(fā)送的信息(如:/user/sayhi)在服務(wù)器上找到/user/sayhi 的資源把資源發(fā)給瀏覽器

5. 訪問出錯(cuò)怎么辦

404

404 表示用戶訪問的資源不存在,大概率是 URL 路徑寫的不正確

錯(cuò)誤實(shí)例 1:URL 單詞拼錯(cuò)

image.png|595

錯(cuò)誤實(shí)例 2:注解寫錯(cuò)

注釋寫錯(cuò)或者沒寫都會(huì)報(bào)錯(cuò)

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

此時(shí)訪問也會(huì)報(bào)錯(cuò)

image.png

通過 Fiddler 觀察 http 請求

image.png

500

服務(wù)器出現(xiàn)內(nèi)部錯(cuò)誤,一般是服務(wù)器的代碼執(zhí)行過程中遇到了一些特殊情況(服務(wù)器異常崩潰),會(huì)產(chǎn)生這個(gè)狀態(tài)碼

錯(cuò)誤實(shí)例:

@RestController
public class UserController {
	
	@RequestMapping("/sayHi") {
		int res = 10/0;
		return "hello, Spring";
		}
}

重啟 Tomcat 服務(wù)器,重新訪問頁面,可以看到:

image.png

此時(shí),程序后端控制臺(tái)已經(jīng)打印了具體的異常調(diào)用棧

image.png

  • 異常信息里已經(jīng)提示了出現(xiàn)異常的代碼是 UserController.java 的第 11 行
  • 錯(cuò)誤原因是算術(shù)異常:除數(shù)為 0
  • 按照異常提示,去解決對應(yīng)的問題即可

一般是 Tomcat 啟動(dòng)失敗了

image.png|486

打開 Fiddler 的話,界面如下:

image.png

這種情況一般是服務(wù)器未啟動(dòng),也就是 Tomcat 未啟動(dòng),或者 IP/端口號(hào)寫錯(cuò)了

小結(jié)

熟悉 HTTP 協(xié)議能讓我們調(diào)試問題事半功倍

  • 4xx 的狀態(tài)碼標(biāo)識(shí)路徑不存在,往往需要向上檢查 URL 是否正確,和代碼中設(shè)定的 Context Path 以及 Servlet Path 是否一致
  • 5xx 的狀態(tài)碼表示服務(wù)器出現(xiàn)錯(cuò)誤,往往需要觀察頁面提示的內(nèi)容和 Tomcat 自身的日志,觀察是否存在報(bào)錯(cuò)
  • 出現(xiàn)連接失敗往往意味著服務(wù)沒有正確啟動(dòng),也需要觀察服務(wù)器的自身日志是否有錯(cuò)誤提示

程序猿調(diào)試 BUG 如同醫(yī)生診病
一個(gè)有經(jīng)驗(yàn)的程序猿和一個(gè)新手程序猿相比,最大的優(yōu)勢往往不是代碼寫的多好,而是調(diào)試效率有多高。如同一個(gè)問題可能新手花了幾天都無法解決,但是有經(jīng)驗(yàn)的程序猿可能幾分鐘就搞定了

總結(jié)

Spring Boot 是為了快速開發(fā) Spring 而誕生的,Spring Boot 具備:

  • Spring Boot 提供了啟動(dòng)添加依賴的功能,可以快速集成框架
  • 內(nèi)置 web 服務(wù)器,無需配置 Tomcat 等 web 服務(wù)器,直接運(yùn)行和部署程序
  • 可以完全拋棄繁瑣的 XML,使用注解和配置的方式進(jìn)行開發(fā)
  • 支持更多的監(jiān)控的指標(biāo),可以更好的了解項(xiàng)目的運(yùn)行情況等特點(diǎn)
    Spring Boot 可使用 IDEA 或網(wǎng)頁創(chuàng)建,它的設(shè)計(jì)思想是約定大于配置,類上標(biāo)注@SpringBootApplication 就可以啟動(dòng) Spring Boot 項(xiàng)目了

以上就是運(yùn)行Spring Boot項(xiàng)目請求響應(yīng)流程分析以及404和500報(bào)錯(cuò)的解決辦法的詳細(xì)內(nèi)容,更多關(guān)于Spring Boot請求響應(yīng)404和500報(bào)錯(cuò)的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • MyBatis中resultType和parameterType和resultMap使用總結(jié)

    MyBatis中resultType和parameterType和resultMap使用總結(jié)

    這篇文章主要介紹了MyBatis中resultType和parameterType和resultMap使用總結(jié),具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • Maven多個(gè)項(xiàng)目實(shí)現(xiàn)聚合過程解析

    Maven多個(gè)項(xiàng)目實(shí)現(xiàn)聚合過程解析

    這篇文章主要介紹了Maven多個(gè)項(xiàng)目實(shí)現(xiàn)聚合過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-08-08
  • 如何利用Stream改變list中特定對象的某一屬性

    如何利用Stream改變list中特定對象的某一屬性

    這篇文章主要介紹了如何利用Stream改變list中特定對象的某一屬性問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • Java ScheduledExecutorService的具體使用

    Java ScheduledExecutorService的具體使用

    ScheduledExecutorService有線程池的特性,也可以實(shí)現(xiàn)任務(wù)循環(huán)執(zhí)行,本文主要介紹了Java ScheduledExecutorService的具體使用,具有一定的參考價(jià)值,感興趣的可以了解一下
    2023-05-05
  • 如何利用反射生成?MyBatisPlus中QueryWrapper動(dòng)態(tài)條件

    如何利用反射生成?MyBatisPlus中QueryWrapper動(dòng)態(tài)條件

    這篇文章主要介紹了如何利用反射生成?MyBatisPlus中QueryWrapper動(dòng)態(tài)條件,分享在MyBatisPlus中經(jīng)常會(huì)用到代碼來構(gòu)造查詢條件等內(nèi)容,需要的小伙伴可以參考一下
    2022-02-02
  • IDEA調(diào)試小技巧之Evaluate調(diào)試工具詳解

    IDEA調(diào)試小技巧之Evaluate調(diào)試工具詳解

    這篇文章主要介紹了IDEA調(diào)試小技巧之Evaluate調(diào)試工具,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • 詳解Springboot如何優(yōu)雅的進(jìn)行數(shù)據(jù)校驗(yàn)

    詳解Springboot如何優(yōu)雅的進(jìn)行數(shù)據(jù)校驗(yàn)

    基于?Spring?Boot?,如何“優(yōu)雅”的進(jìn)行數(shù)據(jù)校驗(yàn)?zāi)兀疚膶⒋蠹以敿?xì)介紹Springboot如何優(yōu)雅的進(jìn)行數(shù)據(jù)校驗(yàn),文中有詳細(xì)的代碼示例和流程步驟,需要的朋友可以參考下
    2023-06-06
  • Spring Boot 結(jié)合 aop 實(shí)現(xiàn)讀寫分離

    Spring Boot 結(jié)合 aop 實(shí)現(xiàn)讀寫分離

    這篇文章主要介紹了Spring Boot 結(jié)合 aop 實(shí)現(xiàn)讀寫分離的示例,幫助大家更好的理解和使用Spring Boot框架,感興趣的朋友可以了解下
    2020-11-11
  • Java數(shù)據(jù)導(dǎo)入功能之讀取Excel文件實(shí)例

    Java數(shù)據(jù)導(dǎo)入功能之讀取Excel文件實(shí)例

    這篇文章主要介紹了Java數(shù)據(jù)導(dǎo)入功能之讀取Excel文件實(shí)例,本文給出了jar包的下載地址以及讀取Excel文件的代碼實(shí)例,需要的朋友可以參考下
    2015-06-06
  • JVM執(zhí)行引擎的項(xiàng)目實(shí)踐

    JVM執(zhí)行引擎的項(xiàng)目實(shí)踐

    執(zhí)行引擎是Java虛擬機(jī)核心的組成部分之一,本文主要介紹了JVM執(zhí)行引擎的項(xiàng)目實(shí)踐,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-04-04

最新評論