整合freemarker要求必须将视图文件放在 src/main/resources下的templates文件夹下,该文件夹是安全的不可直接访问的,必须由controller之类的接受请求类去跳转,因为如果直接访问就意味着需要及时响应,而springboot需要给展示文件去渲染,这需要时间,所以他是不允许被直接访问的。

1.pom.xml

  1. <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">
  2. <modelVersion>4.0.0</modelVersion>
  3. <parent>
  4. <groupId>org.springframework.boot</groupId>
  5. <artifactId>spring-boot-starter-parent</artifactId>
  6. <version>1.5.10.RELEASE</version>
  7. </parent>
  8. <groupId>com.mr.li</groupId>
  9. <artifactId>springboot_004</artifactId>
  10. <version>0.0.1-SNAPSHOT</version>
  11.  
  12. <properties>
  13. <java.version>1.7</java.version>
  14. </properties>
  15.  
  16. <dependencies>
  17. <!-- 添加启动器 -->
  18. <dependency>
  19. <groupId>org.springframework.boot</groupId>
  20. <artifactId>spring-boot-starter-web</artifactId>
  21. </dependency>
  22.  
  23. <!-- freemarker启动器:使用模板开发-->
  24. <dependency>
  25. <groupId>org.springframework.boot</groupId>
  26. <artifactId>spring-boot-starter-freemarker</artifactId>
  27. </dependency>
  28. </dependencies>
  29. </project>

2.实体类

  1. package com.mr.li.pojo;
  2.  
  3. public class User {
  4.  
  5. private int id;
  6.  
  7. private String name;
  8.  
  9. private int age;
  10.  
  11. public User(int id, String name, int age) {
  12. super();
  13. this.id = id;
  14. this.name = name;
  15. this.age = age;
  16. }
  17.  
  18. public User() {
  19. }
  20.  
  21. public int getId() {
  22. return id;
  23. }
  24.  
  25. public void setId(int id) {
  26. this.id = id;
  27. }
  28.  
  29. public String getName() {
  30. return name;
  31. }
  32.  
  33. public void setName(String name) {
  34. this.name = name;
  35. }
  36.  
  37. public int getAge() {
  38. return age;
  39. }
  40.  
  41. public void setAge(int age) {
  42. this.age = age;
  43. }
  44. }

3.controller

  1. package com.mr.li.controller;
  2.  
  3. import java.util.ArrayList;
  4. import java.util.List;
  5.  
  6. import org.springframework.stereotype.Controller;
  7. import org.springframework.ui.Model;
  8. import org.springframework.web.bind.annotation.RequestMapping;
  9.  
  10. import com.mr.li.pojo.User;
  11.  
  12. @Controller
  13. public class MyController {
  14.  
  15. @RequestMapping("/show")
  16. public String show(Model model) {
  17. //生成jsp页面需要展示的数据源
  18. List<User> list = new ArrayList<User>();
  19. list.add(new User(1, "小明", 15));
  20. list.add(new User(2, "小红", 16));
  21. list.add(new User(3, "小丽", 17));
  22. //这里前面的list是在jsp中使用EL表达式所使用的名称
  23. model.addAttribute("list", list);
  24. //这里返回的是jsp页面名称,前后缀在配置文件中
  25. return "users";
  26. }
  27. }

5.users.ftl  此文件名字叫users因为controller中show方法返回的名字叫users,里面的EL表达式中的list是controller类中的model对象的addAttribute方法的key,参数名为list.

  1. <html>
  2. <head>
  3. <title>展示用户数据</title>
  4. <meta charset="utf-9"></meta>
  5. </head>
  6.  
  7. <body>
  8.  
  9. <table border="1" align="center" width="50%">
  10.  
  11. <tr>
  12.  
  13. <th>ID</th>
  14. <th>Name</th>
  15. <th>Age</th>
  16. </tr>
  17.  
  18. <#list list as user >
  19. <tr>
  20. <td>${user.id}</td>
  21. <td>${user.name}</td>
  22. <td>${user.age}</td>
  23. </tr>
  24. </#list>
  25. </table>
  26. </body>
  27. </html>

访问的url: http://localhost:8080/show

项目结构:

