SiteMesh如何结合Freemarker及velocity使用

SiteMesh是一个开源的Java Web页面布局和装饰框架,它可以帮助我们将一个页面的布局和内容分离开来,以便我们可以轻松更改网页的样式和结构。同时,SiteMesh可以与多个模板引擎一起使用,Freemarker和Velocity是SiteMesh集成中广泛使用的两种模板引擎。

下面我们将介绍SiteMesh如何结合Freemarker及velocity使用。

使用Freemarker

首先我们需要在项目中集成SiteMesh和Freemarker,这里简单介绍如何以Maven为例集成SiteMesh和Freemarker:

<dependency>
    <groupId>com.opensymphony.sitemesh</groupId>
    <artifactId>sitemesh</artifactId>
    <version>3.0-alpha-2</version>
</dependency>

<dependency>
    <groupId>org.freemarker</groupId>
    <artifactId>freemarker</artifactId>
    <version>2.3.31</version>
</dependency>

然后我们需要在Web.xml中配置SiteMesh过滤器和Freemarker的Servlet:

<filter>
  <filter-name>sitemesh</filter-name>
  <filter-class>com.opensymphony.sitemesh.webapp.SiteMeshFilter</filter-class>
  <init-param>
    <param-name>configFile</param-name>
    <param-value>/WEB-INF/sitemesh.xml</param-value>
  </init-param>
</filter>
<filter-mapping>
  <filter-name>sitemesh</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>

<servlet>
  <servlet-name>freemarker</servlet-name>
  <servlet-class>freemarker.ext.servlet.FreemarkerServlet</servlet-class>
  <init-param>
    <param-name>TemplatePath</param-name>
    <param-value>/WEB-INF/views/</param-value>
  </init-param>
</servlet>
<servlet-mapping>
  <servlet-name>freemarker</servlet-name>
  <url-pattern>*.html</url-pattern>
</servlet-mapping>

接下来我们可以在模板文件中使用SiteMesh的标签,如下所示:

<decorator:body>
  <div class="content">
    <h1>Hello, world!</h1>
  </div>
</decorator:body>

在Freemarker模板文件中,可以使用<@decorator>指令将SiteMesh装饰器应用于模板的主体内容。你可以在Freemarker中使用SiteMesh的标签,如下所示:

<#assign decorator="/WEB-INF/decorators/decorator.html" />
<@decorator>
  <#nested />
</@decorator>

这里的<#assign>指令将装饰器指定为变量并分配给装饰器指令。<@decorator>指令应用给定的装饰器,并在<#nested/>中包含模板主体内容。

使用Velocity

在Maven中集成SiteMesh和Velocity:

<dependency>
    <groupId>com.opensymphony.sitemesh</groupId>
    <artifactId>sitemesh</artifactId>
    <version>3.0-alpha-2</version>
</dependency>

<dependency>
    <groupId>org.apache.velocity</groupId>
    <artifactId>velocity-engine-core</artifactId>
    <version>2.2</version>
</dependency>

在web.xml中配置SiteMesh和Velocity:

<filter>
  <filter-name>sitemesh</filter-name>
  <filter-class>com.opensymphony.sitemesh.webapp.SiteMeshFilter</filter-class>
  <init-param>
    <param-name>configFile</param-name>
    <param-value>/WEB-INF/sitemesh.xml</param-value>
  </init-param>
</filter>
<filter-mapping>
  <filter-name>sitemesh</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>

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

在Velocity模板文件中,我们可以使用SiteMesh的标签嵌套在具体的模板中,如下所示:

#set ($decorator = "/WEB-INF/decorator/decorator.vm")
#decorator($decorator)
    <div class="content">
      <h1>Hello, world!</h1>
    </div>
#end

set指令将装饰器指定为变量,并使用#decorator指令应用给定的装饰器。我们可以在#decorator中指定装饰器模板文件的路径,然后在模板主体中包含我们要显示的内容。

以上是SiteMesh如何结合Freemarker及Velocity使用的攻略,通过上述示例可以快速了解SiteMesh集成模板引擎的方法。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SiteMesh如何结合Freemarker及velocity使用 - Python技术站

