à悟空学院: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/
模板引擎的使用我们其中的一个章节中介绍过freemarker和thymeleaf的使用。
(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 boot的application.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;
首先我们改造下HelloController的hello方法
@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"; }
这里我们返回了gender和friends的列表;
接下来我们看看怎么在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主要处理具有相同内容的页面,比如每个网站的header和footer页面。
Velocity的布局主要常见的两种方式是#parse(“文件路径”)和#include(“文件路径”),其中pase和include的区别在于,若包含的文件中有velocity监本标签,parse将会进一步解析,而include将原样显示。
我们编写一个header和footer,其中的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
相关推荐
从 SpringBoot 1.5.x 版本开始,Velocity 模板引擎的支持就被逐步删除,而在 2.x 版本中,Velocity 相关的代码已经被完全删除。这就意味着,如果我们想在 SpringBoot 2.x 项目中使用 Velocity 模板引擎,就需要自己...
SpringBoot1.5以上版本兼容被抛弃的velocity,详情说明见项目README.md。 # springboot1.5.x+ ...3.不想写java类配置就直接@ImportResource({"classpath:velocity.xml"})原来的xml配置 4.其他原来是啥就是啥开工
《Spring Boot实战派》源码提供了丰富的学习材料,旨在帮助开发者深入理解并熟练掌握Spring Boot这一流行的Java后端开发框架。Spring Boot简化了Spring应用程序的初始设置和配置,使得开发人员能够快速构建可运行的...
此外,还可能涉及Spring Data JPA、MyBatis与数据库的交互,以及如何使用Thymeleaf、FreeMarker或Velocity进行模板引擎的使用。 3. **教学大纲**: 大纲将概述整个教程的结构和主题,包括Spring Boot的基础、核心...
Spring Boot 是一个由 Pivotal 团队开发的框架,其设计目的是简化Spring应用程序的初始设置和配置。Spring Boot 并非意图替代 Spring 框架,而是为开发者提供一个快速构建、部署和管理现代Java应用程序的平台。通过...
Spring Boot作为一款轻量级的框架,简化了初始化和配置过程,而Velocity则是一个强大的模板引擎,允许开发者自定义生成代码的样式和结构。 在Spring Boot项目中,利用Velocity模板引擎,我们可以创建一系列模板文件...
Spring MVC 是一个强大的Java Web...<bean id="velocityConfig" class="org.springframework.web.servlet.view.velocity.VelocityConfigurer"> <property name="resourceLoaderPath" value="/WEB-INF/velocity/" /> ...
jar包,官方版本,自测可用
<bean id="velocityConfigurer" class="org.springframework.web.servlet.view.velocity.VelocityConfigurer"> <property name="resourceLoaderPath" value="/WEB-INF/velocity/" /> <prop key="input....
Spring Boot 对于 Web 开发提供了全面的支持,包括 RESTful API、Thymeleaf、FreeMarker 和 Velocity 模板引擎。此外,Spring Boot 还集成了 Swagger,方便 API 文档的生成和测试。 6. **数据访问** Spring Boot ...
7. **Web 开发**:Spring Boot 可以轻松创建 RESTful API,结合 Thymeleaf、FreeMarker 或 Velocity 模板引擎进行 Web 页面开发。 8. **数据访问**:支持多种数据库,如 MySQL、PostgreSQL、MongoDB 等,以及 JPA、...
使用Spring Boot v. 5. 了解Spring Boot特性 vi. 6. 迁移到生存环境 vii. 7. 高级主题 3. II. 开始 i. 8. Spring Boot介绍 ii. 9. 系统要求 i. 9.1. Servlet容器 iii. 10. Spring Boot安装 i. 10.1. 为Java开发者...
- chapter9-2-1:[Spring Boot中使用Dubbo进行服务治理] - chapter9-2-2:[Spring Boot与Dubbo中管理服务依赖] ### Spring Cloud构建微服务架构 由于Spring Cloud偏宏观架构,Spring Boot偏微观细节,内容上越来越...
《2019精通Spring Boot 42讲》是一份深度学习Java开发框架Spring Boot的教程,涵盖了Spring Boot的核心概念、实战技巧以及最佳实践。在Java开发领域,Spring Boot以其简洁、快速的特性,已经成为现代企业级应用开发...
《Spring Boot实战》源代码是针对Spring Boot框架的实践教程,旨在帮助开发者深入理解并熟练应用Spring Boot进行快速开发。Spring Boot是Java生态系统中的一个核心组件,它简化了创建独立的、生产级别的基于Spring的...
- **Thymeleaf 或者 Velocity**:Spring Boot 支持多种模板引擎,如 Thymeleaf 和 Velocity,它们可以方便地将后端数据渲染成 HTML 页面。 ### 5. 数据访问 - **JPA 和 Hibernate**:Spring Boot 支持 JPA(Java ...
1. **Spring Initializr**: Spring Boot项目通常从Spring Initializr开始,这是一个在线工具,可以生成基本的Spring Boot项目结构。在描述中提到的“代码详细”,可能包括了pom.xml或build.gradle文件,它们定义了...