国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當(dāng)前位置: 首頁 > news >正文

教育行業(yè)網(wǎng)站模板最新軍事戰(zhàn)爭新聞消息

教育行業(yè)網(wǎng)站模板,最新軍事戰(zhàn)爭新聞消息,wordpress修改主題頁面,網(wǎng)站備案登陸Springboot集成Freemarker 一、前言🔥二、環(huán)境說明🔥三、Freemarker 介紹🔥四、環(huán)境搭建&&快速入門🔥4.1 創(chuàng)建測試工程4.2 配置文件4.3 創(chuàng)建模型類4.4 創(chuàng)建模板4.5 創(chuàng)建controller4.6 創(chuàng)建啟動類4.7 測試 五、Freemarker …

Springboot集成Freemarker

  • 一、前言🔥
  • 二、環(huán)境說明🔥
  • 三、Freemarker 介紹🔥
  • 四、環(huán)境搭建&&快速入門🔥
      • 4.1 創(chuàng)建測試工程
      • 4.2 配置文件
      • 4.3 創(chuàng)建模型類
      • 4.4 創(chuàng)建模板
      • 4.5 創(chuàng)建controller
      • 4.6 創(chuàng)建啟動類
      • 4.7 測試
  • 五、Freemarker 基礎(chǔ)🔥
        • 基礎(chǔ)語法種類
        • 集合指令(List和Map)
        • if指令
        • 運(yùn)算符
        • 邏輯運(yùn)算符
        • 空值處理

一、前言🔥

上一期,我是帶著大家入門了SpringBoot集成Kafka,今天我再來一期Freemarker的零基礎(chǔ)教學(xué)吧。不知道大家對kafka有多少了解,反正我就是從搭建開始,然后再加一個簡單演示,這就算是帶著大家了個門哈,剩下的我再后邊慢慢出教程給大家說。

二、環(huán)境說明🔥

演示環(huán)境:idea2021 + springboot 2.3.1REALSE + Freemarker

三、Freemarker 介紹🔥

FreeMarker 是一款 模板引擎: 即一種基于模板和要改變的數(shù)據(jù), 并用來生成輸出文本(HTML網(wǎng)頁,電子郵件,配置文件,源代碼等)的通用工具。 它不是面向最終用戶的,而是一個Java類庫,是一款程序員可以嵌入他們所開發(fā)產(chǎn)品的組件。

模板編寫為FreeMarker Template Language (FTL)。它是簡單的,專用的語言, 不是 像PHP那樣成熟的編程語言。 那就意味著要準(zhǔn)備數(shù)據(jù)在真實(shí)編程語言中來顯示,比如數(shù)據(jù)庫查詢和業(yè)務(wù)運(yùn)算, 之后模板顯示已經(jīng)準(zhǔn)備好的數(shù)據(jù)。在模板中,你可以專注于如何展現(xiàn)數(shù)據(jù), 而在模板之外可以專注于要展示什么數(shù)據(jù)。 

在這里插入圖片描述
常用的java模板引擎還有哪些?

Jsp、Freemarker、Thymeleaf 、Velocity 等。

1.Jsp 為 Servlet 專用,不能單獨(dú)進(jìn)行使用。

2.Thymeleaf 為新技術(shù),功能較為強(qiáng)大,但是執(zhí)行的效率比較低。

3.Velocity從2010年更新完 2.0 版本后,便沒有在更新。Spring Boot 官方在 1.4 版本后對此也不在支持,雖然 Velocity 在 2017 年版本得到迭代,但為時已晚。

四、環(huán)境搭建&&快速入門🔥

freemarker作為springmvc一種視圖格式,默認(rèn)情況下SpringMVC支持freemarker視圖格式。
需要創(chuàng)建Spring Boot+Freemarker工程用于測試模板。

4.1 創(chuàng)建測試工程

創(chuàng)建一個freemarker-demo 的測試工程專門用于freemarker的功能測試與模板的測試。
pom.xml如下:

<?xml version="1.0" encoding="UTF-8"?>
<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"><parent><artifactId>suihao-test</artifactId><groupId>com.suihao</groupId><version>1.0-SNAPSHOT</version></parent><modelVersion>4.0.0</modelVersion><artifactId>freemarker-demo</artifactId><properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-freemarker</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId></dependency><!-- lombok --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency><!-- apache 對 java io 的封裝工具庫 --><dependency><groupId>org.apache.commons</groupId><artifactId>commons-io</artifactId><version>1.3.2</version></dependency></dependencies></project>

