曾几何时,Web开发是个多么高大上的名字,程序猿们都以能搞定Web技术为荣,此时还没有前后端之说。然而随着互联网的发展,社会分工进一步细化,职业岗位也更加细分,慢慢开始有了前端攻城狮和后端攻城狮,技术也进一步细分,出现了以HTML、JS等为主的页面技术,以Java、Pyton为主的后端开发语言技术。
事实上,直到前后端分离开发模式已经逐渐成为主流的今天,前后端技术的划分也没能完全清晰,我们可能会经常听到一个叫全栈工程师的名字,这是一类野心极其大想前后端通吃的程序猿,这是要逼着其他程序猿回家种地的节奏,程序猿没有女朋友已经够惨了,还要这样伤害这些单纯可爱的人吗?
大家都是程序猿,本自同根生,相煎何太急。
全栈工程师其实就是前端和后端技术都会的一类人,而这类人基本都是后端工程师;为什么这么说呢,以Java工程师为例,哪个Java工程师不会HTML、JS呢,否则会被人鄙视的;甚至经验丰富的老司机比真正前端工程师还要精通。Web开发本身就是后端工程师的一部分工作。比如,在Java Web开发领域程序猿通常是既写前端代码,也写后端代码;而且Web开发有着很多很优秀的页面技术HTML、JSP等。这些优秀的页面技术,使Java在Web开发领域有着举足轻重的地位。
咱们今天要学习的也是一个在Java开发领域非常流行的模板引擎技术-Freemarker,用过Spring Boot的同学可能都知道,Spring Boot在自己体系里默认支持的页面技术不是JSP,而是Thymleaf、Freemarker的模板引擎技术。所以,今天咱们就先来学习一下其中的一个,使用Freemarker模板引擎技术做Web开发。
那么问题来了,咱们一直在说模板引擎技术,那什么是模板引擎呢?接下来咱们先来了解一下模板引擎技术。
什么是模板引擎技术
传统的页面开发过程中通常采用的HTML + JS技术,而现在大部分网站都采用标签化+ 模块化 的设计 。模板引擎其实就是根据这种方式,使用户界面与业务数据(内容)分离而产生的,它可以生成特定格式的文档,用于网站的模板引擎就会生成一个标准的HTML文档在原有的HTML页面中来填充数据。最终达到渲染页面的目的。
说人话就是,把数据和页面整合在一起的技术。
常用的模板引擎技术:
• Thymleaf
• FreeMarker
• Velocity
今天咱们就来先学习Freemarker。
什么是FreeMarker
咱们先来介绍下Freemarker的概念,FreeMarker是一个使用纯Java编写的基于模板生成文本输出的通用工具,通常它的文件都是.ftl结尾,FreeMarker最初被用在MVC模式的Web开发框架中生成HTML页面,但是它的功能可不仅仅可以用到Web开发生成模板文件,它也可以用于非Web应用环境中,如:生成Java代码。
FreeMarker的主要特点
既然Freemarker 模板技术是Spring Boot官方默认支持的,那么它有哪些特点,才如此的备受青睐呢?
• 轻量级
不像JSP那样是Servlet要嵌入到应用程序中
• 可以生成各种文本文件
如:html、xml、java等
• 学习成本低
因为是用java编写的,所以语法和java很像
好了,接下来我们来看看Spring Boot整合 Freemarker 的实战操作。
Freemarker 渲染 Web 页面
首先,添加pom依赖,我们使用SpirngBoot Initializr 创建SpringBoot基础工程(记得加上Web依赖,因为我是搞Web开发),按照我们的经验,在Spring Boot中如果想要集成什么技术只需要添加相关技术的依赖就可以,所以呢,这里我们就直接添加FreeMarker的依赖。
当然你也可以在创建项目时直接勾选需要的依赖,项目在创建完成的时候自动加上这个依赖,如下图:
添加FreeMarker相关属性配置
创建好工程之后,在application.properties文件中添加FreeMarker相关配置。
创建页面
这里需要注意的是freemarker的文件名是以.ftl后缀的,我们在resources\templates文件夹下创建freemarker.ftl文件,需要注意的是freemarker在取值的时候使用的是插值表达式。
创建Controller
这里需要注意,在写controller的时候,我们使用注解是@Controller,因为我们要跳转到html页面,不在是返回JSON数据了。
测试结果
最后启动Spirng Boot工程,在浏览器地址栏中输入如下地址就可以了,
效果如下:
好了,通过以上简单的几步就可以轻松实现Spring Boot整合FreeMarker模板引擎技术进行web开发了,是不是很激动呢?
怎么样,你了解了么?欢迎和我们一起探讨。
更多IT技术干货,请关注课工场,和我们一起关注前沿技术,快速提升。