直到运行Apache Velocity的示例代码

直到运行Apache Velocity的示例代码

我创建了一个环境,作为自己的备忘录,用于查看Velocity的行为,同时阅读官方网站。
※我只是为了确保Velocity可以运行而进行环境设置,如果有任何错误,请指正,我会非常感激。

必需品

    • Tomcat 9(サーブレットコンテナ)

 

    Eclipse(統合開発環境)

源代码的全部文件

以下链接是通过下列步骤创建的源代码的Git仓库:
https://github.com/vicboss1002/velocity_sample

流程

    1. 安装Tomcat

 

    1. 将Tomcat配置为Eclipse的服务器

 

    1. 在Eclipse中创建一个Maven项目

 

    1. 使用Maven下载依赖库

 

    1. 在浏览器中显示Velocity模板文件

 

    从Java传递变量到Velocity上下文并显示

安装Tomcat

image.png

将Tomcat设置为Eclipse的服务器。

image.png

使用Eclipse创建Maven项目。

image.png

使用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>
image.png

显示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>
image.png
#set($text = "Velocity World!")
Hello $text
image.png

在这个地方结束了。
确认了在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/>
image.png
广告
将在 10 秒后关闭
bannerAds