何时使用Velocity?

时间:2012-09-20 06:58:39

标签: java jsp web-applications velocity

我最近阅读了Velocity。我还阅读了教程here 但我无法理解使用Velocity有什么好处。据我所知,我们可以使用JSP标签做同样的事情。
那么当一个人在他的项目中引入Velocity并获得什么?

3 个答案:

答案 0 :(得分:2)

只要您需要某个模板,就可以使用它。例如,您的应用程序可能会向客户发送文本电子邮件,并且必须按照以下方式自定义电子邮件:

  

亲爱的$ customerName

     

我们明天宣布明天请注明以下帐户:

   #foreach ($accounts in $account)

使用Velocity,您可以创建一些电子邮件模板,而不是为每个客户自定义其内容。您不必将其用作JSP的替代品。

答案 1 :(得分:1)

假设您要创建一个动态文件,比如一个HTML文件。 您可以在代码中编写文件,也可以使用

等标记
<body>
"<div>User:" + users.getUserName() + "</div>"
</body>

或者您可以使用Velocity创建模板文件

<body>
<div>User: #user.getUserName()</div>
</body>

执行此操作的好处是您可以从代码中分离文件,即您可以在不重新编译代码的情况下对其进行修改。

答案 2 :(得分:0)

Velocity是一个模板引擎,JSP是一种脚本引擎。差异是相当大的,虽然乍一看似乎他们做同样的事情,你可以滥用Velocity真正把它变成脚本引擎。恕我直言的两个主要区别是:

  • Velocity更安全:默认情况下,它只允许您调用您在上下文中专门放置的对象的公共方法; JSP允许您执行几乎任何Java代码
  • Velocity更容易理解:它的语法简单,语法元素很少; JSP在其scriptlet标记内加上完整的Java语法,加上&lt;%wrappers%&gt;

所以,在所有情况下,没有一个人明显优于另一个,你必须自己决定何时应该使用每一个,是的,它们可以在同一个项目中用于不同目的。

IMHO Velocity在以下情况下效果最佳:

  • 在上下文中传递一些变量的模板的简单插值,例如电子邮件模板
  • 我认为Velocity是实现MVC架构中非常干净的 View 部分的更好选择,因为在JSP中混合一些代码更有诱惑力( Controller )在JSP页面内部,最后在JSP页面中混合视图和控制器。
    • 另一个优点是非开发人员可以理解其语法,因此界面设计人员和开发人员都可以处理相同的文件
  • 它可以作为一个安全的脚本引擎,可用于运行用户生成的代码。