4.2 配置文件

配置application.yml

server:port: 8881 #服務(wù)端口
spring:application:name: freemarker-demo #指定服務(wù)名freemarker:cache: false  #關(guān)閉模板緩存,方便測試settings:template_update_delay: 0 #檢查模板更新延遲時間,設(shè)置為0表示立即檢查,如果時間大于0會有緩存不方便進(jìn)行模板測試suffix: .ftl               #指定Freemarker模板文件的后綴名

4.3 創(chuàng)建模型類

在freemarker的測試工程下創(chuàng)建模型類型用于測試

package com.suihao.freemarker.entity;import lombok.Data;import java.util.Date;@Data
public class Student {private String name;//姓名private int age;//年齡private Date birthday;//生日private Float money;//錢包
}

4.4 創(chuàng)建模板

resources下創(chuàng)建templates,此目錄為freemarker的默認(rèn)模板存放目錄。

在templates下創(chuàng)建模板文件 01-basic.ftl ,模板中的插值表達(dá)式最終會被freemarker替換成具體的數(shù)據(jù)。

<!DOCTYPE html>
<html>
<head><meta charset="utf-8"><title>Hello World!</title>
</head>
<body>
<b>普通文本 String 展示:</b><br><br>
Hello ${name} <br>
<hr>
<b>對象Student中的數(shù)據(jù)展示:</b><br/>
姓名:${stu.name}<br/>
年齡:${stu.age}
<hr>
</body>
</html>

4.5 創(chuàng)建controller

創(chuàng)建Controller類,向Map中添加name,最后返回模板文件。

package com.xuecheng.test.freemarker.controller;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.client.RestTemplate;import java.util.Map;@Controller
public class HelloController {@GetMapping("/basic")public String test(Model model) {//1.純文本形式的參數(shù)model.addAttribute("name", "freemarker");//2.實(shí)體類相關(guān)的參數(shù)Student student = new Student();student.setName("小明");student.setAge(18);model.addAttribute("stu", student);return "01-basic";}
}

4.6 創(chuàng)建啟動類

package com.suihao.freemarker;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
public class FreemarkerDemotApplication {public static void main(String[] args) {SpringApplication.run(FreemarkerDemotApplication.class,args);}
}

4.7 測試

請求:http://localhost:8881/basic
在這里插入圖片描述

五、Freemarker 基礎(chǔ)🔥

基礎(chǔ)語法種類

1、注釋,即<#-- -->,介于其之間的內(nèi)容會被freemarker忽略

<#--我是一個freemarker注釋-->

2、插值(Interpolation): 即 ${…} 部分,freemarker會用真實(shí)的值代替 ${…}

Hello ${name}

3、FTL指令:和HTML標(biāo)記類似,名字前加#予以區(qū)分,Freemarker會解析標(biāo)簽中的表達(dá)式或邏輯。

<# >FTL指令</#> 

4、文本,僅文本信息,這些不是freemarker的注釋、插值、FTL指令的內(nèi)容會被freemarker忽略解析,直接輸出內(nèi)容。

<#--freemarker中的普通文本-->
我是一個普通的文本
集合指令(List和Map)

1、數(shù)據(jù)模型:

在HelloController中新增如下方法:

@GetMapping("/list")
public String list(Model model){//------------------------------------Student stu1 = new Student();stu1.setName("小強(qiáng)");stu1.setAge(18);stu1.setMoney(1000.86f);stu1.setBirthday(new Date());//小紅對象模型數(shù)據(jù)Student stu2 = new Student();stu2.setName("小紅");stu2.setMoney(200.1f);stu2.setAge(19);//將兩個對象模型數(shù)據(jù)存放到List集合中List<Student> stus = new ArrayList<>();stus.add(stu1);stus.add(stu2);//向model中存放List集合數(shù)據(jù)model.addAttribute("stus",stus);//------------------------------------//創(chuàng)建Map數(shù)據(jù)HashMap<String,Student> stuMap = new HashMap<>();stuMap.put("stu1",stu1);stuMap.put("stu2",stu2);// 3.1 向model中存放Map數(shù)據(jù)model.addAttribute("stuMap", stuMap);return "02-list";
}

2、模板:

在templates中新增02-list.ftl文件

<!DOCTYPE html>
<html>
<head><meta charset="utf-8"><title>Hello World!</title>
</head>
<body><#-- list 數(shù)據(jù)的展示 -->
<b>展示list中的stu數(shù)據(jù):</b>
<br>
<br>
<table><tr><td>序號</td><td>姓名</td><td>年齡</td><td>錢包</td></tr>
</table>
<hr><#-- Map 數(shù)據(jù)的展示 -->
<b>map數(shù)據(jù)的展示:</b>
<br/><br/>
<a href="###">方式一:通過map['keyname'].property</a><br/>
輸出stu1的學(xué)生信息:<br/>
姓名:<br/>
年齡:<br/>
<br/>
<a href="###">方式二:通過map.keyname.property</a><br/>
輸出stu2的學(xué)生信息:<br/>
姓名:<br/>
年齡:<br/><br/>
<a href="###">遍歷map中兩個學(xué)生信息:</a><br/>
<table><tr><td>序號</td><td>姓名</td><td>年齡</td><td>錢包</td> </tr>
</table>
<hr></body>
</html>

👆上面代碼解釋:

${k_index}:

index:得到循環(huán)的下標(biāo),使用方法是在stu后邊加"_index",它的值是從0開始
if指令
 if 指令即判斷指令,是常用的FTL指令,freemarker在解析時遇到if會進(jìn)行判斷,條件為真則輸出if中間的內(nèi)容,否則跳過內(nèi)容不再輸出。
  • 指令格式
<#if ></if>

1、數(shù)據(jù)模型:

使用list指令中測試數(shù)據(jù)模型,判斷名稱為小紅的數(shù)據(jù)字體顯示為紅色。

2、模板:

<table><tr><td>姓名</td><td>年齡</td><td>錢包</td></tr><#list stus as stu><tr><td >${stu.name}</td><td>${stu.age}</td><td >${stu.mondy}</td></tr></#list></table>

3、輸出:

姓名為“小強(qiáng)”則字體顏色顯示為紅色。
在這里插入圖片描述

運(yùn)算符

1、算數(shù)運(yùn)算符

FreeMarker表達(dá)式中完全支持算術(shù)運(yùn)算,FreeMarker支持的算術(shù)運(yùn)算符包括:

