`

92.Spring Boot使用模板velocity【从零开始学Spring Boot】

阅读更多

 

 à悟空学院:https://t.cn/Rg3fKJD

学院中有Spring Boot相关的课程!点击「阅读原文」进行查看!

SpringBoot视频:http://t.cn/A6ZagYTi

Spring Cloud视频:http://t.cn/A6ZagxSR

SpringBoot Shiro视频:http://t.cn/A6Zag7IV

SpringBoot交流平台:https://t.cn/R3QDhU0

SpringData和JPA视频:http://t.cn/A6Zad1OH

SpringSecurity5.0视频:http://t.cn/A6ZadMBe

Sharding-JDBC分库分表实战http://t.cn/A6ZarrqS

分布式事务解决方案「手写代码」:http://t.cn/A6ZaBnIr

 

【原创文章,转载请注明出处,提供源代码下载】

 

      在写此博客之前,我要对通过支付宝,微信公众号,微信给我的文章打赏的小伙伴表示感谢,谢谢你们的支持,虽然money不多,但是确实是对我很大的鼓励,谢谢你们,有你们的支持,我相信我的博客质量也会越来越好。

     好了,说了一些题外话,我们还是进入正题吧。距离上一篇博客,又过了10天了,今天我们讲讲怎么在Spring Boot中使用模板引擎velocity,先看看今天的大纲:

  

(1) velocity介绍;
(2) 新建spring-boot-velocity工程;
(3) 在pom.xml引入相关依赖;
(4) 编写启动类;
(5) 编写模板文件hello.vm;
(6) 编写访问类HelloController;
(7) 测试;
(8) velocity配置;
(9) velocity常用语法;
(10) velocity layout

 

 (1) velocity介绍;

 

     Velocity是一个基于java的模板引擎(template engine)。它允许任何人仅仅使用简单的模板语言(template language)来引用由java代码定义的对象。

       官网:http://velocity.apache.org/

       模板引擎的使用我们其中的一个章节中介绍过freemarkerthymeleaf的使用。

 

 

 (2) 新建spring-boot-velocity工程;

       我们新建一个maven工程,取名为:spring-boot-velocity

 

 

(3) pom.xml引入相关依赖;

 

       在这里需要说明下,其一就是之后的博客应该会直接使用1.4.1的版本作为讲解了,其二就是在这里使用velocity需要引入相关依赖包:spring-boot-starter-velocity

 

 

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.kfit</groupId>
  <artifactId>spring-boot-velocity</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>spring-boot-velocity</name>
  <url>http://maven.apache.org</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
     <!-- jdk版本号,angel在这里使用1.8,大家修改为大家本地配置的jdk版本号即可 -->
    <java.version>1.8</java.version>
  </properties>
  
    <!-- 
		spring boot 父节点依赖,
		引入这个之后相关的引入就不需要添加version配置,
		spring boot会自动选择最合适的版本进行添加。
	 -->
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>1.4.1.RELEASE</version><!-- 1.4.1.RELEASE , 1.3.3.RELEASE-->
	</parent>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <scope>test</scope>
    </dependency>
    
        <!-- spring boot web支持:mvc,aop... -->
	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-web</artifactId>
	</dependency>
    
    <!-- 引入velocity的依赖包. -->
    <dependency>    
	    <groupId>org.springframework.boot</groupId>   
	    <artifactId>spring-boot-starter-velocity</artifactId>
	</dependency>
    
  </dependencies>
</project>

 

 

(4) 编写启动类;

 

       启动类没有什么特别之处,不过多介绍,请看代码:

 

package com.kfit;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
 * 
 * @author Angel -- 守护天使
 * @version v.0.1
 * @date 2016年10月4日
 */
@SpringBootApplication
public class App {
	public static void main(String[] args) {
		SpringApplication.run(App.class, args);
	}
}

 

 

 

(5) 编写模板文件hello.vm;

  编写一个hello.vm文件,此文件的路径在src/main/resources下,其中hello.vm文件的内容如下:

 

<html>  
<body>  
	welcome ${name}  to velocity!
</body>  
</html>

 

 

(6) 编写访问类HelloController;

 

有了模板文件之后,我们需要有个Controller控制类,能够访问到hello.vm文件,这里也很简单,具体看如下代码:

 

package com.kfit.demo.web;

import java.util.Map;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

/**
 * 测试velocity;
 * @author Angel -- 守护天使
 * @version v.0.1
 * @date 2016年10月4日
 */
@Controller
public class HelloController {
	
	@RequestMapping("/hello")
	public String hello(Map<String,Object> map){
		map.put("name", "[Angel -- 守护天使]");
		return "hello";
	}
	
}

 

 

(7) 测试;

       好了,到这里,我们就可以启动我们的程序进行测试了,访问地址:

http://127.0.0.1:8080/hello ,如果你在浏览器中看到如下信息:

welcome [Angel -- 守护天使] to velocity!

 

那么说明你的demo ok 了。

 

(8) velocity配置;

       spring bootapplication.properties属性文件中为velocity提供了一些常用的配置,如下:

 

spring.velocity.allow-request-override=false # Set whether HttpServletRequest attributes are allowed to override (hide) controller generated model attributes of the same name.

spring.velocity.allow-session-override=false # Set whether HttpSession attributes are allowed to override (hide) controller generated model attributes of the same name.

spring.velocity.cache= # Enable template caching.

spring.velocity.charset=UTF-8 # Template encoding.

spring.velocity.check-template-location=true # Check that the templates location exists.

spring.velocity.content-type=text/html # Content-Type value.

spring.velocity.date-tool-attribute= # Name of the DateTool helper object to expose in the Velocity context of the view.

spring.velocity.enabled=true # Enable MVC view resolution for this technology.

spring.velocity.expose-request-attributes=false # Set whether all request attributes should be added to the model prior to merging with the template.

spring.velocity.expose-session-attributes=false # Set whether all HttpSession attributes should be added to the model prior to merging with the template.

spring.velocity.expose-spring-macro-helpers=true # Set whether to expose a RequestContext for use by Spring's macro library, under the name "springMacroRequestContext".

spring.velocity.number-tool-attribute= # Name of the NumberTool helper object to expose in the Velocity context of the view.

spring.velocity.prefer-file-system-access=true # Prefer file system access for template loading. File system access enables hot detection of template changes.

spring.velocity.prefix= # Prefix that gets prepended to view names when building a URL.

spring.velocity.properties.*= # Additional velocity properties.

spring.velocity.request-context-attribute= # Name of the RequestContext attribute for all views.

spring.velocity.resource-loader-path=classpath:/templates/ # Template path.

spring.velocity.suffix=.vm # Suffix that gets appended to view names when building a URL.

spring.velocity.toolbox-config-location= # Velocity Toolbox config location. For instance `/WEB-INF/toolbox.xml`

spring.velocity.view-names= # White list of view names that can be resolved.     

 


(9) velocity常用语法;

 

Velocity的语法并不是本节的重点,这里还是简单的介绍下几个常用的if else,foreach

 

       首先我们改造下HelloControllerhello方法

 

 

@RequestMapping("/hello")
	public String hello(Map<String,Object> map){
		map.put("name", "[Angel -- 守护天使]");
		map.put("gender","1");//gender:性别,1:男;0:女;
		
		List<Map<String,Object>> friends =new ArrayList<Map<String,Object>>();
		Map<String,Object> friend = new HashMap<String,Object>();
		friend.put("name", "张三");
		friend.put("age", 20);
		friends.add(friend);
		friend = new HashMap<String,Object>();
		friend.put("name", "李四");
		friend.put("age", 22);
		friends.add(friend);
		map.put("friends", friends);
		return "hello";
	}

 

 

       这里我们返回了genderfriends的列表;

 

     接下来我们看看怎么在velocity进行展示呢?

<html>  
<body>  
	welcome ${name}  to velocity!
	<p>性别:
		#if($gender == 1) 
			男
		#elseif($gender == 0)
			女
		#else 
			保密
		#end
	 </p>
	<h4>我的好友:</h4>	
		
		#foreach( $info in $friends )
			姓名:$info.name , 年龄$info.age
			<br/>
		#end
	
</body>  
</html>

 

 

(10) velocity layout

 

Velocity layout主要处理具有相同内容的页面,比如每个网站的headerfooter页面。

 

   Velocity的布局主要常见的两种方式是#parse(“文件路径”)#include(“文件路径”),其中paseinclude的区别在于,若包含的文件中有velocity监本标签,parse将会进一步解析,而include将原样显示。

 

  

 

       我们编写一个headerfooter,其中的header使用parse引入,footer页面使用include引入。

       header.vm内容:

 

<header>
	This is a header,welcome  $name to my web site!
</header>
	
<hr>

 

 

 

       footer.vm内容:

<hr>
<footer>
	This is a footer,welcome  $name to my web site!
</footer>

        修改hello.vm

 

 

 

<html>  
<body>  
	
	#parse("/header.vm")

	welcome ${name}  to velocity!
	<p>性别:
		#if($gender == 1) 
			男
		#elseif($gender == 0)
			女
		#else 
			保密
		#end
	 </p>

	<h4>我的好友:</h4>	
		
		#foreach( $info in $friends )
			姓名:$info.name , 年龄$info.age
			<br/>
		#end
		
	#include("/footer.vm")
	
</body>  
</html>

        到这里就ok了,我们访问/hello页面,应该会看到如下图的效果:

 

 

 

好了,到这里spring boot使用velocity就介绍到这里了,对于velocity的语法大家可以看看别的博客或者直接上官网看看。

 

à悟空学院:https://t.cn/Rg3fKJD

学院中有Spring Boot相关的课程!点击「阅读原文」进行查看!

SpringBoot视频:http://t.cn/A6ZagYTi

Spring Cloud视频:http://t.cn/A6ZagxSR

SpringBoot Shiro视频:http://t.cn/A6Zag7IV

SpringBoot交流平台:https://t.cn/R3QDhU0

SpringData和JPA视频:http://t.cn/A6Zad1OH

SpringSecurity5.0视频:http://t.cn/A6ZadMBe

Sharding-JDBC分库分表实战http://t.cn/A6ZarrqS

分布式事务解决方案「手写代码」:http://t.cn/A6ZaBnIr

 

 

  • 大小: 35 KB
分享到:
评论
3 楼 hong199275 2017-04-24  
好像spring boot 1.5.x后面默认不支持velocity 啦?不得不说,spring boot 更新的有点小快
2 楼 林祥纤 2016-10-09  
graying 写道
写得不错哦,加油!


Thx.
1 楼 graying 2016-10-08  
写得不错哦,加油!

相关推荐

    Springboot入门到精通完整版.pdf

    Spring Boot 是一个由 Pivotal 团队开发的框架,其设计目的是简化Spring应用程序的初始设置和配置。Spring Boot 并非意图替代 Spring 框架,而是为开发者提供一个快速构建、部署和管理现代Java应用程序的平台。通过...

    base.spring.boot

    通过"base.spring.boot-master"这个项目,你可以深入学习如何从零开始构建一个完整的Spring Boot应用,包括项目结构、配置文件、控制器、服务层、数据库集成、单元测试等多个方面。实践是检验真理的唯一标准,动手...

    Roses基于Spring Boot 2,是开源项目Guns的核心支撑层,亦可用于任何java项目支撑内核

    Roses可能预置了这些功能,使得开发者无需从零开始编写。 3. **配置管理**:Roses可能提供了灵活的配置管理,支持多环境配置,方便在不同环境中切换,如开发、测试和生产环境。 4. **模板引擎**:对于视图渲染,...

    MATLAB实现基于LSTM-AdaBoost长短期记忆网络结合AdaBoost时间序列预测(含模型描述及示例代码)

    内容概要:本文档详细介绍了基于 MATLAB 实现的 LSTM-AdaBoost 时间序列预测模型,涵盖项目背景、目标、挑战、特点、应用领域以及模型架构和代码示例。随着大数据和AI的发展,时间序列预测变得至关重要。传统方法如 ARIMA 在复杂非线性序列中表现欠佳,因此引入了 LSTM 来捕捉长期依赖性。但 LSTM 存在易陷局部最优、对噪声鲁棒性差的问题,故加入 AdaBoost 提高模型准确性和鲁棒性。两者结合能更好应对非线性和长期依赖的数据,提供更稳定的预测。项目还展示了如何在 MATLAB 中具体实现模型的各个环节。 适用人群:对时间序列预测感兴趣的开发者、研究人员及学生,特别是有一定 MATLAB 编程经验和熟悉深度学习或机器学习基础知识的人群。 使用场景及目标:①适用于金融市场价格预测、气象预报、工业生产故障检测等多种需要时间序列分析的场合;②帮助使用者理解并掌握将LSTM与AdaBoost结合的实现细节及其在提高预测精度和抗噪方面的优势。 其他说明:尽管该模型有诸多优点,但仍存在训练时间长、计算成本高等挑战。文中提及通过优化数据预处理、调整超参数等方式改进性能。同时给出了完整的MATLAB代码实现,便于学习与复现。

    palkert_3ck_01_0918.pdf

    palkert_3ck_01_0918

    pepeljugoski_01_1106.pdf

    pepeljugoski_01_1106

    tatah_01_1107.pdf

    tatah_01_1107

    [AB PLC例程源码][MMS_046393]Motor Speed Reference.zip

    AB PLC例程代码项目案例 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我!

    基于51的步进电机控制系统20250302

    题目:基于单片机的步进电机控制系统 模块: 主控:AT89C52RC 步进电机(ULN2003驱动) 按键(3个) 蓝牙(虚拟终端模拟) 功能: 1、可以通过蓝牙远程控制步进电机转动 2、可以通过按键实现手动与自动控制模式切换。 3、自动模式下,步进电机正转一圈,反转一圈,循环 4、手动模式下可以通过按键控制步进电机转动(顺时针和逆时针)

    [AB PLC例程源码][MMS_041234]Logix Fault Handler.zip

    AB PLC例程代码项目案例 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我!

    [AB PLC例程源码][MMS_042348]Using an Ultra3000 as an Indexer on DeviceNet with a CompactLogix.zip

    AB PLC例程代码项目案例 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我!

    智慧校园平台建设全流程详解:从需求到持续优化

    内容概要:本文详细介绍了建设智慧校园平台所需的六个关键步骤。首先通过需求分析深入了解并确定校方和使用者的具体需求;其次是规划设计阶段,依据所得需求制定全面的建设方案。再者是对现有系统的整合——系统集成,确保新旧平台之间的互操作性和数据一致性。培训支持帮助全校教职工和学生快速熟悉新平台,提高效率。实施试点确保系统逐步稳定部署。最后,强调持续改进的重要性,以适应技术和环境变化。通过这一系列有序的工作,可以使智慧校园建设更为科学高效,减少失败风险。 适用人群:教育领域的决策者和技术人员,包括负责信息化建设和运维的团队成员。 使用场景及目标:用于指导高校和其他各级各类学校规划和发展自身的数字校园生态链;目的是建立更加便捷高效的现代化管理模式和服务机制。 其他说明:智慧校园不仅仅是简单的IT设施升级或软件安装,它涉及到全校范围内的流程再造和创新改革。

    AI淘金实战手册:100+高收益变现案例解析

    该文档系统梳理了人工智能技术在商业场景中的落地路径,聚焦内容生产、电商运营、智能客服、数据分析等12个高潜力领域,提炼出100个可操作性变现模型。内容涵盖AI工具开发、API服务收费、垂直场景解决方案、数据增值服务等多元商业模式,每个思路均配备应用场景拆解、技术实现路径及收益测算框架。重点呈现低代码工具应用、现有平台流量复用、细分领域自动化改造三类轻量化启动方案,为创业者提供从技术选型到盈利闭环的全流程参考。

    palkert_3ck_02_0719.pdf

    palkert_3ck_02_0719

    2006-2023年 地级市-克鲁格曼专业化指数.zip

    克鲁格曼专业化指数,最初是由Krugman于1991年提出,用于反映地区间产业结构的差异,也被用来衡量两个地区间的专业化水平,因而又称地区间专业化指数。该指数的计算公式及其含义可以因应用背景和具体需求的不同而有所调整,但核心都是衡量地区间的产业结构差异或专业化程度。 指标 年份、城市、第一产业人数(first_industry1)、第二产业人数(second_industry1)、第三产业人数(third_industry1)、专业化指数(ksi)。

    [AB PLC例程源码][MMS_046305]R2FX.zip

    AB PLC例程代码项目案例 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我!

    精品推荐-通信技术LTE干货资料合集(19份).zip

    精品推荐,通信技术LTE干货资料合集,19份。 LTE PCI网络规划工具.xlsx LTE-S1切换占比专题优化分析报告.docx LTE_TDD问题定位指导书-吞吐量篇.docx LTE三大常见指标优化指导书.xlsx LTE互操作邻区配置核查原则.docx LTE信令流程详解指导书.docx LTE切换问题定位指导一(定位思路和问题现象).docx LTE劣化小区优化指导手册.docx LTE容量优化高负荷小区优化指导书.docx LTE小区搜索过程学习.docx LTE小区级与邻区级切换参数说明.docx LTE差小区处理思路和步骤.docx LTE干扰日常分析介绍.docx LTE异频同频切换.docx LTE弱覆盖问题分析与优化.docx LTE网优电话面试问题-应答技巧.docx LTE网络切换优化.docx LTE高负荷小区容量优化指导书.docx LTE高铁优化之多频组网优化提升“用户感知,网络价值”.docx

    matlab程序代码项目案例:matlab程序代码项目案例matlab中Toolbox中带有的模型预测工具箱.zip

    matlab程序代码项目案例 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。 3、用途:项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 4、如果基础还行,或热爱钻研,亦可在此项目代码基础上进行修改添加,实现其他不同功能。 欢迎下载!欢迎交流学习!不清楚的可以私信问我!

    pepeljugoski_01_0508.pdf

    pepeljugoski_01_0508

Global site tag (gtag.js) - Google Analytics