前言

虽然现在流行前后端分离开发和部署,但是有时候还是需要用到服务端渲染页面的。比如:需要考虑到SEO优化等问题的时候,FreeMark其实还是很有作用的。本人的博客本来是用React开发的,但是后来发现搜索引擎难以收集由JS渲染的页面,所以前段时间,是用jQuery+FreeMark重写了我的博客前端页面。感兴趣的朋友,可以点击下面的查看更多的链接跳转至本人的博客。

在springboot中,不推荐使用JSP(其实任何项目都不推荐使用JSP),而是推荐使用模板引擎,如FreeMark。其实使用模板引擎替代jsp的好处有很多,比如:FreeMark不需要便已成为class,避免了内存溢出的可能性,等等。好处有很多,这里就不深入探讨了。

springboot引入FreeMark

引入依赖:

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

配置FreeMark:

# freeMark config
spring.freemarker.allow-request-override=false
spring.freemarker.cache=true
spring.freemarker.check-template-location=true
spring.freemarker.charset=UTF-8
spring.freemarker.content-type=text/html
spring.freemarker.expose-request-attributes=false
spring.freemarker.expose-session-attributes=false
spring.freemarker.expose-spring-macro-helpers=false
spring.freemarker.suffix=.ftl
spring.freemarker.template-loader-path=classpath:/static/

这里,我把freemark的路劲配置到了static目录下。完成这些步骤,FreeMark已经配置完成了。

可以通过一个简单的页面来测试下freeMark。在static文件夹中创建index.ftl

<!doctype html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport"content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"><meta http-equiv="X-UA-Compatible" content="ie=edge"><title>Freem测试</title>
</head>
<body>
这是一个FreeMark。后台传过来的数据:${data}
</body>
</html>

这个freemark页面,展示从controller传过来的"data"。

新建一个PageController.class

@Controller
public class PageController {@GetMapping(value = "/")public String index(HttpServletRequest request){request.setAttribute("data","Hello World!!!");return "index";}}

这里千万别写RestController,否则会报错的。这里在request中,设置了data为Hello World!!!,启动项目查看效果:

这已经表明,SpringBoot配置FreeMark已经成功了。

FreeMark常用用法

取值
${user}
如果需要取对象里的某个属性,则使用"."即可
${user.name}
遍历
<#list list as item>${item.name}
</#list><#list ["星期一", "星期二", "星期三"] as day>${day}
</#list>
条件
<#if username == "boss">Hi boss!
</#if><#if username == "boss">Hi boss!
<#else>Hi!
</#if>
设置默认值

如果没有默认值,FreeMark会报错

${varname!default_value}
日期格式化
${date?string("yyyy-MM-dd HH:mm:ss")}

用法有很多,这里没法一一列举出来。只能列举出比较常用的。这些东西没必要去记住它,可以在需要的时候去查一下文档即可。

总结

本文介绍了SpringBoot整合FreeMark的方法。虽然现在主流是前后端分离开发和部署,但是在某些时候,或者说一些小项目中,还是有可能用到后端渲染页面的情况的。

转载于:https://www.cnblogs.com/happy4java/p/11206521.html

「快学springboot」SpringBoot整合freeMark模板引擎相关推荐

  1. 「快学springboot」SpringBoot多环境配置文件

    [原创] Happyjava 2019-06-18 07:01:00 往期文章 「快学Docker」Docker简介.安装和Hello World实现 「快学springboot」使用springbo ...

  2. 「雕爷学编程」Arduino动手做(15)——手指侦测心跳模块

    37款传感器和模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的.鉴于本人手头积累了一些传感器与模块,依照实践出真知(动手试试)的理念,以学习和交流为目的,这里准备 ...

  3. 【Springboot】SpringBoot基础知识及整合Thymeleaf模板引擎

    文章目录 SpringBoot简介 SpringBoot是什么 为什么要学习SpringBoot SpringBoot的优势 学习SpringBoot前要具备的基础 创建第一个SpringBoot项目 ...

  4. SpringBoot整合Thymeleaf模板引擎以及静态资源的访问

    SpringBoot整合Thymeleaf模板引擎静态资源访问的配置 Thymeleaf是一个现代服务器端Java模板引擎,适用于Web和独立环境,能够处理HTML,XML,JavaScript,CS ...

  5. python的输入函数是什么意思_「小白学Python」像风一样自由的输入:input( )函数详解...

    从使用Python写出第一行代码:print("Hello Python")时,我就怀揣着一个梦想,有一天,我一定要输入自己想要的内容.今天这个梦想终于实现了,多亏了input( ...

  6. python中字符型用什么表示_「小白学Python」Python中最常用的数据类型:字符串

    Python中有6个标准数据类型,分别是:Number(数值).String(字符串).List(列表).Tuple(元组).Sets(集合).Dictionary(字典). 其中,String(字符 ...

  7. CodeIgniter_2.2.0整合smarty模板引擎

    CodeIgniter_2.2.0整合smarty模板引擎 转载于:https://blog.51cto.com/murongwenxian/1605204

  8. Spring Boot整合Thymeleaf模板引擎

    转载自 Spring Boot整合Thymeleaf模板引擎 什么是Thymeleaf Thymeleaf是一款用于渲染XML.XHTML.HTML5内容的模板引擎.类似Velocity,FreeMa ...

  9. springboot做网站_SpringBoot项目实战(3):整合Freemark模板

    SpringBoot 自动继承了thymeleaf.freemark.velocity三种模板技术,因为我项目中需要用来Freemark模板进行生成Java类所以,就整合了SB+F. 另外有一点说明下 ...

最新文章

  1. gomarket服务器位置,ANZHI安智市场 Gomarket
  2. python标准库的基本使用
  3. zhuan zai suffix tree
  4. 深度学习之基于卷积神经网络实现服装图像识别
  5. 怎样查看cudnn版本_tensorflowGPU版本踩坑记录
  6. 高效分页的SQL技巧(以Oracle为例)
  7. Duilib自定义控件
  8. iframe中的右键 禁止_网站排名优化中必须要注意的事项
  9. tomcat无法正常shutdown
  10. git fatal: Authentication failed for ‘https://gitee.com
  11. python卸载包-Python 包 卸载方法
  12. python的repl模式_ESP32学习4-烧录MicroPython并使用REPL
  13. 基于arduino的灯光控制(easy版)
  14. android开发工具类之获得WIFI IP地址或者手机网络IP
  15. C#实现Gauss完全主元消去法
  16. 运维自我提升:怎样做好企业 IT 运维工作
  17. android 模拟器 驱动,【新手指导】模拟器报错列表及解决办法!
  18. HDU 5238 Calculator(中国剩余定理+线段树)
  19. (笔记整理)公司vue平台用到redis,相关概念与登录(11)
  20. 3D游戏设计-牧师与魔鬼_动作分离版

热门文章

  1. 浅谈矩阵分解在推荐系统中的应用
  2. Activiti Workflow HelloWorld 示例与测试环境搭建
  3. mysql启动日志指令_简单整理MySQL的日志操作命令
  4. servlet和action中获取URL中的汉字(解决URL中汉字为乱码的问题) .
  5. data spring 指定时区_今天的工作内容:Spring Boot 2.X整合Spring-cache
  6. 转载:AD的授权还原和主还原:深入浅出Active Directory系列(六)
  7. HTML里face作用,html5 – @ font-face在子文件夹中的字体时不起作用
  8. php 5.5 sqlserver,thinkphp5 连接sqlserver windows
  9. mysqli_connect参数的写法以及如何设置特定端口
  10. 游戏开发经验分享:我所理解的打击感