最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SpringBoot如何返回頁面的實(shí)現(xiàn)方法

 更新時(shí)間:2021年07月29日 11:56:09   作者:編程小大白  
SpringBoot中使用Controller和頁面的結(jié)合能夠很好地實(shí)現(xiàn)用戶的功能及頁面數(shù)據(jù)的傳遞。本文介紹了如何實(shí)現(xiàn)頁面的返回以及這里面所包含的坑,感興趣的可以了解一下

SpringBoot中使用Controller和頁面的結(jié)合能夠很好地實(shí)現(xiàn)用戶的功能及頁面數(shù)據(jù)的傳遞。但是在返回頁面的時(shí)候竟然會(huì)出現(xiàn)404或者500的錯(cuò)誤,我總結(jié)了一下如何實(shí)現(xiàn)頁面的返回以及這里面所包含的坑。

SpringBoot中對Thymeleaf的集成已經(jīng)基本完善,但在特殊情況下,并不需要或者不能使用Thymeleaf,所以分成兩種情況對頁面的返回進(jìn)行闡述。

首先說一下這兩種情況下都會(huì)發(fā)生的錯(cuò)誤,也是新手們經(jīng)常會(huì)出現(xiàn)的錯(cuò)誤。

直接上代碼:

@RestController
public class TestController {
    @RequestMapping("/")
    public String index() {
        return "index";
    }
}

這個(gè)代碼的初衷是返回index.html頁面,但是執(zhí)行的結(jié)果是在頁面中輸出index。

原因分析:@RestController注解相當(dāng)于@ResponseBody和@Controller合在一起的作用。在使用@RestController注解Controller時(shí),Controller中的方法無法返回jsp頁面,或者h(yuǎn)tml,配置的視圖解析器 InternalResourceViewResolver不起作用,返回的內(nèi)容就是Return 里的內(nèi)容。

包括在Mapping注解使用的同時(shí)使用@ResponseBody時(shí)也會(huì)出現(xiàn)同樣的問題。

解決辦法:①去除@ResponseBody或?qū)⒑蠷est的注解換成對應(yīng)的原始注解;

   ②不通過String返回,通過ModelAndView對象返回,上述例子可將return語句換成下面的句子:

return new ModelAndView("index");

在使用ModelAndView對象返回的時(shí)候,不需要考慮有沒有@ResponseBody類似的注解。

還有一個(gè)需要注意的點(diǎn):@RequestMapping中的路徑一定不要和返回的頁面名稱完全相同,這樣會(huì)報(bào)500的錯(cuò)誤!?。?!

如下面這樣是不行的:

@Controller
public class TestController {
    @RequestMapping("/index")
    public String idx() {
        return "index";
    }
}

1、在不使用模板引擎的情況下:

在不使用模板引擎的情況下,訪問頁面的方法有兩種:

1)將所需要訪問的頁面放在resources/static/文件夾下,這樣就可以直接訪問這個(gè)頁面。如:

在未配置任何東西的情況下可以直接訪問:

而同樣在resources,但是在templates文件夾下的login.html卻無法訪問:

2)使用redirect實(shí)現(xiàn)頁面的跳轉(zhuǎn)

示例代碼(在頁面路徑和上面一致的情況下):

@Controller
public class TestController {
    @RequestMapping("/map1")
    public String index() {
        return "redirect:index.html";
    }
    @RequestMapping("/map2")
    public String map2() {
        return "redirect:login.html";
    }
}

執(zhí)行結(jié)果:

這說明這種方法也需要將html文件放在static目錄下才能實(shí)現(xiàn)頁面的跳轉(zhuǎn)。

當(dāng)然還是有終極解決方案來解決這個(gè)存放路徑問題的,那就是使用springmvc的配置:

spring:
  mvc:
    view:
      suffix: .html
    static-path-pattern: /**
  resources:
    static-locations: classpath:/templates/,classpath:/static/

這樣配置后,map1和map2都可以訪問到頁面了。

2、使用Thymeleaf模板引擎:

先將所需要的依賴添加至pom.xml

<!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-thymeleaf -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-thymeleaf</artifactId>
    <version>2.1.6.RELEASE</version>
</dependency>

同樣的頁面路徑下將controller代碼修改成下面的代碼:

@Controller
public class TestController {
    @RequestMapping("/map1")
    public String index() {
        return "index";
    }
    /** 下面的代碼可以實(shí)現(xiàn)和上面代碼一樣的功能 */
    /*public ModelAndView index() {
        return new ModelAndView("index");
    }*/
    @RequestMapping("map2")
    public String map2() {
        return "login";
    }
}

執(zhí)行結(jié)果:

