欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

springmvc Controller方法沒有加@ResponseBody導(dǎo)致api訪問404問題

 更新時(shí)間:2024年01月23日 16:27:33   作者:_曉夏_  
這篇文章主要介紹了springmvc Controller方法沒有加@ResponseBody導(dǎo)致api訪問404問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

springmvc Controller方法沒有加@ResponseBody導(dǎo)致api訪問404

使用的 spring boot是2.4.5版本, 對(duì)應(yīng)的是spring 5 

<parent>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-parent</artifactId>
   <version>2.4.5</version>
   <relativePath/> <!-- lookup parent from repository -->
</parent> 

spring mvc 版本是: spring-webmvc:5.3.6 

看代碼:

@Controller
public class HomeController {
 
    private ApplicationContext applicationContext = null;
 
    @RequestMapping("/go")
    @ResponseBody
    public String go(){
        return "go";
    }
 
 
    @RequestMapping("/ok")
    public String ok(){
        return "success";
    }
    
}

controller使用的是 @Controller注解

/go 請(qǐng)求上加了 @ResponseBody注解, /ok請(qǐng)求上沒有加@ResponseBody注解 ,導(dǎo)致

/go 請(qǐng)求訪問正常, /ok訪問出現(xiàn) 頁(yè)面 404的報(bào)錯(cuò)。

為啥Controller 方法上加了 @ResponseBody注解,和不加區(qū)別這么大呢 ?

先說解決辦法

大家可能比較關(guān)心解決辦法:兩種解決辦法

1.@Controller替換成@RestController注解

@RestController
public class HomeController  {
 
}

2.Controller中的方法上加上@ResponseBody注解

    @RequestMapping("/go")
    @ResponseBody
    public String go(){
        return "go";
    }

1. @RestController 注解 包括了 @Controller 和@ResponseBody 兩個(gè)注解。 

問題原因

使用@Controller注解,如果你的方法上沒有使用 @ResponseBody注解,會(huì)導(dǎo)致spring mvc框架認(rèn)為你這個(gè)方法的返回值就是 ModelAndViewer對(duì)象,相當(dāng)于是一個(gè) 待跳轉(zhuǎn)的頁(yè)面,導(dǎo)致跳轉(zhuǎn)的時(shí)候找不到這個(gè) viewer ,導(dǎo)致404報(bào)錯(cuò)。

例如上面的Controller方法,  return "go", 會(huì)去配置的目錄下找 go頁(yè)面,可能是Jsp,或者 Freemarker,或者 Velocity,或者Thymeleaf (https://www.thymeleaf.org/官網(wǎng))

我們可以在服務(wù)中加入這兩個(gè)配置,以便后臺(tái)日志看到404報(bào)錯(cuò)的原因:

application.properties 文件中添加下面的2行配置:  

spring.mvc.throw-exception-if-no-handler-found=true
spring.web.resources.add-mappings=false

DispatcherServlet類中 源碼有如下屬性,  throwExceptionIfNoHandlerFound 這個(gè)屬性默認(rèn)值是false,看看源碼的注釋大概能理解他的含義。 

到此,估計(jì)你也明白了,為啥Controller方法上不加 @ResponseBody注解會(huì)導(dǎo)致 訪問出現(xiàn) 404報(bào)錯(cuò)吧 。

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java 通過反射給實(shí)體類賦值操作

    Java 通過反射給實(shí)體類賦值操作

    這篇文章主要介紹了Java 通過反射給實(shí)體類賦值操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • JavaWeb中Servlet的深入講解

    JavaWeb中Servlet的深入講解

    這篇文章主要介紹了JavaWeb中Servlet的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • Java中的循環(huán)筆記整理(必看篇)

    Java中的循環(huán)筆記整理(必看篇)

    下面小編就為大家?guī)硪黄狫ava中的循環(huán)筆記整理(必看篇)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-06-06
  • 使用Java編寫一個(gè)好用的解析配置工具類

    使用Java編寫一個(gè)好用的解析配置工具類

    這篇文章主要為大家詳細(xì)介紹了如何使用Java編寫一個(gè)好用的解析配置工具類,支持解析格式有properties,yaml和yml,感興趣的可以了解下
    2024-11-11
  • SpringBoot整合redis實(shí)現(xiàn)輸入密碼錯(cuò)誤限制登錄功能

    SpringBoot整合redis實(shí)現(xiàn)輸入密碼錯(cuò)誤限制登錄功能

    遇到這樣的需求需要實(shí)現(xiàn)一個(gè)登錄功能,并且2分鐘之內(nèi)只能輸入5次錯(cuò)誤密碼,若輸入五次之后還沒有輸入正確密碼,系統(tǒng)將會(huì)將該賬號(hào)鎖定1小時(shí),這篇文章主要介紹了SpringBoot整合redis并實(shí)現(xiàn)輸入密碼錯(cuò)誤限制登錄功能,需要的朋友可以參考下
    2024-02-02
  • Spring IOC與DI核心重點(diǎn)分析

    Spring IOC與DI核心重點(diǎn)分析

    IOC也是Spring的核心之一了,之前學(xué)的時(shí)候是采用xml配置文件的方式去實(shí)現(xiàn)的,后來其中也多少穿插了幾個(gè)注解,但是沒有說完全采用注解實(shí)現(xiàn)。那么這篇文章就和大家分享一下,全部采用注解來實(shí)現(xiàn)IOC + DI
    2022-10-10
  • 淺談Java中實(shí)現(xiàn)深拷貝的兩種方式—clone() & Serialized

    淺談Java中實(shí)現(xiàn)深拷貝的兩種方式—clone() & Serialized

    這篇文章主要介紹了Java中實(shí)現(xiàn)深拷貝的兩種方式—clone() & Serialized,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • Java開發(fā)中POJO和JSON互轉(zhuǎn)時(shí)如何忽略隱藏字段的問題

    Java開發(fā)中POJO和JSON互轉(zhuǎn)時(shí)如何忽略隱藏字段的問題

    這篇文章主要介紹了Java開發(fā)中POJO和JSON互轉(zhuǎn)時(shí)如何忽略隱藏字段的問題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-02-02
  • Java_Spring之XML?的?AOP?配置

    Java_Spring之XML?的?AOP?配置

    這篇文章主要介紹了Java_Spring中基于XML的AOP配置,上篇講到的是基于注解的AOP配置,對(duì)XML感興趣的同學(xué)可以參考閱讀本文
    2023-04-04
  • Java中的base64編碼器

    Java中的base64編碼器

    這篇文章介紹了Java中的base64編碼器,文中通過示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-04-04

最新評(píng)論