引入freemarker

引入freemarker

简介

FreeMarker是一款模板引擎: 即一种基于模板和要改变的数据, 并用来生成输出文本(HTML网页、电子邮件、配置文件、源代码等)的通用工具。 它不是面向最终用户的,而是一个Java类库,是一款程序员可以嵌入他们所开发产品的组件

官网手册

JavaEE中的两种开发方式

前后端不分离

要求程序员要掌握js,为了简化页面开发,引入页面模板,页面模板整体上来说又可以分为两大类

前端模板

前端模板就是后缀为html的模板,代表就是Thymeleaf,这种模板有一个好处就是不需要服务端解析就能直接在浏览器中打开。

后端模板

必须经过服务端解析才能被浏览器展示出来的模板

JSP

Freemarker

velocity

前后端分离

前后端分离的时候,后端纯粹只是接口,没有任何页面。所有的页面由前端完成,前端会使用相关的模板。

Vue

AngularJS

React

HelloWorld案例

创建一个maven项目

整合spring和SpringMVC

spring整合SpringMVC

引入freemarker

1.引入freemarker依赖

org.freemarker

freemarker

2.3.28

2.创建freemarker变量文件

freemarker-var.properties

3.配置视图解析器

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"

xmlns:mvc="http://www.springframework.org/schema/mvc"

xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd

http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd

http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd">

expression="org.springframework.stereotype.Controller" />

class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">

classpath:freemarker-var.properties

class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">

10

zh_CN

yyyy-MM-dd HH:mm:ss

yyyy-MM-dd

HH:mm:ss

#.####

class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">

value="org.springframework.web.servlet.view.freemarker.FreeMarkerView" />

4.测试

在WEB-INF下创建 index.ftl

controller跳转到index.ftl页面

@Controller

public class UserController {

@RequestMapping("/hello")

public String hello(){

return "index";

}

}

http://localhost:8082/freemarker01/hello

插值规则

通用插值

字符串,数字,Boolean型,Date类型

@RequestMapping("/hello")

public String hello(Model m){

m.addAttribute("name", "张三");

m.addAttribute("age", 18);

m.addAttribute("enable", true);

m.addAttribute("birth",new Date());

return "index";

}

Insert title here

Hello Freemarker

${root}


${name}

${age}

<#-- 转换规则 -->

${enable?string("true","false")}

${birth?string("yyyy-MM-dd")}

数字格式化插入

数字格式化插值可采用#{expr;format}形式来格式化数字,其中format可以是:

mX:小数部分最小X位

MX:小数部分最大X位

<#--定义变量-->

<#assign x=3.9876543>

<#assign y=6>

#{x;M2}<#--显示3.99-->

#{y;M2}<#--显示6-->

#{x;m3}<#--显示3.988-->

#{y;m3}<#--显示6.000-->

eclipse安装Freemarker插件

重启即可

相关推荐

如何扩展Android手机的内存。 ➡️
best365网页版登录官方网

如何扩展Android手机的内存。 ➡️

📅 07-10 👁️ 1851
求救!!!我没有装去除会心特
365bet官方网投

求救!!!我没有装去除会心特

📅 08-08 👁️ 3899
龙管家app下载
365bet官方网投

龙管家app下载

📅 07-02 👁️ 8108
酒鬼酒典藏52度多少钱 酒鬼酒典藏52度怎么样
365bet官方网投

酒鬼酒典藏52度多少钱 酒鬼酒典藏52度怎么样

📅 07-15 👁️ 9894
300斤胖子怎么减肥
365bet官方网投

300斤胖子怎么减肥

📅 07-18 👁️ 8849
世界杯分档基本敲定:阿根廷葡萄牙一档 德国二档
365bet官方网投

世界杯分档基本敲定:阿根廷葡萄牙一档 德国二档

📅 07-28 👁️ 6557
零零期能贷多少?别急,先搞懂这背后的潜规则!
365体育官网登录入口

零零期能贷多少?别急,先搞懂这背后的潜规则!

📅 08-20 👁️ 5058
世界杯分档基本敲定:阿根廷葡萄牙一档 德国二档
365bet官方网投

世界杯分档基本敲定:阿根廷葡萄牙一档 德国二档

📅 07-28 👁️ 6557