JSP与FreeMarker的区别

18

JSP提供的灵活性是否比FreeMarker更多,还是反过来?我的后端涉及Servlets。在什么情况下使用哪个?


请参见http://stackoverflow.com/questions/3447368/freemarker-or-jsp - Raedwald
4个回答

12

JSP会让你在视图层做更多的事情,因此可以说它更加灵活。但是有些事情你可能不应该做,这也可以说是FreeMarker的好处之一。使用FreeMarker可以让你更好地控制视图层所能做的事情,并强制实现更好的关注点分离。

这里没有真正的正确答案。从技术上讲,你可以使用任何一个来完成UI的几乎所有事情。如果没有更多关于你的项目的细节,很难给出建议。唯一可以说的是,你应该使用MVC模式,这可以使用任何一种方式来实现。


谢谢你的回答。我有使用 Servlets 的旧代码,并不是完全基于 MVC 架构的。我想将其转换为 MVC 架构。唯一阻碍我的是 Freemarker 有非常严格的语法。当前代码库正在使用 Freemarker 模板。我正在尝试将它们移动到 JSP,但我不确定这是否是一个好主意。请让我知道您的评论。 - rl99

11
我的答案肯定是选择Freemarker。原因是它在使用上非常灵活。
  1. 它不需要servlet容器,因此您也可以呈现电子邮件或任何基于文本的内容。
  2. 在Web应用程序中,它可以创建Web模块作为jar。Freemarker模板可以轻松从类路径加载(此外,Spring可以使用mvc:resources标记从类路径加载css / js-静态内容,并扫描控制器)。因此,Web模块可以包含自己的模板,静态数据和控制器。
  3. Freemarker在创建自定义标签方面更加强大,而JSP则让人感到痛苦。此外,自定义标签允许回调参数化的body,这在JSP中很难做到。
  4. 从Freemarker中,您仍然可以毫无问题地使用每个可用的JSP标签库 :)

1

有几个类库已经存在于JSP中,例如JSTL、DisplayTag等,如果您选择使用JSP,可以使用它们。但是在Freemarker中,这样的类库就不是很多了。

JSP专门为Web页面定制,而FTL是一种更通用的模板语言——它可以用于生成HTML、纯文本、电子邮件等。

要选择一个,必须考虑您拥有哪些工具。所有优秀的Java IDE都具有出色的JSP支持,而FTL支持可能会好坏参半。


3
你可以将任何标签库导入到Freemarker中。 - skipy

1

我相信你现在已经选择了其中一种选项。无论如何,评论对其他人可能仍然有用。正如WhiteFang所写的,使用MVC是唯一值得推荐的建议。

如果你的应用程序是基于Web的,JSP很可能是更好的选择,因为它更为人所知,并且可以使用JSTL编写非常干净的演示代码(只需确保不要混合脚本...所有数据都应在servlet中进行准备,并作为属性传递给JSP)。选择JSP可以通过使管理人员能够轻松地插入其他开发人员来提高项目价值,以便更快地交付等。

无论如何,既然您已经在FreeMarker上使用它,如果模板已经看起来不错,我不会更改它。最好等待业务原因需要切换时再进行更改。无论应用程序设计得多么好,最终都需要部分或甚至完全重新架构。只要您进行模块化编程,并将转换保持在隔离的模块中,您随时可以轻松地切换到任何您认为合适的技术(可能是一个比FreeMarker或JSP更好的新技术 :) )。

我通常在非Web应用程序中使用FreeMarker。或者在Web应用程序中,例如当需要生成通知电子邮件时,我需要使用FreeMarker,这些电子邮件不需要启用Web。否则,到目前为止,JSP效果很好。

斯特夫。


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