這又說明一個(gè)問題,所需要的頁面必須放在templates文件夾下。當(dāng)然也可以修改,更改配置文件:

spring:
  thymeleaf:
    prefix: classpath:/static/
    suffix: .html
    cache: false #關(guān)閉緩存

更改prefix對應(yīng)的值可以改變Thymeleaf所訪問的目錄。但好像只能有一個(gè)目錄。

綜上:模板引擎的使用與否都可以實(shí)現(xiàn)頁面的訪問。區(qū)別在于頁面所存放的位置以及訪問或返回的時(shí)候后綴名加不加的問題。

到此這篇關(guān)于SpringBoot如何返回頁面的實(shí)現(xiàn)方法的文章就介紹到這了,更多相關(guān)SpringBoot返回頁面內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java多線程之ReentrantReadWriteLock源碼解析

    Java多線程之ReentrantReadWriteLock源碼解析

    這篇文章主要介紹了Java多線程之ReentrantReadWriteLock源碼解析,文中有非常詳細(xì)的代碼示例,對正在學(xué)習(xí)java基礎(chǔ)的小伙伴們有非常好的幫助,需要的朋友可以參考下
    2021-05-05
  • Struts2 自定義下拉框Tag標(biāo)簽

    Struts2 自定義下拉框Tag標(biāo)簽

    這篇文章主要介紹了Struts2 自定義下拉框Tag標(biāo)簽的相關(guān)資料,需要的朋友可以參考下
    2016-02-02
  • 解決mybatisPlus null 值更新的問題

    解決mybatisPlus null 值更新的問題

    這篇文章主要介紹了解決mybatisPlus null 值更新的問題,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-02-02
  • Java MyBatis 多表查詢詳解

    Java MyBatis 多表查詢詳解

    這篇文章主要給大家介紹了關(guān)于MyBatis如何實(shí)現(xiàn)多表查詢(多對一、一對多)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)
    2021-09-09
  • Java8時(shí)間轉(zhuǎn)換(LocalDateTime)代碼實(shí)例

    Java8時(shí)間轉(zhuǎn)換(LocalDateTime)代碼實(shí)例

    這篇文章主要介紹了java8時(shí)間轉(zhuǎn)換(LocalDateTime)代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-11-11
  • Springboot實(shí)現(xiàn)通用Auth認(rèn)證的幾種方式

    Springboot實(shí)現(xiàn)通用Auth認(rèn)證的幾種方式

    本文主要介紹了Springboot實(shí)現(xiàn)通用Auth認(rèn)證的幾種方式,主要介紹了4種方式,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • Java設(shè)計(jì)模式之策略模式案例詳解

    Java設(shè)計(jì)模式之策略模式案例詳解

    策略模式(Strategy?Pattern)定義了一組同類型的算法,在不同的類中封裝起來,每種算法可以根據(jù)當(dāng)前場景相互替換,從而使算法的變化獨(dú)立于使用它們的客戶端即算法的調(diào)用者
    2022-07-07
  • Java中打亂一個(gè)數(shù)組的2種公平算法分享

    Java中打亂一個(gè)數(shù)組的2種公平算法分享

    這篇文章主要介紹了Java中打亂一個(gè)數(shù)組的2種公平算法分享,本文講解了洗牌程序原理、生成隨機(jī)索引交換二種方法并給出示例代碼,需要的朋友可以參考下
    2015-03-03
  • Java使用正則表達(dá)式實(shí)現(xiàn)找出數(shù)字功能示例

    Java使用正則表達(dá)式實(shí)現(xiàn)找出數(shù)字功能示例

    這篇文章主要介紹了Java使用正則表達(dá)式實(shí)現(xiàn)找出數(shù)字功能,結(jié)合實(shí)例形式分析了Java針對數(shù)字的匹配查找及非數(shù)字替換操作相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2017-03-03
  • java中sdk與jdk的區(qū)別詳細(xì)解析

    java中sdk與jdk的區(qū)別詳細(xì)解析

    以下是對java中sdk與jdk的區(qū)別進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以過來參考下
    2013-08-08

最新評論

广州市| 赤峰市| 新龙县| 阳新县| 浪卡子县| 民权县| 杭州市| 娄烦县| 壤塘县| 呼和浩特市| 洪雅县| 博白县| 潜江市| 兴城市| 铅山县| 舟曲县| 湖州市| 吐鲁番市| 怀来县| 富裕县| 黑龙江省| 德昌县| 长海县| 大连市| 建昌县| 黔东| 新干县| 饶河县| 莒南县| 巫山县| 漳平市| 饶阳县| 当阳市| 娱乐| 南川市| 武冈市| 望江县| 卓尼县| 牙克石市| 筠连县| 承德市|