使用VelocityViewServlet时,使用Velocity属性的最佳做法是什么

时间:2016-02-09 16:37:52

标签: java servlets web velocity web.xml

我想在Web应用程序中使用Velocity,以便将数据库中的动态内容添加到html文件中。我已使用VelocityViewServlet成功配置了Velocity。我的web.xml看起来像这样:

<servlet>
    <servlet-name>velocity</servlet-name>
    <servlet-class>org.apache.velocity.tools.view.VelocityViewServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>velocity</servlet-name>
    <url-pattern>*.html</url-pattern>
</servlet-mapping>

我想以这种方式加载一些内容:

#set( $pageId = "6655231")
$data.getContent($pageId) 

我应该在哪里设置属性$data

我应该在扩展VelocityViewServlet的自己的HttpServlet实现中设置属性吗?

或者还有其他方式吗?

1 个答案:

答案 0 :(得分:1)

使用Velocity View Tools时,应该有一个名为WEB-INF/tools.xml的{​​{3}},它定义了与三个嵌套作用域应用程序,会话和请求相对应的三个工具箱。这些工具箱也可以包含静态数据。

例如,如果您的数据访问者对象使用的是org.mine.Catalog类,那么您的tools.xml文件可能是:

<?xml version="1.0"?>
<tools>
  <toolbox scope="application">
     <tool key="date" class="org.apache.velocity.tools.generic.ComparisonDateTool" locale="en_US"/>
    <tool key="data" class="org.mine.Catalog"/>
  </toolbox>
  <toolbox scope="session">
    <property name="create-session" value="true" type="boolean"/>
    <tool key="map" class="java.util.HashMap"/>
  </toolbox>
  <toolbox scope="request">
    <tool key="custom" class="org.mine.CustomTool" randomProperty="whatever"/>
  </toolbox>
  <data type="string" key="deployment" value="prod"/>
</tools>

默认情况下,configuration file已包含在工具箱中,因此您只需要声明自定义工具或带有自定义属性的标准工具。

要从数据库添加动态内容,您可以查看standard tools工具。你也可以Velosurf,这很简单:基本上你的工具是一个普通的旧java对象,有一个空构造函数,需要getter和setter,以及一个接收几个环境属性的void configure(Map config)方法。