1. application.yml 于 application.properties的区别

.properties 文件
 	 application.properties和 过往的 .properties 文件一样 以 key=value的形式配置
 	 当 需要表示层级时  通常是 spring.mvc.view.suffix  以''.'' 分割  过于冗长 并且不方便查询
.yml 文件
	application.yml 文件 不同于 properties  文件 它将如上面提到的: spring.mvc.view.suffix 变成了 如下这样的 树桩结构
spring:
  mvc:
    static-path-pattern: /static/**
   view:
     suffix: 

方便我们更加清新 了解配置的结构 和 快速的查询

并且在IDEA中 还支持 按节点的 展开和收起 更加清晰的向我们展示了配置文件的结构
SpringBoot学习散记(一)
SpringBoot学习散记(一)

2. Thymeleaf 模板

Thymeleaf是一款用于渲染XML/XHTML/HTML5内容的模板引擎。
ok简单来说 他完全可以代替原 .jsp 类似JSP,Velocity,FreeMaker等
但他最大的特别 他可以直接在浏览器中打开 因为他还是一个 html文件 浏览器会自动忽略它不认识的属性
这意味着 在项目的中期 页面变动.调整的过程中 不再像原jsp文件一样 需要在服务端编译成servlet运行 而是可以直接以html方式打开 由前端工程师调整和修改页面.

ok 让我们让看下 如何运用Thymeleaf

  1. 首先我们需要在pom.xml 引入 thymeleaf 包
 <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId> 
</dependency>

引入以后项目的视图默认地址将会变更为resource/templates 当然也可以在 application.yml 配置
那么所有的html都应该在 resource/templates 下面
SpringBoot学习散记(一)

  1. thymeleaf 的一些简单用法

首先 这可能是最简单的一个 html
SpringBoot学习散记(一)
并且我们可以直接用 浏览器打开它
SpringBoot学习散记(一)

ok 接下来 我们编写一个 Controller 通过 访问接口的形式 进入到这个html

@Controller
@RequestMapping("index")
public class IndexController {

    /**
     * 前往登陆页面
     * @return
     */
    @GetMapping("goToLogin")
    public String goToLogin(){
       
        return "userLogin"; //这里注意 我们说了 添加了 spring-boot-starter-thymeleaf jar包之后  视图默认的根目录在 resource/templates 下 所以我们 直接写 userLogin 就会返回 resource/templates/userLogin.html 页面
    }
}

SpringBoot学习散记(一)

ok 成功访问 当然最重要的 就是由后端传递参数值页面上 所以 我们再编写一下 之前的 index/goToLogin接口

 /**
     * 前往登陆页面
     * @param model
     * @return
     */
    @GetMapping("goToLogin")
    public String goToLogin(Model model){
        model.addAttribute("nicaName","小杨同学..");
        model.addAttribute("project","bootStudent");
        return "userLogin";
    }

那我们用 model传载了 nicaName 和 project 两个数据
如果是.jsp 文件 那么我可以利用 EL 表达式 ${nicaName} 和 ${project } 来在页面上显示两个数据
然而在thymeleaf 中 我们使用 这样的方式 当然还有跟多更全面的用法 大家可以去thymeleaf 官网自行了解 这里不细说

<!DOCTYPE html>
<html lang="en"
      xmlns="http://www.w3.org/1999/xhtml"
      xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>用户登陆</title>
    <link rel="stylesheet" type="text/css" href="../static/css/userLogin.css"/>
</head>
<body>
    <h1 class="title" th:text="${'欢迎你,'+ nicaName+ project+'登陆本平台'}">没读取到projectName</h1>
</body>
</html>

th:text="${‘欢迎你,’+ nicaName+ project+‘登陆本平台’}"

来回显数据 下面是访问的结果 :
SpringBoot学习散记(一)
需要注意的是 el表达式时 如果 ${nicaName} 是null 的时候 页面是空白的 没有显示 而在thymeleaf 中 ${nicaName} 如果是null的话 会输出null
SpringBoot学习散记(一)

  1. 引入css js
    关于引入css js文件 在.jsp中 我习惯于用 ${pageContext.request.contextPath}||<%=request.getContextPath()%> 两种方式来获取 项目名 然后拼接资源路径
    然而想到既然之后的页面都是html so 我想要保持前端的引入风格
<link rel="stylesheet" type="text/css" href="../static/css/userLogin.css"/>

再回顾一下 项目现在的结构
SpringBoot学习散记(一)

html文件 在 templates 中 而 static中也是推荐我们放静态资源的地方
所以只要前端在开发时 也是用这样的分层 那么我们就能够很好的将 前端的项目 移植到我们的项目中 进行往后的开发

所以先页面变成了这个样子
SpringBoot学习散记(一)
尝试用浏览器直接打开html

SpringBoot学习散记(一)
SpringBoot学习散记(一)
ok css加载成功了

然后使用接口访问… 结果和意外

SpringBoot学习散记(一)

css加载失败 原因是css路径错误 经过强大的百度呀.
发现 访问静态资源时 SpringMVC 的配置 spring.mvc.static-path-pattern 默认将静态资源访问的路径做了映射
其中默认配置的 /** 映射到 /static (或/public、/resources、/META-INF/resources)
其中默认配置的 /webjars/** 映射到 classpath:/META-INF/resources/webjars/

将 application.yml 中的 static-path-pattern 修改为 static-path-pattern: /static/** 之后
既可以用接口访问到 样式
也可以 使用 浏览器访问到样式
同时可以保留前端的导入风格
便于后期 的修改工作

SpringBoot学习散记(一)
SpringBoot学习散记(一)
SpringBoot学习散记(一)

ps: 暂时没有搞清楚 static-path-pattern 的工作原理 稍后考究

3. Spring Boot 热加载

e… 搞了一会Springboot 后我发现… 开debug模式 修改了html页面后 访问时 竟然没变化… 每次改为 都需要重启服务… 好吧 不爽
热部署两步走

  1. 导包 pom.xml 文件中

spring-boot-devtools Spring 官方提供的热加载jar 通过监听class的编译变化来实现热加载

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>  <!-- spring boot 实现热加载 jar  -->
            <optional>true</optional>
</dependency>

导包重启以后 发现 哈哈 没用 行吧 原来是我们再修改时 并没有触发 编译的过程
Idea 默认是不加载的 所以我们修改一下 idea的加载设置吧

  1. 修改加载设置
    打开 Settings 勾上如下配置 快捷键 Ctrl+Alt+S
    SpringBoot学习散记(一)
    然后使用 打开 Settings 勾上如下配置 快捷键 Ctrl+SHIFT+Alt+/ 打开 Maintenance 选择 1.Registry
    SpringBoot学习散记(一)
    找到如下图 并勾选
    SpringBoot学习散记(一)
    重启后即可实现 热加载 修改 .html .css .java 都实时生效 熟悉的debug模式 回来了

相关文章:

  • 2021-12-10
  • 2021-09-16
  • 2021-09-23
  • 2021-06-12
  • 2021-11-30
猜你喜欢
  • 2022-01-12
  • 2021-10-04
  • 2021-09-15
  • 2021-07-10
  • 2021-07-02
  • 2021-10-02
  • 2021-10-14
相关资源
相似解决方案