SpringBoot 如何访问templates目录下的html页面

前言

        很多小伙伴在初学SpringBoot时,总会遇到访问页面出现404的问题,相信这篇文章会帮助大家。

页面显示

        我们在创建的项目中分别增加两个页面,一个页面放在static目录下,另一个页面放在templates目录下。

         启动项目并在网页上输入网址,可以发现static目录下的index.html被访问了,而访问index2.html直接就404了。

            

         那是因为,static目录是用来保存静态文件的目录, 比如JS, CSS样式, 图片等, 是不需要服务器进行数据绑定的页面,此文件下都是静态资源文件,最主要的一个特点,可以通过浏览器地址栏,直接访问;而templates文件夹下放置的为动态资源,文件夹下的所有页面都需要通过系统来进行调用,而不能直接通过网址来访问。

问题解决

        我们可以引入thymeleaf模板去访问templates下的页面。thymeleaf模板依赖如下:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>

        加入了模板后,再为templates目录下的页面添加接口,接口代码如下:

package com.songqiao.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class RedirectTest {

    @RequestMapping("/index")
    public String index(){
        return "index2.html";
    }
}

        再次重启项目并在网页上输入访问/index,就可以访问到了!

总结

        static目录下的资源被定义为静态资源,SpringBoot默认不拦截;如果将HTML页面创建在static目录是可以直接访问的; templates目录下的文件被定义为动态网页模板,SpringBoot会拦截templates中定义的资源;如果将HTML页面创建在templates目录,必须通过控制器跳转访问。引入thymeleaf即可。

       那么我们可以不使用thymeleaf模板访问thymeleaf目录下的文件吗?当然可以,springboot默认访问static,resources,public这些文件夹下的文件,而没有默认访问templates下的。所以我们需要在application.yml中加上以下配置:

spring:
  web:
    resources:
      static-locations: classpath:/META-INF/resources/,classpath:/resources/,classpath:/static/,classpath:/public/,classpath:/templates/

再次启动项目并访问/index,发现也可以成功访问。

         希望这篇文章可以帮助大家更好的理解springboot中static和templates目录的区别以及出现404的问题。

  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

龙城桥少

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值