码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • freemarker+yml介绍 以及freemarker与JSP的区别


    目录

    1. freemarker介绍 

    2. freemarker使用步骤

      2.1 在pom.xml引入freeMarker的依赖包

      2.2 在springboot中添加freemarker配置

      2.3 编写模板文件*.ftl(当做jsp使用即可)

    ​编辑  

      2.4 访问控制器后进行页面跳转      

    3. freemarker常用语法

      3.1 取值

       3.2 条件

       3.3 循环

       3.4 include

       3.5 局部变量(assign)/全局变量(global)

    4. yml的介绍

    5."freemarker"和"jsp"的区别和联系有:

    一、jsp

    优点:

    1、功能强大,可以写java代码

    2、支持jsp标签(jsp tag)

    3、支持表达式语言(el)

    4、官方标准,用户群广,丰富的第三方jsp标签库

    5、性能良好。jsp编译成class文件执行,有很好的性能表现

    缺点:

    jsp没有明显缺点,非要挑点骨头那就是,由于可以编写java代码,如使用不当容易破坏mvc结构。

    二、freemarker

    优点:

    1、不能编写java代码,可以实现严格的mvc分离

    2、性能非常不错

    3、对jsp标签支持良好

    4、内置大量常用功能,使用非常方便

    5、宏定义(类似jsp标签)非常方便

    6、使用表达式语言

    缺点:

    1、不是官方标准

    2、用户群体和第三方标签库没有jsp多

    选择freemarker的原因:

    1、性能。velocity应该是最好的,其次是jsp,普通的页面freemarker性能最差(虽然只是几毫秒到十几毫秒的差距)。但是在复杂页面上(包含大量判断、日期金额格式化)的页面上,freemarker的性能比使用tag和el的jsp好。

    2、宏定义比jsp tag方便

    3、内置大量常用功能。比如html过滤,日期金额格式化等等,使用非常方便

    4、支持jsp标签

    5、可以实现严格的mvc分离


    1. freemarker介绍 

    FreeMarker是一款模板引擎: 即一种基于模板和要改变的数据, 并用来生成输出文本(HTML网页、电子邮件、配置文件、源代码等)的通用工具。 它不是面向最终用户的,而是一个Java类库,是一款程序员可以嵌入他们所开发产品的组件。

    FreeMarker是免费的,基于Apache许可证2.0版本发布。其模板编写为FreeMarker Template Language(FTL),属于简单、专用的语言。需要准备数据在真实编程语言中来显示,比如数据库查询和业务运算, 之后模板显示已经准备好的数据。在模板中,主要用于如何展现数据, 而在模板之外注意于要展示什么数据


       注1:springboot中支持的两种模板技术
            thymeleaf(默认)/freemarker

          


    2. freemarker使用步骤


      2.1 在pom.xml引入freeMarker的依赖包
     

    1.    
    2.         <groupId>org.springframework.bootgroupId>
    3.         <artifactId>spring-boot-starter-freemarkerartifactId>
    4.      

      2.2 在springboot中添加freemarker配置

    1. spring: 
    2.       freemarker:
    3.         #指定HttpServletRequest的属性是否可以覆盖controller的model的同名项
    4.         allow-request-override: false
    5.     #req访问request
    6.         request-context-attribute: req
    7.     #后缀名freemarker默认后缀为.ftl,当然你也可以改成自己习惯的.html
    8.         suffix: .ftl
    9.     #设置响应的内容类型
    10.         content-type: text/html;charset=utf-8
    11.     #是否允许mvc使用freemarker
    12.         enabled: true
    13.     #是否开启template caching
    14.         cache: false
    15.     #设定模板的加载路径,多个以逗号分隔,默认: [“classpath:/templates/”]
    16.         template-loader-path: classpath:/templates/
    17.     #设定Template的编码
    18.         charset: UTF-8
    19.       # 设置静态文件路径,js,css等
    20.       mvc:
    21.     static-path-pattern: /static/**


          

      2.3 编写模板文件*.ftl(当做jsp使用即可)


      

      2.4 访问控制器后进行页面跳转
          

    3. freemarker常用语法


      3.1 取值

    1. html>
    2. <html lang="en">
    3. <head>
    4. <meta charset="UTF-8">
    5. <title>title>
    6. head>
    7. <body>
    8. <h1>Hello ${userName},Welcome to Freemarker!!!h1>
    9. body>
    10. html>


        注1:freemarker如果取值为空,是会报错, 所以要对可能为空的值要进行处理, 方案有两种:

       1. 提供默认值
           ${name!}或${name!'未知'}  !后面就是默认值
        2. 对null值先进行判断
               
               1)exists用在逻辑判断;
            <#if name?exists>
            ${name}
            
     

               2)if_exists用来打印东西
               ${name?if_exists}
      
     
               3)??是判断对象是否为空
           <#if name??>
            ${name}
          

    代码案例:

    1. 1.exists用在逻辑判断

    2. <#if userName?exists>
    3. ${userName}
    4. <#else>
    5. 不存在
    6. if>
    7. <h2>2.if_exists用来打印东西h2>
    8. ${userName?if_exists}
    9. 3.??是判断对象是否为空

    10. <#if userName??>
    11. ${userName}
    12. if>

       3.2 条件
     

    1. <#if sex=="女">
    2. 今天是个好日子
    3. <#elseif sex=="男">
    4. 男
    5. <#else>
    6. 保密
    7. if>

       3.3 循环


            <#list friends as item>  
            姓名:${item.name} , 年龄${item.age}  
        

       3.4 include


        <#include "/header.ftl" >

       3.5 局部变量(assign)/全局变量(global)

            <#assign ctx>
            ${springMacroRequestContext.contextPath}
           
         
            <#global ctx>
            ...
           

      注:
         1)${springMacroRequestContext.contextPath}:SpringBoot中获取项目名
         2) 不推荐使用全局变量。即便它们属于不同的命名空间, 全局变量也被所有模板共享,因为它们是被 import进来的。

     

    4. yml的介绍

       YAML(Yet Another Markup Language)一种基于Unicode容易阅读,容易和脚本语言交互的,用来表达资料序列的编程语言
       基本语法
       1 不同“等级” 用冒号隔开
       2 次等级的前面是空格,不能使用制表符(tab)
       3 冒号之后如果有值,那么冒号和值之间至少有一个空格,不能紧贴着  

    下面这个是我的yml文件的配置:

    1. server:
    2. port: 8080
    3. servlet:
    4. context-path: /springboot02
    5. spring:
    6. datasource:
    7. #1.JDBC
    8. type: com.zaxxer.hikari.HikariDataSource
    9. driver-class-name: com.mysql.jdbc.Driver
    10. url: jdbc:mysql://localhost:3306/t277?useUnicode=true&characterEncoding=utf8&useSSL=false
    11. username: root
    12. password: 1234
    13. freemarker:
    14. #指定HttpServletRequest的属性是否可以覆盖controller的model的同名项
    15. allow-request-override: false
    16. #req访问request
    17. request-context-attribute: req
    18. #后缀名freemarker默认后缀为.ftl,当然你也可以改成自己习惯的.html
    19. suffix: .ftl
    20. #设置响应的内容类型
    21. content-type: text/html;charset=utf-8
    22. #是否允许mvc使用freemarker
    23. enabled: true
    24. #是否开启template caching
    25. cache: false
    26. #设定模板的加载路径,多个以逗号分隔,默认: [“classpath:/templates/”]
    27. template-loader-path: classpath:/templates/
    28. #设定Template的编码
    29. charset: UTF-8
    30. # 设置静态文件路径,js,css等
    31. mvc:
    32. static-path-pattern: /static/**
    33. logging:
    34. level:
    35. com.zking.spbootmp. mapper : debug

    5."freemarker"和"jsp"的区别和联系有:

    一、jsp

    优点:

    1、功能强大,可以写java代码

    2、支持jsp标签(jsp tag)

    3、支持表达式语言(el)

    4、官方标准,用户群广,丰富的第三方jsp标签库

    5、性能良好。jsp编译成class文件执行,有很好的性能表现

    缺点:

    jsp没有明显缺点,非要挑点骨头那就是,由于可以编写java代码,如使用不当容易破坏mvc结构。

    二、freemarker

    优点:

    1、不能编写java代码,可以实现严格的mvc分离

    2、性能非常不错

    3、对jsp标签支持良好

    4、内置大量常用功能,使用非常方便

    5、宏定义(类似jsp标签)非常方便

    6、使用表达式语言

    缺点:

    1、不是官方标准

    2、用户群体和第三方标签库没有jsp多

    选择freemarker的原因:

    1、性能。velocity应该是最好的,其次是jsp,普通的页面freemarker性能最差(虽然只是几毫秒到十几毫秒的差距)。但是在复杂页面上(包含大量判断、日期金额格式化)的页面上,freemarker的性能比使用tag和el的jsp好。

    2、宏定义比jsp tag方便

    3、内置大量常用功能。比如html过滤,日期金额格式化等等,使用非常方便

    4、支持jsp标签

    5、可以实现严格的mvc分离

  • 相关阅读:
    敲黑板|六大问题不搞清楚,一造将无法报名成功
    k8s--基础--22.1--storageclass--介绍
    unity-协程详解
    latex希腊字母表
    BUGKU-WEB cookies
    Spring Security6 用户身份认证
    LeetCode加油站(贪心算法/暴力,分析其时间和空间复杂度)
    AD软件中的pcbdoc、schdoc等类似一些文件的图标变成了白板解决办法
    vue项目created()被调用多次的坑
    SQL复杂查询-除法实现-做题理解
  • 原文地址:https://blog.csdn.net/m0_62019369/article/details/127877770
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号