SiteMesh如何结合Freemarker及velocity使用

yizhihongxing

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日

相关文章

  • spring security数据库表结构实例代码

    针对你的问题,我将提供一个完整的攻略来讲解“spring security数据库表结构实例代码”,以下是详细步骤: 1. 规划数据库表结构 首先,需要规划出数据库表结构,这是非常关键的一步。在spring security中,需要创建以下几张表: users(用户表) authorities(角色表) groups(组表) group_authorities…

    Java 2023年5月20日
    00
  • Spring MVC简介_动力节点Java学院整理

    Spring MVC简介 Spring MVC是一种基于Java的轻量级Web框架,用于开发Web应用程序。它基于MVC(模型-视图-控制器)设计模式,该模式将应用程序分为三个主要组成部分,以提供松散耦合的应用程序开发。Spring MVC还提供了中央调度,以便将控制器(Controller)与用户界面(View)分开。 Spring MVC架构 Sprin…

    Java 2023年5月31日
    00
  • 一篇文章带你入门java集合

    一篇文章带你入门Java集合 Java集合是Java编程中常用的数据结构,包含了List、Set、Map等常用的集合类型。本文将从以下几个方面介绍Java集合: Java集合的类型和概念 Java集合的基础用法 Java集合的注意事项 1. Java集合的类型和概念 集合类型 Java集合主要有以下三种类型: List(列表):有序,可以重复,例如Array…

    Java 2023年5月26日
    00
  • Golang 实现Thrift客户端连接池方式

    下面是Golang实现Thrift客户端连接池的详细攻略: 什么是Thrift客户端连接池 Thrift是一个分布式服务框架,支持多种编程语言和协议。Thrift客户端连接池是在分布式应用开发中常用的技术,主要是在客户端与服务端的连接中起到缓存连接、提高连接复用率、减少连接建立时间等作用,从而提高分布式应用的性能表现。 如何实现 接下来介绍如何通过Golan…

    Java 2023年5月20日
    00
  • SpringBoot 开发提速神器 Lombok+MybatisPlus+SwaggerUI

    我将为您详细讲解 Spring Boot 开发提速神器 Lombok+MybatisPlus+SwaggerUI 的完整攻略。 概述 Spring Boot 是一款轻量级、快速开发的框架,使用起来很方便,但是在我们进行开发时,有很多简单重复的代码需要我们手动编写,这样大大增加了我们的工作量。Lombok、MybatisPlus 和 SwaggerUI 是经过…

    Java 2023年5月19日
    00
  • 解读springboot配置mybatis的sql执行超时时间(mysql)

    Sure! 解读 Spring Boot 配置 MyBatis 的 SQL 执行超时时间 (MySQL) 背景 在使用 Spring Boot 框架开发 Web 项目时,使用 MyBatis 作为数据访问层的解决方案,往往会遇到 SQL 查询语句执行过长的情况。为了防止 SQL 执行超时,我们可以通过配置 MyBatis 的执行超时时间来解决。 步骤 以下是…

    Java 2023年5月20日
    00
  • C#动态webservice调用接口

    下面我将为您详细讲解“C#动态webservice调用接口”的完整攻略。 1. 确认webservice的接口地址和方法名称 在使用新的webservice之前,必须确定它的接口地址和方法名称。可以通过与webservice API的提供者沟通或查看文档进行确认。通常情况下,webservice的接口地址以.asmx文件或.svc文件结尾。 2. 创建web…

    Java 2023年5月19日
    00
  • Java 实战项目基于遗传算法学校排课系统的实现流程

    Java 实战项目基于遗传算法学校排课系统的实现流程 1. 介绍 本项目使用 Java 编程语言,基于遗传算法实现了学校排课系统。该系统可以自动根据学生、教师、教室等信息,生成课表并进行排课。 2. 系统设计 2.1 数据结构设计 根据本系统的需求,我们设计了以下数据结构: 课程表(schedule):记录所有的课程信息,包括课程名称、授课教师、授课班级、上…

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