(0)
上一篇 2023年6月16日
下一篇 2023年6月16日

相关文章

  • Mac环境下配置tomcat的步骤详解

    以下是 Mac 环境下配置 Tomcat 的完整攻略步骤: 一、下载 Tomcat 首先,进入 Apache 官网,下载适合你操作系统的 Tomcat 版本。下载地址:http://tomcat.apache.org/download 二、解压 Tomcat 下载完成后,将文件解压到你希望的目录。在这里以解压到 “/Applications/” 目录下为例 …

    Java 2023年5月20日
    00
  • 解决mybatis plus 驼峰式命名规则问题

    当我们使用 MyBatis-Plus 进行开发时,如果数据库中的表和列采用了下划线命名法,则需要搭配驼峰式命名法进行开发,这个过程中就需要解决 MyBatis-Plus 驼峰式命名规则问题。 以下是解决 MyBatis-Plus 驼峰式命名规则问题的完整攻略: 1. 配置文件中开启驼峰命名法 在 MyBatis-Plus 中,我们可以通过在配置文件中开启驼峰…

    Java 2023年5月20日
    00
  • Java与C++实现相同的MD5加密算法简单实例

    Java与C++实现相同的MD5加密算法简单实例 简介 MD5加密算法是一种常见的数据加密算法,通常用于安全性要求比较高的场景中,比如密码加密,数据传输等。Java和C++都有现成的MD5加密算法库,本文将介绍如何通过两种语言来实现相同的MD5加密算法。 Java实现 在Java中,可以通过Java.security包中的MessageDigest类来实现M…

    Java 2023年5月19日
    00
  • 详解Java语言中一个字符占几个字节?

    当谈到Java字符的字节数时,需要考虑字符集的影响。Java中默认的字符集是UTF-16,而不是8位的ASCII字符集。 在Java中,一个字符占用2个字节(16位),因为Java中的char数据类型是16位宽的。这意味着,无论字符实际需要多少字节存储,Java都会分配16位空间来存储它。注意:这不仅适用于Unicode字符,也适用于ASCII字符。 下面是…

    Java 2023年5月20日
    00
  • SpringBoot SSMP 整合案例分享

    SpringBoot SSMP整合案例分享 SpringBoot是一个快速开发框架,SSM是一个经典的JavaWeb开发框架,它们的整合可以让我们更加高效地进行JavaWeb开发。本文将分享一个SpringBoot整合SSM的案例,包括如何整合MyBatis和SpringMVC,并提供两个示例说明。 1. 创建SpringBoot项目 首先,我们需要创建一个…

    Java 2023年5月18日
    00
  • 基于restTemplate遇到的编码问题及解决

    接下来我会详细讲解“基于restTemplate遇到的编码问题及解决”的完整攻略,并提供两条示例。 问题描述 在使用RestTemplate发送http请求时,我们会遇到编码问题。接口返回的中文乱码,而传入参数的中文又正常,这是为什么呢? 主要原因是http协议默认使用的是ISO-8859-1编码,而中文使用的编码格式是UTF-8,即发送的请求和接收的响应使…

    Java 2023年5月20日
    00
  • asp.net实现的MVC跨数据库多表联合动态条件查询功能示例

    ASP.NET 实现的 MVC 跨数据库多表联合动态条件查询功能是一个常见的需求,可以通过以下的步骤来实现。 步骤一:建立数据库 首先需要在数据库中建立相应的表,以便进行多表联合查询。在本次示例中,我们将创建2个表,分别是 “users” 和 “orders” 表。其中 “users” 表中包含以下字段:id, name, email, password,”…

    Java 2023年5月19日
    00
  • Java笔记(16) Collection集合–>Set集合–>HashSet

    1. Set接口基本介绍 Set是无序集合(添加和取出的顺序不一致,但取出的顺序是固定的),没有索引 不允许重复元素,所以最多包含一个null JDK API中Set接口的实现类有: Abstract, ConcurrentHashMap.KeySetView, ConcurrentSkipListSet, CopyOnWriteArraySet, Enum…

    Java 2023年4月17日
    00
合作推广
合作推广
分享本页
返回顶部