spring boot访问templates目录下的html静态页面



spring boot访问静态资源:

    1. static目录用来存放js、css、图片等静态资源. . .

    2. templates目录用来存放html页面. . .
cd4356

spring boot默认将/**静态资源访问映射到以下目录:

  • classpath:/static
  • classpath:/public
  • classpath:/resources
  • classpath:/META-INF/resources

这四个目录的访问优先级:META-INF/resources > resources > static > public

  • 即这四个目录中存在同样的静态资源时,spring boot会优先访问META-INF/resources目录中的静态资源
    cd4356
    cd4356

PS: 在创建META-INF/resources目录时,需要一层层的创建(即:先创建META-INF目录,再创建resources目录),不要META-INF.resources这样一次性创建。虽然最终显示是一样的,但这样创建默认为是一个META-INF.resources目录,而不是META-INF/resources目录

PS: 一般使用spring boot默认为我们创建的static目录来放置css、图片、js等静态资源即可,无需额外创建META-INF/resources、resources目录。

PS: html页面不建议放在static目录下,而是放在templates目录中。
cd4356

🆗,前面说了,html页面放置在templates目录下,那么我们该怎么访问呢?

是不是像访问static目录下的静态资源一样,直接访问即可,我们来试一下!
cd4356
显而易见,templates目录下的页面文件是不能直接访问的,需要通过Controller进行访问(好像是websecurity权限控制的原因)。与我们在做ssm项目时候的WEB-INF目录一样,需要通过服务器内部进行访问,即走控制器–服务–视图解析器这个流程。

要访问templates目录下的html页面,还需要引入下面这个模板引擎,然后才能通过Controller来进行访问

<!--访问静态资源-->
<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>


🆗,下面我们来进行一下测试
cd4356

home.html

<html>
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width,initial-scale=1.0">
    <!--引用外部css样式-->
    <link rel="stylesheet" href="../css/home.css">
    <title></title>
</head>
<body>
    <div class="content">
        <span>好好学习,天天向上!</span>
        <img src="../image/dayan.png" width="10%">
    </div>
</body>
</html>


home.css

.content{
    color: red;
    font-family: 楷体;
    font-size: 25px;
}
.content > img{
    width: 10%;
}


控制器

package com.cd.o2o2.web.demo;

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

@Controller /*注意不要用@RestController,因为它返回的是json数据格式,而我们要的是html页面*/
public class HomeController {

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

}


效果
cd356

引入thymeleaf模板引擎后,成功通过控制器访问到了templates目录下的html静态页面,并且也成功访问到了static目录下的css、图片等静态资源。



总结:  

1. 使用spring initializr快速搭建spring boot项目,会自动在main/resources目录下创建static和templates目录。

2. static目录用来放置css、图片、js等静态资源。templates目录用来放置html静态页面。

3. static目录下的静态资源可以直接访问。但templates目录(被websecurity权限控制)下的html静态页面不能直接访问,需要在pom文件中添加thymeleaf模板引擎,然后通过controller控制器来进行访问。

4. 为什么要将html静态页面放置在templates目录?

  • templates目录下的html页面不能直接访问,需要通过服务器内部进行访问,可以避免无权限的用户访问到隐私页面,造成信息泄露。

5. 更多thymeleaf模板配置可在yml或properties配置文件中配置。(粒如默认访问路径为classpath:/templates/,你可以改成classpath:/static/,但不建议哈)

spring:
  #thymeleaf模板配置
  thymeleaf:
    cache: false                   # 这个开发配置为false,避免改了模板还要重启服务器
    prefix: classpath:/templates/  #模板文件视图前缀,默认是classpath:/templates/,可不用配置
    suffix: .html                  #模板文件视图后缀,默认是.html,可不用配置
    check-template-location: true  #检查模板位置,可不用配置
    encoding: utf-8                #编码字符集,默认为utf-8,可不用配置
    mode: HTML                     #模板的模式,默认为HTML,可不用配置
    servlet:
      content-type: text/html	   #模板的内容类型,默认为text/html,可不用配置
Spring Boot 项目的目录结构通常遵循标准的 Maven 或 Gradle 项目结构。下面是一个常见的 Spring Boot 项目目录结构示例: ``` ├── src │ ├── main │ │ ├── java │ │ │ └── com │ │ │ └── example │ │ │ └── myproject │ │ │ ├── controller │ │ │ ├── model │ │ │ ├── repository │ │ │ ├── service │ │ │ ├── exception │ │ │ └── MyProjectApplication.java │ │ ├── resources │ │ │ ├── application.properties │ │ │ ├── static │ │ │ └── templates │ │ └── webapp (可选) │ ├── test │ │ └── java │ │ └── com │ │ └── example │ │ └── myproject │ │ └── MyProjectApplicationTests.java │ └── target (自动生成,项目构建后生成) ├── pom.xml (Maven 项目的配置文件) └── build.gradle (Gradle 项目的配置文件) ``` 在这个目录结构中,主要的文件和目录包括: - `src/main/java`:存放主要的 Java 代码,包括控制器 (`controller`)、模型 (`model`)、持久层 (`repository`)、服务 (`service`)、异常处理 (`exception`) 等等。 - `src/main/resources`:存放主要的资源文件,如配置文件 (`application.properties`)、静态资源文件 (`static`)、模板文件 (`templates`) 等等。 - `src/main/webapp`:如果你的项目需要使用传统的 Web 应用的目录结构,可以将静态资源和 JSP 文件放到这个目录中。 - `src/test/java`:存放测试代码,通常与 `src/main/java` 目录结构类似,用于编写单元测试和集成测试。 - `pom.xml`:Maven 项目的配置文件,定义了项目的依赖和构建配置。 - `build.gradle`:Gradle 项目的配置文件,定义了项目的依赖和构建配置。 - `target`:在项目构建后自动生成的目录,包含了编译后的代码和构建产物。 这只是一个示例的目录结构,实际的项目可能会根据需求和团队约定进行调整。
评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

家师曹先生

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

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

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

打赏作者

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

抵扣说明:

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

余额充值