目录
1、entity、Mapper.java、Mapper.xml、biz、Controller
3、jsp中是有分页标签 ——> freemarker中的分页条展示问题,以及分页功能
一、Freemarker入门
SpringBoot默认是不推荐使用jsp的,本身就是向前端推送数据。
学习网址: http://freemarker.foofun.cn/
项目创建如下:
六个组件 —
生成后相关配置稍作调整
yml文件:
mybatis:
mapper-locations: classpath:mappers/*xml
type-aliases-package: com.ycx.spboot04.mybatis.model
server:
port: 8080
spring:
application:
name: spboot04
datasource:
driver-class-name: com.mysql.jdbc.Driver
name: defaultDataSource
password: 123456
url: jdbc:mysql://localhost:3306/yjy?useUnicode=true&characterEncoding=UTF-8
username: root
freemarker:
cache: false
charset: utf-8
expose-request-attributes: true
expose-session-attributes: true
suffix: .ftl
template-loader-path: classpath:/templates/
# resources:
# static-locations: classpath:/static/# 应用服务 WEB 访问端口
mvc:
static-path-pattern: classpath:/static/
接着:
index.ftl
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
欢迎来到 Freemarker首页!
</body>
</html>
controllerIndexController :
package com.ycx.spboot04.contrller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
/**
* @author 杨总
* @create 2022-11-02 1:12
*/
@Controller
@RequestMapping
public class IndexController {
@RequestMapping("/")
public String index(){
System.out.println("come in...");
return "index";
}
}
测试:
二、Freemarker的基本语法
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<h2>1.取值</h2>
<h3>1.1. 提供默认值</h3>
<#--报错-->
<#--${uname} -->
<#--不报错,但是页面无内容-->
<#--${uname !}-->
<#--给值设置一个默认值-->
${uname! '无名'}
<h3>1.2. 对null值先进行判断</h3>
<p>1)exists用在逻辑判断;</p>
<#if uname?exists>
${uname}
</#if>
<br>
<p>2)??是判断对象是否为空</p>
<#if uname??>
${uname}
</#if>
<br>
<p>3)if_exists用来打印东西</p>
${uname?if_exists}
<br>
<h3>2.条件</h3>
<#if sex=='nv'>
女
<#elseif sex='nan'>
男
<#else>
未知
</#if>
<br>
<h3>3.循环</h3>
<p>1)取出数组中的元素</p>
<#list arr as a>
${a}==
</#list>
<br>
<p>2)取出集合中的对象(注:访问的类要被public所修饰)</p>
<#list lst as item>
${item.id} : ${item.name} <br>
</#list>
<h3>4 include</h3>
<#include "/common.ftl" >
<h3>5 局部变量(assign)/全局变量(global)</h3>
${ctx}:${ctx2}
</body>
</html>
common.ftl
<#assign ctx>
${springMacroRequestContext.contextPath}
</#assign>
<#global ctx2>
${springMacroRequestContext.contextPath}
</#global>
IndexController :
package com.ycx.spboot04.controller;
import com.ycx.spboot04.entity.User;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import java.util.ArrayList;
import java.util.List;
/**
* @author杨总
*
*/
@Controller
public class IndexController {
@GetMapping("/")
public String index(Model model) {
System.out.println("come in............");
model.addAttribute("uname", "小刘");
model.addAttribute("sex", "girl");
List<User> lst = new ArrayList<>();
lst.add(new User(1, "zs"));
lst.add(new User(2, "ls"));
lst.add(new User(3, "ww"));
model.addAttribute("lst",lst);
model.addAttribute("arr", new Integer[]{5, 6, 7, 8, 9});
return "index";
}
}
三、Freemarker综合案例
利用Freemarker完成基本的增删改查,参照之前ssm项目进行改造
实现步骤:
1、entity、Mapper.java、Mapper.xml、biz、Controller
2、jsp——>freemarker
3、jsp中是有分页标签<z:page pagebean="${pagebean}"/> ——> freemarker中的分页条展示问题,以及分页功能
4、整合aop PageHelper插件
后端处理:
SpringBoot aop整合分页,添加配置如下:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
<version>5.0.2.RELEASE</version>
</dependency>
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.2.3</version>
</dependency>
完整版依赖:
<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.ycx</groupId>
<artifactId>spboot04</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>spboot04</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<spring-boot.version>2.3.7.RELEASE</s