阶段5 3.微服务项目【学成在线】_day04 页面静态化_03-freemarker测试环境搭建

新建一个module 




选择parent

test-freemarker




spring‐boot‐starter‐freemarker:spring boot 提供的关于 freemaker的相关的包
lombok:写模型类需要。
okhttp:远程访问的包

 <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-freemarker</artifactId>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
        <dependency>
            <groupId>com.squareup.okhttp3</groupId>
            <artifactId>okhttp</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-io</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
        </dependency>
    </dependencies>
 

复制进来以后,刷新一下

配置文件

application.yml和logback-spring.xml
两个配置文件直接复制过去


只配置freemarker的两厢,测试的时候把缓存关闭。监测时候设置为0表示立即去检查

server:
port: 8088 #服务端口

spring:
application:
name: test-freemarker #指定服务名
freemarker:
cache: false #关闭模板缓存,方便测试
settings:
template_update_delay: 0 #检查模板更新延迟时间,设置为0表示立即检查,如果时间大于0会有缓存不方便进行模板测试


新建一个包


日期类型的引入,是这个包下面的 java.util.Date;

写完了实体类的属性,加上@Data的注解,报错,通过手动的导入lombok.Data这个命名空间也不行。

application.yml的配置文件里面,导入的包也有lombok,并没有异常信息。

解决lombok的问题

在模块的引用里面,发现包的引用都有问题。

后来经过对比自己创建项目的pom.xml和资料里面给的pom.xml做了对比。发现可能是在创建项目的时候,没有选择好 module的parent项目。在pom.xml加上parent的标签 里面的配置。

完整的pom.xml代码

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">


    <parent>
        <artifactId>xc-framework-parent</artifactId>
        <groupId>com.xuecheng</groupId>
        <version>1.0-SNAPSHOT</version>
        <relativePath>../xc-framework-parent/pom.xml</relativePath>
    </parent>

    <version>1.0-SNAPSHOT</version>

    <modelVersion>4.0.0</modelVersion>
    <artifactId>test-freemarker</artifactId>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-freemarker</artifactId>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
        <dependency>
            <groupId>com.squareup.okhttp3</groupId>
            <artifactId>okhttp</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-io</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
        </dependency>
    </dependencies>
</project>

继续代码


 

package com.xuecheng.test.freemarker.model;

import lombok.Data;
import lombok.ToString;

import java.util.Date;
import java.util.List;

@Data
@ToString
public class Student {
    private String name;//姓名
    private int age;//年龄
    private Date birthday;//生日
    private Float money;//钱包
    private List<Student> friends;//朋友列表
    private Student bestFriend;//最好的朋友
}
 

创建模板

新建templates文件夹

新建模板文件。格式是ftl格式的


<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>Hello World!</title>
</head>
<body>
Hello ${name}
</body>
</html>

引入spring-boot-starter-web

这里不知道是不是视频没有仔细看还是怎么的。需要引入,spring-boot-starter-web方面下面创建的Controller可以用SpringMVC的一些注解

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

controller

新建controller文件夹,然后新建FreemarkerController





map作为一个形参。响应给模板的数据


package com.xuecheng.test.freemarker.controller;


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

import java.util.Map;

@RequestMapping("/freemarker")
public class FreemarkerController {
    @RequestMapping("/test1")
    public String test1(Map<String,Object> map){
        //返回freemarker模板的位置
        map.put("name","传智播客");
        return "test1";
    }
}

创建spring boot的启动类

package com.xuecheng.test.freemarker;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class FreemarkerTestApplication {
    public static void main(String[] args) {
        SpringApplication.run(FreemarkerTestApplication.class,args);
    }
}





conktroller加上@RestController


重启应用,测试:http://localhost:8088/freemarker/test1

在这里加断点测试

把@ResetController改成@Controller





最终代码

package com.xuecheng.test.freemarker.controller;


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

import java.util.Map;

@RequestMapping("/freemarker")
@Controller
public class FreemarkerController {
    @RequestMapping("/test1")
    public String test1(Map<String,Object> map){
        //返回freemarker模板的位置
        map.put("name","传智播客");
        return "test1";
    }
}


 

原文地址:https://www.cnblogs.com/wangjunwei/p/11579393.html