  • 加法: +
  • 減法: -
  • 乘法: *
  • 除法: /
  • 求模 (求余): %

模板代碼

<b>算數(shù)運(yùn)算符</b>
<br/><br/>100+5 運(yùn)算:  ${100 + 5 }<br/>100 - 5 * 5運(yùn)算:${100 - 5 * 5}<br/>5 / 2運(yùn)算:${5 / 2}<br/>12 % 10運(yùn)算:${12 % 10}<br/>
<hr>

除了 + 運(yùn)算以外,其他的運(yùn)算只能和 number 數(shù)字類型的計(jì)算。
2、比較運(yùn)算符

  • =或者==:判斷兩個值是否相等.
  • !=:判斷兩個值是否不等.
  • >或者gt:判斷左邊值是否大于右邊值
  • >=或者gte:判斷左邊值是否大于等于右邊值
  • <或者lt:判斷左邊值是否小于右邊值
  • <=或者lte:判斷左邊值是否小于等于右邊值

= 和 == 模板代碼

<!DOCTYPE html>
<html>
<head><meta charset="utf-8"><title>Hello World!</title>
</head>
<body><b>比較運(yùn)算符</b><br/><br/><dl><dt> =/== 和 != 比較:</dt><dd><#if "xiaoming" == "xiaoming">字符串的比較 "xiaoming" == "xiaoming"</#if></dd><dd><#if 10 != 100>數(shù)值的比較 10 != 100</#if></dd></dl><dl><dt>其他比較</dt><dd><#if 10 gt 5 >形式一:使用特殊字符比較數(shù)值 10 gt 5</#if></dd><dd><#-- 日期的比較需要通過?date將屬性轉(zhuǎn)為data類型才能進(jìn)行比較 --><#if (date1?date >= date2?date)>形式二:使用括號形式比較時間 date1?date >= date2?date</#if></dd></dl><br/>
<hr>
</body>
</html>

Controller 的 數(shù)據(jù)模型代碼

@GetMapping("operation")
public String testOperation(Model model) {//構(gòu)建 Date 數(shù)據(jù)Date now = new Date();model.addAttribute("date1", now);model.addAttribute("date2", now);return "03-operation";
}

比較運(yùn)算符注意

  • =和!=可以用于字符串、數(shù)值和日期來比較是否相等
  • =和!=兩邊必須是相同類型的值,否則會產(chǎn)生錯誤
  • 字符串 “x” 、"x " 、"X"比較是不等的.因?yàn)镕reeMarker是精確比較
  • 其它的運(yùn)行符可以作用于數(shù)字和日期,但不能作用于字符串
  • 使用gt等字母運(yùn)算符代替>會有更好的效果,因?yàn)?FreeMarker會把>解釋成FTL標(biāo)簽的結(jié)束字符
  • 可以使用括號來避免這種情況,如:<#if (x>y)>
