Spring JSP MVC和Thymeleaf MVC的区别

57

Spring JSP MVC和Thymeleaf MVC有什么区别?哪种是Spring Web设计的最佳选择?

2个回答

47

它们都是Spring MVC的视图层。首先,最基本的区别在于文件扩展名(.jsp.html)。

评论中的Branislav是正确的,JSP不是一个模板引擎。它被编译成servlet,然后servlet提供Web内容。另一方面,Thymeleaf是一个模板引擎,它接收HTML文件,解析并生成Web内容。

  • JSP视图相比,Thymeleaf更像是一个类似HTML的视图。

  • 我们可以在thymeleaf中使用原型代码: http://www.dineshonjava.com/2015/01/thymeleaf-vs-jsp-spring-mvc-view-layer.html#.WEkLzLKLTig

  • 由于它更像是HTML代码,thymeleaf代码更易读(当然你可以破坏它并创建难以理解的代码,但最终与.jsp文件相比,它更容易阅读)

  • 标准方言(表达式语言)比JSP表达式语言更强大

  • 如果我们把所有这些放到一个极端,thymeleaf在这里是比较慢的。

我建议您查看此文档:http://www.thymeleaf.org/doc/articles/thvsjsp.html


Thymeleaf是一种自然的模板引擎。我们可以在不必编译、构建和运行的情况下实时预览更改。 - Sudip Bhandari
1
JSP的问题在于它允许您将Java代码与HTML混合在一起,这使得代码难以阅读。但是,通过定义标签,您永远不需要这样做,而且实际上这样做是不好的实践。我认为,一个正确编写的JSP比Thymeleaf模板更容易阅读和理解。 - NickJ
2
关于性能方面呢?这两个框架中哪一个更快,它们各自需要多少内存? - Ivan Zelenskyy
@stephanf 那么,哪一个更快?JSP? - parsecer
在我的经验中,@parsecer JSP比其他方式快得多,而且没有EL和标签库更好,因为EL是解释文本,而标签库会给生成的代码添加很多无用信息。 - stephan f
显示剩余2条评论

11

Thymeleaf是一个模板解析器,它处理模板并生成纯HTML。

在我看来,Thymeleaf更好,因为它有良好的基本原则,并利用浏览器的自然行为。

JSP使得HTML很难阅读,它变成了一种奇怪的HTML和Java代码混合体,这在设计师和开发者之间的沟通中会产生很多问题。

Thymeleaf保留HTML,只添加直观且非常表达力的标签。它使您能够在离线模式下工作,并且与Spring完美配合,我绝对建议使用它而不是JSP。

http://www.dineshonjava.com/2015/01/thymeleaf-vs-jsp-spring-mvc-view-layer.html?m=1


16
答案不正确,且基于个人观点。JSP 不是一个模板引擎。它被编译为 servlet,然后 servlet 用于提供 web 内容。另一方面,Thymeleaf 是一个模板引擎,它接收 HTML 文件,解析并生成要提供的 web 内容。如果在 Thymeleaf 中加入大量逻辑,很容易创建难以阅读的代码。这也会导致它成为最慢的模板引擎之一。因此,SO 对于可能产生基于个人观点和经验的答案的问题有严格的关闭规定。 - Branislav Lazic
2
我接受你们对JSP的批评,这是事实,同时Thymeleaf引擎的速度也是如此。但是,我如何给出不基于个人观点和经验的答案呢? - Zildyan
我仍然坚持我的观点,特别是在与设计师合作的迭代开发中,这样做更好。 - Zildyan
@Zildyan 谢谢你的回答。 - Zafer Yilmaz
@Zildyan 设计师从不做HTML,所以这个观点是无关紧要的。 - Vadim Ferderer
@BranislavLazic 1999年,Sun Microsystems发布了Java Server Pages(JSP),这是Java Web应用程序的模板引擎。(https://hackernoon.com/java-template-engines-ef84cb1025a4) - Somebody

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接