java - 使用 VelocityViewServlet 时放置 Velocity 属性的最佳实践是什么

标签 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 实现中设置该属性吗?

或者还有其他方法吗?

最佳答案

使用 Velocity View Tools 时,应该有 configuration file名为WEB-INF/tools.xml,它定义了与三个嵌套范围应用程序、 session 和请求相对应的三个工具箱。这些工具箱还可以包含静态数据。

例如,如果您的数据访问器对象使用类 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>

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

要从数据库添加动态内容,您可以检查Velosurf工具。您还可以write your custom tool ,这非常简单:基本上您的工具是一个普通的旧 java 对象,带有一个空的构造函数、所需的 getter 和 setter,以及一个接收多个环境属性的 void configure(Map config) 方法。

关于java - 使用 VelocityViewServlet 时放置 Velocity 属性的最佳实践是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35297348/

相关文章:

javascript - 起始页面加载时的 php + jquery 事件

java - 如何减去两个 XmlGregorianCalendar 对象来创建一个 Duration 对象?

java - TextWatcher.onTextChanged() 如何处理预测文本?

java - 要读取的文件的位置?

java - 多个列表或列表和 getSublist() (Java)

java - 如何将信息从 servlet 传递到 JSP 并返回?

java - 由于 cookie-config,Weblogic 中的 web.xml 验证抛出错误

Java 1.3 Servlet getParameter 用于作为 URL 的参数

python - django 应用程序中的每个 url 只呈现 home.html

c# - 从服务器更新 aspx 页面