`
747017186
  • 浏览: 333897 次
社区版块
存档分类
最新评论

Velocity模板路径的配置

    博客分类:
  • html
 
阅读更多

我们一般用 Velocity作为模板进行页面的配置,之所以这样做是因为很简单。可以通过ajax可以返回已打算html代码,把这些html代码放到指定的div当中,实现异步刷新。这样不必花大量时间去解析json代码。

ajax 前台页面我不写了,直接写后台的代码:

/**
 * Mainbo.com Inc.
 * Copyright (c) 2015-2017 All Rights Reserved.
 */
package com.mainbo.jy.lecturerecords.controller;

import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.Set;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.velocity.Template;
import org.apache.velocity.VelocityContext;
import org.apache.velocity.app.Velocity;
import org.apache.velocity.app.VelocityEngine;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

import com.mainbo.jy.comment.bo.CommentInfo;
import com.mainbo.jy.comment.service.CommentInfoService;
import com.mainbo.jy.common.page.PageList;
import com.mainbo.jy.common.web.controller.AbstractController;

/**
 * 听课记录控制器接口
 * <pre>
 *
 * </pre>
 *
 * @author Generate Tools
 * @version $Id: LectureRecords.java, v 1.0 2015-03-30 Generate Tools Exp $
 */
@Controller
@RequestMapping("/jy/lecturerecords")
public class LectureRecordsController extends AbstractController{
//map是装在数据的,key值可以直接在模板中使用
	public String aa(HttpServletRequest request,Map<String,Object> map) {
		Properties p = new Properties();
//第一种:文件路径的方式,注意一定是绝对路径
		String s=request.getSession().getServletContext().getRealPath("/")+File.separator+"WEB-INF";//模板都放在web-info下
		p.setProperty(Velocity.FILE_RESOURCE_LOADER_PATH, s);

//第二种:通过类路径加载模板,模板都放在classpath下,也就是src下面
 p.setProperty("class.resource.loader.class""org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader");
			 
        VelocityEngine ve = new VelocityEngine(p);//生成模板引擎
        ve.init();
        /* next, get the Template */
        Template t = ve.getTemplate("hellosite.html");
        /* create a context and add data */
        VelocityContext context = new VelocityContext();
        context.put("name", "DingDangXiaoMa");
        context.put("site", "http://www.sun.com");
        
        Set<String> keys=map.keySet();
        for (String key : keys) {
        	context.put(key, map.get(key));
		}
        /* now render the template into a StringWriter */
        StringWriter writer = new StringWriter();
        t.merge(context, writer);
        /* show the World */
        System.out.println(writer.toString());
        
        return writer.toString();//得到模板上面所有的文本,这样就可以直接通过打印到前段页面了
	}
}

/**
	 * 返回字符串UTF-8编码
	 * @param response
	 * @param result 字符串内容。text/plain
	 * @throws Exception
	 */
	protected final void writeText(HttpServletResponse response, String result) throws Exception {
		response.setContentType("text/plain; charset=UTF-8");
		response.setCharacterEncoding("UTF-8");

		PrintWriter out = response.getWriter();
		out.write(result);
		out.close();
	}

	/**
	 * 用于导出、下载XML文件
	 * @param response
	 * @param result 字符串内容。
	 * @param fileName 下载的文件名
	 * @throws Exception
	 */
	protected final void downloadXML(HttpServletResponse response, String result, String fileName) throws Exception {
		// 避免过滤器赋值导致无法下载
		response.setHeader("Cache-Control", "");

		response.setContentType("application/x-msdownload");
		response.setHeader("Content-Disposition", "attachment; filename=" + fileName);
		OutputStream out = response.getOutputStream();
		out.write(result.getBytes("UTF-8"));
		out.flush();
		out.close();
}

模板:
<div>
Hello $name! Welcome to $site world!
$data
#foreach($product in $data.datalist) <!--传过来的map的key值-->
<li>$product.username:$product.content</li> 
#end
</div>	 

 

分享到:
评论

相关推荐

    velocity模板路径

    **Velocity模板路径** ...通过理解并正确配置Velocity模板路径,开发者可以有效地管理和利用模板资源,提升项目的可维护性和扩展性。同时,灵活地利用各种资源加载器,可以在不同环境下方便地部署和运行应用。

    SpringMVC3+velocity最简单配置例子

    4. **创建Velocity模板**: 在指定的资源路径(如`/WEB-INF/velocity/`)下创建`.vm`文件,如`example.vm`,并使用VTL语法引用模型中的数据。 5. **运行与测试**: 启动服务器,访问对应的URL,SpringMVC会调用...

    Velocity配置文件详解

    ### Velocity配置文件详解 #### 一、概述 在Apache Velocity框架中,`velocity.properties`配置文件扮演着核心角色。此文件通常位于`org.apache.velocity.runtime.defaults`包下,并且定义了Velocity运行时所需的...

    Velocity之HelloWorld配置

    在开发过程中,有一些工具可以帮助你更好地管理Velocity模板。例如,IDE插件如Eclipse的Velocity视图插件,它可以提供语法高亮、自动完成和错误检查等功能。此外,Velocity TestKit是一个测试框架,用于编写单元测试...

    SpringBoot集成Mybatis,velocity模板展示数据

    本项目主要探讨的是如何将SpringBoot与Mybatis、Velocity模板引擎进行整合,以便更高效地展示和处理数据。 首先,让我们深入了解SpringBoot的核心特性。SpringBoot的设计理念是“约定优于配置”,它内置了Tomcat...

    SpringBoot Velocity 代码生成模板

    集成Velocity到Spring Boot项目中,通常需要在配置文件(`application.properties`或`application.yml`)中添加Velocity的相关配置,如模板路径、缓存设置等。同时,还需要在代码中创建Velocity的上下文对象,并注入...

    Velocity模板使用指南中文版

    - **初始化**: Velocity 引擎加载配置,如模板路径、缓存策略等。 - **创建上下文**: 填充需要在模板中使用的数据。 - **合并模板**: 将上下文中的数据与模板结合,生成最终的 HTML 或其他格式的输出。 - **输出**: ...

    Velocity模板解析

    3. **Velocity模板引擎配置** - 可以通过VelocityConfigurer类配置Velocity引擎,比如设置模板路径、编码格式、缓存策略等。 - `Velocity.init()`初始化引擎,`Velocity.evaluate()`或`Velocity.mergeTemplate()`...

    SpringBoot集成Mybatis,velocity模板

    5. **使用Velocity模板**:创建Velocity模板文件(如`templates/email.vm`),然后在服务类中使用VelocityContext填充数据,并通过VelocityEngine渲染模板。 ```java // EmailService.java public void sendEmail...

    velocity 配置jar包

    ** Velocity 模板引擎配置详解 ** Velocity 是一个开源的 Java 模板引擎,它允许开发者将业务逻辑与页面展示分离,使得 HTML 页面更专注于布局和设计,而将动态数据处理交由后端代码处理。Velocity 通过使用简单的...

    velocity入门使用教程

    教程内容包含了解Velocity模板引擎的基础知识、学习VTL语法、设置和使用velocity.properties配置文件以及如何在Servlet和Spring MVC环境中集成Velocity。 ### Velocity模板引擎的基本使用方法 Velocity可以用来...

    velocity实现邮件模板定制

    5. **合并模板与数据**:使用`Velocity.mergeTemplate()`方法,传入模板文件路径和上下文,生成最终的邮件内容字符串。 6. **发送邮件**:将生成的邮件内容传递给邮件服务API,完成发送。 关于源码,Velocity的...

    Velocity模板邮件发送例子(Spring框架)(可通用,支持多扩展)

    这包括设置模板路径、编码、资源加载器等配置项,确保Spring能够正确地找到和处理Velocity模板。 ```xml &lt;bean id="velocityConfig" class="org.springframework.web.servlet.view.velocity.VelocityConfigurer"&gt; ...

    Velocity模板引擎 v2.2.0.zip

    在这个"Velocity模板引擎 v2.2.0.zip"压缩包中,包含了一个名为"使用须知.txt"的文件,可能详细介绍了如何安装、配置以及使用这个版本的Velocity。而"132688852448074316"可能是另一个相关文件,但没有具体的文件...

    velocity(eclipse插件)

    这个插件提供了对Velocity模板语言(VTL)的语法高亮、代码提示、错误检查等功能,极大地提升了开发效率。 **一、安装与配置** 1. **下载与安装**: 可以从Eclipse Marketplace或官方站点下载Velocity插件。在...

    velocity文档(Velocity1.4java开发指南中文版,Velocity1.4模板使用指南中文版中文版)

    通过阅读这两份文档,你可以深入学习如何配置 Velocity,如何编写模板,以及如何在实际项目中应用 Velocity。 **学习路径** 1. 首先,理解 Velocity 的基本概念和工作原理。 2. 掌握 VTL 语法,包括变量引用、条件...

    Velocity模板技术

    标题:Velocity模板技术 描述与知识点: Velocity模板技术是一种用于分离HTML、XML、PDF等文档的格式和数据的模板引擎。它广泛应用于Java Web开发中,尤其在MVC架构下,用于视图层的渲染。Velocity的核心优势在于...

    Velocity学习Web项目

    在Struts的配置文件(`struts-config.xml`)中,我们需要为这个Action创建一个forward,指定Velocity模板: ```xml ``` 最后,当用户访问`/listUsers` URL时,Struts的Action会执行,准备数据,然后通过...

    velocity中文

    Velocity模板语言是一种标记语言,用于描述如何在模板中插入动态内容。VTL的语法简洁,主要包括以下几个关键概念: - `${}`:这是Velocity中的变量引用符号,用于插入Java对象的属性值。 - `#set()`:用于设置变量...

Global site tag (gtag.js) - Google Analytics