前端最好使用vue.js

这里是freemaker 整合spring boot

1.编写pom文件:

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

2.编写cotroller:

( 由于要返回模板页面文件,所以我们只能使用@Controller 而不可以使用@RestController)

    @RequestMapping("/b")
public String b( Map<String,Object> map) {
Student s1=new Student("a","f",1,"aa");
Student s2=new Student("b","m",2,"bb");
Student s3=new Student("c","m",3,"cc");
Student s4=new Student("d","f",4,"dd"); ArrayList list= new ArrayList(); list.add(s1);
list.add(s2);
list.add(s3);
list.add(s4); map.put("stu",list);
map.put("name","yangtao"); return "views/b";
}

3.编写页面(使用了bootstrap)

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Owsome</title>
<!-- 最新版本的 Bootstrap 核心 CSS 文件 -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous"> <!-- 可选的 Bootstrap 主题文件(一般不用引入) -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/css/bootstrap-theme.min.css" integrity="sha384-rHyoN1iRsVXV4nD0JutlnGaslCJuC7uwjduW9SVrLvRYooPp2bWYgmgJQIXwl/Sp" crossorigin="anonymous"> <!-- 最新的 Bootstrap 核心 JavaScript 文件 -->
<script src="https://cdn.jsdelivr.net/npm/bootstrap@3.3.7/dist/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script> </head>
<body>
<div class="container">
<div class="row">
<h1>Hello,${name}.这是另外一个界面</h1> <div class="col-md-6" >
<img style="height: 500px " src="/imags/original.jpg" class=".img-responsive img-circle " alt="error">
</div> <div class="col-md-6">
<div style="height: 100px"></div>
<table >
<table border="1" class="table" >
<tr>
<td>姓名</td>
<td>性别</td>
<td>年龄</td>
<td>地址</td>
</tr>
<#list stu as item>
<tr>
<td>${item.name}</td>
<td>${item.gender}</td>
<td>${item.age}</td>
<td>${item.address}</td>
</tr>
</#list> </table>
<a href="http://127.0.0.1:8080/c">第三个页面</a>
</div>
</div>
</div>
</body>
</html>

4.编写properties

(也可以使用jsp文件,就是不知它怎么渲染了,先解释成java文件,然后渲染到html 上吗)

spring.freemarker.template-loader-path=classpath:/templates
spring.freemarker.cache=false
spring.freemarker.charset=UTF-8
spring.freemarker.check-template-location=true
spring.freemarker.content-type=text/html
spring.freemarker.expose-request-attributes=false
spring.freemarker.expose-session-attributes=false
spring.freemarker.request-context-attribute=request
spring.freemarker.suffix=.html

5.编写一个实体类

(必须要有get set 方法)

package com.git.springboot.fontandbacktest.demo.contrllor;

/**
*   * @description: TODO
*   * @param ${tags}
*   * @return ${return_type}
*   * @throws
*   * @author yangtao
*   * @date $date$ $time$
*/
public class Student { String name;
String gender;
String age;
String address; public Student( String name, String gender, String age, String address ) {
this.name = name;
this.gender = gender;
this.age = age;
this.address = address;
} 。。。。。
get and set 方法
}

出现过的错误

Tip: It's the step after the last dot that caused this error, not those before it.
----
Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
---- ----
FTL stack trace ("~" means nesting-related):
- Failed at: ${item.name} [in template "views/login.html" at line 39, column 29] 2019-09-04 10:08:55.867 ERROR 1406 --- [nio-8080-exec-1] s.e.ErrorMvcAutoConfiguration$StaticView : Cannot render error page for request [/a] and exception [The following has evaluated to null or missing:
==> item.name [in template "views/login.html" at line 39, column 31] ----
Tip: It's the step after the last dot that caused this error, not those before it.
----
Tip: If the failing expression is known to legally refer to something that's sometimes null or missing, either specify a default value like myOptionalVar!myDefault, or use <#if myOptionalVar??>when-present<#else>when-missing</#if>. (These only cover the last step of the expression; to cover the whole expression, use parenthesis: (myOptionalVar.foo)!myDefault, (myOptionalVar.foo)??
---- ----
FTL stack trace ("~" means nesting-related):
- Failed at: ${item.name} [in template "views/login.html" at line 39, column 29]
----] as the response has already been committed. As a result, the response may have the wrong status code.

解决办法,必须使用get and set 方法

最新文章

  1. AutoMapper 使用实践
  2. Python之路:堡垒机实例
  3. SecureCRT连接虚拟机(ubuntu)配置
  4. Linux Shell 学习总结
  5. JNI技术概念小结
  6. 通过StoryBoard加载视图控制器问题
  7. ResponseUtil反射制造唯一结果
  8. [整理]Linux压缩与解压缩命令整理。
  9. 【转】PHP网站常见安全漏洞,及相应防范措施总结
  10. GIT使用指南
  11. UITabBarController 笔记(三) UITabBarController 配合 UINavigationController 的使用
  12. hdu4614(线段树+二分)
  13. Codeforces 158 D
  14. HNU 13073 Ternarian Weights 解题报告
  15. markdown写作方法规范参考汇总
  16. PHP调用百度天气接口API
  17. linux 环境变量设置
  18. 虚拟机时间同步14 Aug 04:09:18 ntpdate[2941]: no server suitable for synchronization found
  19. P3747 相逢是问候 欧拉定理+线段树
  20. HTML DOM defaultValue 属性

热门文章

  1. vue 后期追回的属性不更新视图问题
  2. 网上很多laravel中cookie的使用方法。
  3. 9-6 UVa 11400
  4. 【CSS3 + 原生JS】移动的标签
  5. 洛谷P2486 [SDOI2011]染色 题解 树链剖分+线段树
  6. 2016.1.22 扩充临时表空间解决ora-01652错误
  7. 限制允许某些IP访问服务器
  8. python 字符串方法isdigit()
  9. Python--day46--mysql存储过程(不常用)(包含防sql注入)
  10. linux scull 的内存使用