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的依赖包
 

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

  2.2 在springboot中添加freemarker配置

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


      

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


  

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

3. freemarker常用语法


  3.1 取值

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
</head>
<body>
<h1>Hello ${userName},Welcome to Freemarker!!!</h1>
</body>
</html>


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

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

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

代码案例:

<h2>1.exists用在逻辑判断</h2>
<#if userName?exists>
    ${userName}
<#else>
    不存在
</#if>
<h2>2.if_exists用来打印东西</h2>
${userName?if_exists}
<h2>3.??是判断对象是否为空</h2>
<#if userName??>
    ${userName}
</#if>

   3.2 条件
 

<#if sex=="女">
    今天是个好日子
<#elseif sex=="男">
    男
<#else>
    保密
</#if>

   3.3 循环


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

   3.4 include


    <#include "/header.ftl" >

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

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

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

 

4. yml的介绍

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

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

server:
  port: 8080
  servlet:
    context-path: /springboot02
spring:
    datasource:
      #1.JDBC
      type: com.zaxxer.hikari.HikariDataSource
      driver-class-name: com.mysql.jdbc.Driver
      url: jdbc:mysql://localhost:3306/t277?useUnicode=true&characterEncoding=utf8&useSSL=false
      username: root
      password: 1234
    freemarker:
      #指定HttpServletRequest的属性是否可以覆盖controller的model的同名项
      allow-request-override: false
      #req访问request
      request-context-attribute: req
      #后缀名freemarker默认后缀为.ftl,当然你也可以改成自己习惯的.html
      suffix: .ftl
      #设置响应的内容类型
      content-type: text/html;charset=utf-8
      #是否允许mvc使用freemarker
      enabled: true
      #是否开启template caching
      cache: false
      #设定模板的加载路径,多个以逗号分隔,默认: [“classpath:/templates/”]
      template-loader-path: classpath:/templates/
      #设定Template的编码
      charset: UTF-8
    # 设置静态文件路径,js,css等
    mvc:
      static-path-pattern: /static/**
logging:
  level:
    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分离

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值