zoukankan      html  css  js  c++  java
  • springboot系列四、配置模板引擎、配置热部署

    一、配置模板引擎

      在之前所见到的信息显示发现都是以 Rest 风格进行显示,但是很明显在实际的开发之中,所有数据的显示最终都应该交由页面完成,但是这个页面并不是*.jsp 页面,而是普通的*.html 页面,而且最为重要的是,此处所使用的渲染的页面采用的是模版方式 的显示,而在 Java 开发行业,对于前台的显示模版常见的一共有三类技术:FreeMarker、Velocity、beetle、jsp、thymeleaf(推荐使用),于是下 面就利用 thymeleaf 实现一个简单的模版渲染操作。

    1、导入依赖

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

    2、Model 传参

    类似在 SpringMVC 的时代使用的是 ModelAndView 传递,SpringBoot 里面如果要传递直接在方法中定义一个 Model 参数即可。

        @RequestMapping("/getUser")
        public String getUser(Model model) {
            model.addAttribute("userName","小明");
            model.addAttribute("phone","123456");
            return "user";
        }

    3、控制跳转

    使用“@Controller”注解,时执行该控制器的方法后会进行跳转处理。如果现在要进行跳转页面的定义,有严格要求:在CLASSPATH路径下(src/main/resources、src/main/view)必须建立有一个templates的目录,在这个目 录里面保存有thymeleaf的所有相关页面,这些页面可以按照文件目录保存;resources下建立templates目前,创建user.html。

    <!DOCTYPE HTML>
    <html xmlns:th="http://www.thymeleaf.org">
    <head>
        <title>SpringBoot模版渲染</title>
        <meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/>
    </head>
    <body>
    <p th:text="${userName}"/>
    <p th:text="${phone}"/>
    </body>
    </html>

    4、yml中配置html后缀

    spring:
      thymeleaf:
        suffix: .html

    5、验证

    启动,访问:http://192.168.1.100:8082/springboot-demo/getUser

    二、热部署配置

    1、添加依赖

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <optional>true</optional>
        </dependency>

    说明:

    (1) devtools可以实现页面热部署(即页面修改后会立即生效,这个可以直接在application.properties文件中配置spring.thymeleaf.cache=false来实现),
    实现类文件热部署(类文件修改后不会立即生效),实现对属性文件的热部署。
    即devtools会监听classpath下的文件变动,并且会立即重启应用(发生在保存时机),注意:因为其采用的虚拟机机制,该项重启是很快的
    (2)配置了后在修改java文件后也就支持了热启动,不过这种方式是属于项目重启(速度比较快的项目重启),会清空session中的值,也就是如果有用户登陆的话,项目重启后需要重新登陆。

    默认情况下,/META-INF/maven,/META-INF/resources,/resources,/static,/templates,/public这些文件夹下的文件修改不会使应用重启,但是会重新加载(devtools内嵌了一个LiveReload server,当资源发生改变时,浏览器刷新)。

    2、配置热启动和监听目录

    devtools的配置

    在application.properties中配置spring.devtools.restart.enabled=false,此时restart类加载器还会初始化,但不会监视文件更新。
    在SprintApplication.run之前调用System.setProperty(“spring.devtools.restart.enabled”, “false”);可以完全关闭重启支持,配置内容:

    #热部署生效
    spring.devtools.restart.enabled: true
    #设置重启的目录
    #spring.devtools.restart.additional-paths: src/main/java
    #classpath目录下的WEB-INF文件夹内容修改不重启
    spring.devtools.restart.exclude: templates/**

    3、IDEA配置自动编译

    当我们修改了Java类后,IDEA默认是不自动编译的,而spring-boot-devtools又是监测classpath下的文件发生变化才会重启应用,所以需要设置IDEA的自动编译:

    (1)File-Settings-Compiler-Build Project automatically

     

    (2)ctrl + shift + alt + /,选择Registry,勾上 Compiler autoMake allow when app running

    4、测试

    • 修改类–>保存:应用会重启
    • 修改配置文件–>保存:应用会重启
    • 修改页面–>保存:应用不会重启,但会重新加载,页面会刷新(原理是将spring.thymeleaf.cache设为false,参考:Spring Boot配置模板引擎)
  • 相关阅读:
    LeetCode_637.二叉树的层平均值
    LeetCode_627.变更性别
    LeetCode_617.合并二叉树
    LeetCode_595.大的国家
    LeetCode_590.N叉树的后序遍历
    LeetCode_589.N叉树的前序遍历
    LeetCode_58.最后一个单词的长度
    LeetCode_566.重塑矩阵
    LeetCode_561.数组拆分 I
    LeetCode_56.合并区间
  • 原文地址:https://www.cnblogs.com/wangzhuxing/p/10140947.html
Copyright © 2011-2022 走看看