直到运行Apache Velocity的示例代码
直到运行Apache Velocity的示例代码
我创建了一个环境,作为自己的备忘录,用于查看Velocity的行为,同时阅读官方网站。
※我只是为了确保Velocity可以运行而进行环境设置,如果有任何错误,请指正,我会非常感激。
必需品
-
- Tomcat 9(サーブレットコンテナ)
- Eclipse(統合開発環境)
源代码的全部文件
以下链接是通过下列步骤创建的源代码的Git仓库:
https://github.com/vicboss1002/velocity_sample
流程
-
- 安装Tomcat
-
- 将Tomcat配置为Eclipse的服务器
-
- 在Eclipse中创建一个Maven项目
-
- 使用Maven下载依赖库
-
- 在浏览器中显示Velocity模板文件
- 从Java传递变量到Velocity上下文并显示
安装Tomcat
将Tomcat设置为Eclipse的服务器。
使用Eclipse创建Maven项目。
使用Maven下载依赖库
- 在pom.xml文件中,指定以下依赖库。
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.0</version>
</dependency>
<dependency>
<groupId>org.apache.velocity.tools</groupId>
<artifactId>velocity-tools-generic</artifactId>
<version>3.0</version>
</dependency>
<dependency>
<groupId>org.apache.velocity.tools</groupId>
<artifactId>velocity-tools-view</artifactId>
<version>3.0</version>
</dependency>
<dependency>
<groupId>org.apache.velocity.tools</groupId>
<artifactId>velocity-tools-view-jsp</artifactId>
<version>3.0</version>
</dependency>
<dependency>
<groupId>com.republicate</groupId>
<artifactId>webapp-slf4j-logger</artifactId>
<version>1.3</version>
</dependency>
显示Velocity模板文件在浏览器中
- 根据此描述,我们将在web.xml中添加VelocityViewServlet的配置。
<!-- ログ出力の設定 -->
<context-param>
<param-name>webapp-slf4j-logger.level</param-name>
<param-value>debug</param-value>
</context-param>
<context-param>
<param-name>webapp-slf4j-logger.format</param-name>
<param-value>%logger [%level] [%ip] %message</param-value>
</context-param>
<servlet>
<servlet-name>velocity</servlet-name>
<servlet-class>
org.apache.velocity.tools.view.VelocityViewServlet
</servlet-class>
<!-- Unless you plan to put your tools.xml and velocity.properties under
different folders or give them different names, then these two init-params
are unnecessary. The VelocityViewServlet will automatically look for these
files in the following locations. -->
<init-param>
<param-name>org.apache.velocity.toolbox</param-name>
<param-value>/WEB-INF/tools.xml</param-value>
</init-param>
<init-param>
<param-name>org.apache.velocity.properties</param-name>
<param-value>/WEB-INF/velocity.properties</param-value>
</init-param>
</servlet>
<!-- Map *.vm files to Velocity -->
<servlet-mapping>
<servlet-name>velocity</servlet-name>
<url-pattern>*.vm</url-pattern>
</servlet-mapping>
#set($text = "Velocity World!")
Hello $text
在这个地方结束了。
确认了在sample.vm中编写的Velocity处理被执行并显示了内容。
使用Java将变量传递到Velocity上下文中并进行显示。
- 创建VelictyViewServlet的子类。
public class MyVelocityViewServlet extends VelocityViewServlet {
private static final long serialVersionUID = 1L;
protected Template handleRequest(HttpServletRequest request,
HttpServletResponse response,
Context ctx)
{
ctx.put("boolTrue", true);
ctx.put("boolFalse", false);
ctx.put("number", 1234);
ctx.put("string", "abcd");
ctx.put("list", Arrays.asList("a", "b", "c", "d"));
Map<String, String> map = new HashMap<>();
map.put("key1", "value1");
map.put("key2", "value2");
ctx.put("map", map);
return super.handleRequest(request, response, ctx);
}
}
- 将web.xml修改为以下形式,供VelictyViewServlet的子类使用。
<servlet>
<servlet-name>velocity</servlet-name>
<!-- <servlet-class> -->
<!-- org.apache.velocity.tools.view.VelocityViewServlet -->
<!-- </servlet-class> -->
<servlet-class>velocity_sample.MyVelocityViewServlet</servlet-class>
<!-- Unless you plan to put your tools.xml and velocity.properties under
different folders or give them different names, then these two init-params
are unnecessary. The VelocityViewServlet will automatically look for these
files in the following locations. -->
<init-param>
<param-name>org.apache.velocity.toolbox</param-name>
<param-value>/WEB-INF/tools.xml</param-value>
</init-param>
<init-param>
<param-name>org.apache.velocity.properties</param-name>
<param-value>/WEB-INF/velocity.properties</param-value>
</init-param>
</servlet>
- 创建一个调用由Java设置的变量的模板文件。
\${boolTrue}: ${boolTrue}<br/>
\${boolFalse}: ${boolFalse}<br/>
\${number}: ${number}<br/>
\${string}: ${string}<br/>
\${list}: ${list}<br/>
\${map}: ${map}<br/>