springboot整合视图层之freemarker的更多相关文章

  1. springboot整合视图层之jsp

    在springboot中不推荐视图层使用jsp展示,但是人们以前已经习惯使用jsp,所以对jsp也有支持,但是是解耦性的.也就是说并没有像其他组件一样直接集成到启动器中,所以像jsp引擎之类的需要额外 ...

  2. springboot整合视图层之Thymeleaf

    Thymeleaf中有自己的表达式,和自己的语法,可以把数据取出来后再进行判断,遍历等操作,另外它还封装了strings,dates....对象,可以利用这些对象对已有的数据进行简单的逻辑处理: 1. ...

  3. springboot学习入门简易版四---springboot2.0静态资源访问及整合freemarker视图层

    2.4.4 SpringBoot静态资源访问(9) Springboot默认提供静态资源目录位置需放在classpath下,目录名需要符合如下规则 /static  /public  /resourc ...

  4. 【SpringBoot】09.SpringBoot整合Freemarker

    SpringBoot整合Freemarker 1.修改pom文件,添加坐标freemarker启动器坐标 <project xmlns="http://maven.apache.org ...

  5. springboot整合freemarker

    前后端分离现在越来越多,如何有效的使用springboot来整合我们的页面是一个很重要的问题. springboot整合freemarker有以下几个步骤,也总结下我所犯的错误: 1.加依赖: 2.配 ...

  6. springboot整合mybatis,freemarker

    springboot 整合mybaits,,freemarker pom.xml文件 <?xml version="1.0" encoding="UTF-8&quo ...

  7. springboot 整合 freemarker

    springboot 整合 freemarker 依赖 <parent> <groupId>org.springframework.boot</groupId> & ...

  8. SpringBoot整合freemarker 引用基础

    原 ElasticSearch学习笔记Ⅲ - SpringBoot整合ES 新建一个SpringBoot项目.添加es的maven坐标如下: <dependency> <groupI ...

  9. 【Springboot】Springboot整合Thymeleaf模板引擎

    Thymeleaf Thymeleaf是跟Velocity.FreeMarker类似的模板引擎,它可以完全替代JSP,相较与其他的模板引擎,它主要有以下几个特点: 1. Thymeleaf在有网络和无 ...

随机推荐

  1. vue this触发事件

    @click="aHref(index,$event)" aHref: function(url,event){ this.$router.push(url); $(event.c ...

  2. 将Maven项目打包成可执行jar文件(引用第三方jar)

    方法一. mvn assembly 或 mvn package (一个jar包) 把依赖包和自己项目的文件打包如同一个jar包(这种方式对spring的项目不支持) <build>     ...

  3. 《剑指offer》 合并两个排序的链表

    本题来自<剑指offer> 合并两个排序的链表 题目: 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则. 思路: A:采用递归的方式(C++ C ...

  4. java易错题----静态方法的调用

    class A{ public static String s="A.s"; } class B extends A{ public static String s="B ...

  5. java----DOS命令

    dir /?   查看帮助 dir /s   查看当前的目录,以及子目录

  6. poj1185 状态压缩经典题

    状态压缩的好题,直接求会爆内存,先把所有可能的状态求出来存在stk里,然后f[i][k][t]表示i行状态为t,i-1状态为k,由i-1状态来推出i状态即可 注意要打好边际条件的状态,并且某个可行状态 ...

  7. Nginx详解十一:Nginx场景实践篇之Nginx缓存

    浏览器缓存: HTTP协议定义的缓存机制(如:Expires.Cache-control等) 当浏览器第一次请求的时候,浏览器是没有缓存的 第二次请求开始就有缓存了 校验过期机制 配置语法-expir ...

  8. 线上CPU飚高(死循环,死锁……)?帮你迅速定位代码位置

    top基本使用: top命令参考本篇文章 查看内存和CPU的top命令,别看输出一大堆,理解了其实很简单 top 命令运行图: 第一行:基本信息 第二行:任务信息 第三行:CPU使用情况 第四行:物理 ...

  9. jQuery核心方法

    1.$(document.body).css( "background", "black" ); 2.$(myForm.elements).hide():隐藏表 ...

  10. 基于“MVC”框架集设计模式,开发用户管理系统!

    MVC----(Model View Controller)设计模型: M:表示业务数据和业务规则.包括DAO(beans).DBHelper(DBHelper),用于封装数据库连接,业务数据库处理. ...