我们一般用 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模板路径,开发者可以有效地管理和利用模板资源,提升项目的可维护性和扩展性。同时,灵活地利用各种资源加载器,可以在不同环境下方便地部署和运行应用。
4. **创建Velocity模板**: 在指定的资源路径(如`/WEB-INF/velocity/`)下创建`.vm`文件,如`example.vm`,并使用VTL语法引用模型中的数据。 5. **运行与测试**: 启动服务器,访问对应的URL,SpringMVC会调用...
### Velocity配置文件详解 #### 一、概述 在Apache Velocity框架中,`velocity.properties`配置文件扮演着核心角色。此文件通常位于`org.apache.velocity.runtime.defaults`包下,并且定义了Velocity运行时所需的...
在开发过程中,有一些工具可以帮助你更好地管理Velocity模板。例如,IDE插件如Eclipse的Velocity视图插件,它可以提供语法高亮、自动完成和错误检查等功能。此外,Velocity TestKit是一个测试框架,用于编写单元测试...
本项目主要探讨的是如何将SpringBoot与Mybatis、Velocity模板引擎进行整合,以便更高效地展示和处理数据。 首先,让我们深入了解SpringBoot的核心特性。SpringBoot的设计理念是“约定优于配置”,它内置了Tomcat...
集成Velocity到Spring Boot项目中,通常需要在配置文件(`application.properties`或`application.yml`)中添加Velocity的相关配置,如模板路径、缓存设置等。同时,还需要在代码中创建Velocity的上下文对象,并注入...
- **初始化**: Velocity 引擎加载配置,如模板路径、缓存策略等。 - **创建上下文**: 填充需要在模板中使用的数据。 - **合并模板**: 将上下文中的数据与模板结合,生成最终的 HTML 或其他格式的输出。 - **输出**: ...
3. **Velocity模板引擎配置** - 可以通过VelocityConfigurer类配置Velocity引擎,比如设置模板路径、编码格式、缓存策略等。 - `Velocity.init()`初始化引擎,`Velocity.evaluate()`或`Velocity.mergeTemplate()`...
5. **使用Velocity模板**:创建Velocity模板文件(如`templates/email.vm`),然后在服务类中使用VelocityContext填充数据,并通过VelocityEngine渲染模板。 ```java // EmailService.java public void sendEmail...
** Velocity 模板引擎配置详解 ** Velocity 是一个开源的 Java 模板引擎,它允许开发者将业务逻辑与页面展示分离,使得 HTML 页面更专注于布局和设计,而将动态数据处理交由后端代码处理。Velocity 通过使用简单的...
教程内容包含了解Velocity模板引擎的基础知识、学习VTL语法、设置和使用velocity.properties配置文件以及如何在Servlet和Spring MVC环境中集成Velocity。 ### Velocity模板引擎的基本使用方法 Velocity可以用来...
5. **合并模板与数据**:使用`Velocity.mergeTemplate()`方法,传入模板文件路径和上下文,生成最终的邮件内容字符串。 6. **发送邮件**:将生成的邮件内容传递给邮件服务API,完成发送。 关于源码,Velocity的...
这包括设置模板路径、编码、资源加载器等配置项,确保Spring能够正确地找到和处理Velocity模板。 ```xml <bean id="velocityConfig" class="org.springframework.web.servlet.view.velocity.VelocityConfigurer"> ...
在这个"Velocity模板引擎 v2.2.0.zip"压缩包中,包含了一个名为"使用须知.txt"的文件,可能详细介绍了如何安装、配置以及使用这个版本的Velocity。而"132688852448074316"可能是另一个相关文件,但没有具体的文件...
这个插件提供了对Velocity模板语言(VTL)的语法高亮、代码提示、错误检查等功能,极大地提升了开发效率。 **一、安装与配置** 1. **下载与安装**: 可以从Eclipse Marketplace或官方站点下载Velocity插件。在...
通过阅读这两份文档,你可以深入学习如何配置 Velocity,如何编写模板,以及如何在实际项目中应用 Velocity。 **学习路径** 1. 首先,理解 Velocity 的基本概念和工作原理。 2. 掌握 VTL 语法,包括变量引用、条件...
标题:Velocity模板技术 描述与知识点: Velocity模板技术是一种用于分离HTML、XML、PDF等文档的格式和数据的模板引擎。它广泛应用于Java Web开发中,尤其在MVC架构下,用于视图层的渲染。Velocity的核心优势在于...
在Struts的配置文件(`struts-config.xml`)中,我们需要为这个Action创建一个forward,指定Velocity模板: ```xml ``` 最后,当用户访问`/listUsers` URL时,Struts的Action会执行,准备数据,然后通过...
Velocity模板语言是一种标记语言,用于描述如何在模板中插入动态内容。VTL的语法简洁,主要包括以下几个关键概念: - `${}`:这是Velocity中的变量引用符号,用于插入Java对象的属性值。 - `#set()`:用于设置变量...