邏輯運(yùn)算符
  • 邏輯與:&&
  • 邏輯或:||
  • 邏輯非:!

邏輯運(yùn)算符只能作用于布爾值,否則將產(chǎn)生錯誤 。

模板代碼

<b>邏輯運(yùn)算符</b><br/><br/><#if (10 lt 12 )&&( 10  gt  5 )  >(10 lt 12 )&&( 10  gt  5 )  顯示為 true</#if><br/><br/><#if !false>false 取反為true</#if>
<hr>
空值處理

1、判斷某變量是否存在使用 “??”

用法為:variable??,如果該變量存在,返回true,否則返回false

例:為防止stus為空報(bào)錯可以加上判斷如下:

    <#if stus??><#list stus as stu>......</#list></#if>

2、缺失變量默認(rèn)值使用 “!”

  • 使用!要以指定一個默認(rèn)值,當(dāng)變量為空時顯示默認(rèn)值
    例: ${name!‘’}表示如果name為空顯示空字符串。

  • 如果是嵌套對象則建議使用()括起來
    例: ${(stu.bestFriend.name)!‘’}表示,如果stu或bestFriend或name為空默認(rèn)顯示空字符串。

http://m.aloenet.com.cn/news/35001.html

相關(guān)文章:

  • 網(wǎng)站建設(shè)費(fèi)經(jīng)營范圍網(wǎng)站建設(shè)找哪家好
  • 上傳網(wǎng)站程序是什么怎么制作自己的網(wǎng)站
  • 做網(wǎng)站要以單位怎樣在百度上建立網(wǎng)站
  • wordpress調(diào)用播放器曹操博客seo
  • 中山自助建站系統(tǒng)外貿(mào)網(wǎng)站建設(shè)公司
  • 論基層門戶網(wǎng)站的建設(shè)微信軟文范例100字
  • 免費(fèi)編程網(wǎng)課seo在線優(yōu)化技術(shù)
  • 上海商城網(wǎng)站建設(shè)搜狐綜合小時報(bào)2022113011
  • 免費(fèi)只做網(wǎng)站2024百度下載
  • 德州市建設(shè)局網(wǎng)站合肥網(wǎng)絡(luò)seo
  • 上海建網(wǎng)站手機(jī)app福州百度首頁優(yōu)化
  • 離石做網(wǎng)站的網(wǎng)絡(luò)公司fba歐美專線
  • 藍(lán)色風(fēng)格網(wǎng)站外鏈發(fā)布軟件
  • 網(wǎng)站軟文標(biāo)題seo查詢 站長之家
  • 有沒有做網(wǎng)站的教程網(wǎng)站收錄查詢代碼
  • 深圳網(wǎng)站建設(shè)代理商哪家網(wǎng)絡(luò)推廣好
  • 外貿(mào)購物網(wǎng)站短視頻如何引流與推廣
  • 做視頻網(wǎng)站怎么掙錢有沒有免費(fèi)的推廣網(wǎng)站
  • 晉江網(wǎng)站建設(shè)公司網(wǎng)絡(luò)營銷推廣方案怎么寫
  • wordpress分詞seo項(xiàng)目培訓(xùn)
  • 百度競價點(diǎn)擊軟件網(wǎng)站seo整站優(yōu)化
  • 微信輔助網(wǎng)站制作論壇排名
  • 免費(fèi)的logo設(shè)計(jì)網(wǎng)站推廣運(yùn)營怎么做
  • 微網(wǎng)站開發(fā)北京關(guān)鍵詞優(yōu)化一年的收費(fèi)標(biāo)準(zhǔn)
  • 東莞網(wǎng)站開發(fā)站長之家網(wǎng)站排行榜
  • 濰坊網(wǎng)站建設(shè)(首選聚搜網(wǎng)絡(luò))cps推廣平臺有哪些
  • wordpress cdn圖片加速常用的seo查詢工具
  • 網(wǎng)站視頻建設(shè)常德論壇網(wǎng)站
  • 購物網(wǎng)站最重要的功能專業(yè)網(wǎng)頁設(shè)計(jì)和網(wǎng)站制作公司
  • 網(wǎng)站查詢域名訪問網(wǎng)絡(luò)營銷渠道建設(shè)方案