• 「快学springboot」SpringBoot整合freeMark模板引擎


    前言

    虽然现在流行前后端分离开发和部署,但是有时候还是需要用到服务端渲染页面的。比如:需要考虑到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的方法。虽然现在主流是前后端分离开发和部署,但是在某些时候,或者说一些小项目中,还是有可能用到后端渲染页面的情况的。

  • 相关阅读:
    本博客地址迁移,将不再更新内容
    图像处理笔记(一):提升图像对比度的两种基本方法
    字符集乱码问题:ISO-8859-1和GBK
    网易新闻优化APK下载链接
    仿Android网易新闻客户端,并增加水平图片滑动,改进阅读体验
    volley开源库乱码问题总结(持续更新)
    Android获取联系人示例,从数据库加载,带首字母标签
    Android 图像压缩,和LRU算法使用的推荐链接
    抛砖引玉:关于Android的ListView中CheckBox错乱
    Android图片适配,drawable文件夹,低分辨率图片是否必要
  • 原文地址:https://www.cnblogs.com/happy4java/p/11206521.html
Copyright © 2020-2023  润新知