阶段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"; } }
浙公网安备 33010602011771号