jsp,taglib,velocity,freemarker等都过时了吗?为什么使用thymeleaf?

在java领域,表现层技术主要有三bai种:jsp、freemarker、velocity,各有优缺点

jsp

jsp是大家最熟悉的技术

优点:

  • 功能强大,可以写java代码
  • 支持jsp标签(jsp tag)
  • 支持表达式语言(el)
  • 官方标准,用户群广,丰富的第三方jsp标签库
  • 性能良好。jsp编译成class文件执行,有很好的性能表现

缺点:

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

velocity

velocity是较早出现的用于代替jsp的模板语言

优点:

  • 不能编写java代码,可以实现严格的mvc分离
  • 性能良好,据说比jsp性能还要好些
  • 使用表达式语言,据说jsp的表达式语言就是学velocity的

缺点:

  • 不是官方标准
  • 用户群体和第三方标签库没有jsp多。
  • 对jsp标签支持不够好

freemarker

优点:

  • 不能编写java代码,可以实现严格的mvc分离
  • 性能非常不错
  • 对jsp标签支持良好
  • 内置大量常用功能,使用非常方便
  • 宏定义(类似jsp标签)非常方便
  • 使用表达式语言

缺点:

  • 不是官方标准
  • 用户群体和第三方标签库没有jsp多

选择freemarker的原因

  • 性能。velocity应该是最好的,其次是jsp,普通的页面freemarker性能最差(虽然只是几毫秒到十几毫秒的差距)。但是在复杂页面上(包含大量判断、日期金额格式化)的页面上,freemarker的性能比使用tag和el的jsp好。
  • 宏定义比jsp tag方便
  • 内置大量常用功能。比如html过滤,日期金额格式化等等,使用非常方便
  • 支持jsp标签
  • 可以实现严格的mvc分离

Spring / SpringBoot为什么推荐使用thymeleaf?

  • Spring 官方放弃 JSP 是暂时没有好的解决方案,因为 JSP 需要本地空间保存 JSP 引擎动态生成的 Servlet 类,而 Spring Boot 程序往往是以 Jar 的形式脱离容器独立运行,这就需要设置额外的地址去保存,会有安全上的问题,背离了 Spring Boot 最初设计的目的。
  • Thymeleaf 的生产力比较好。它的标签比较简单,最大的优点,它允许前端人员即时查看静态页面的效果,这是 FreeMaker 或者 Velocity 等其它模板做不到的功能。考虑到横向添加 SSR 服务很方便,所以效率并不是什么大问题。
  • thymeleaf的实现机制相较于其他模板引擎更加的优雅。由于各种绑定与控制采用属性的方式,可以使得模板不破坏html原有的语法结构,这样就获得了其他模板引擎没有的一个重要特性:thymeleaf定义的模板是可以被正常渲染的。这样你改模板和测试就会非常方便。
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

笼中小夜莺

嘿嘿嘿,请用金钱尽情地蹂躏我吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值