Springboot如何整合FreeMarker
发表于:2025-02-22 作者:千家信息网编辑
千家信息网最后更新 2025年02月22日,这篇文章将为大家详细讲解有关Springboot如何整合FreeMarker,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、项目搭建1、新建模块2、导入依赖 :将
千家信息网最后更新 2025年02月22日Springboot如何整合FreeMarker
这篇文章将为大家详细讲解有关Springboot如何整合FreeMarker,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
一、项目搭建
1、新建模块
2、导入依赖 :将不相关的依赖删掉
tk.mybatis mapper-spring-boot-starter 2.0.2 javax.persistence persistence-api 1.0 compile
3、新建软件包,放入student实体类
package com.lv.code.pojo; import lombok.AllArgsConstructor;import lombok.Data;import lombok.NoArgsConstructor;import lombok.experimental.Accessors; /** * 学生表 student * @author hgh * @date 2022-01-21T13:35:43.912 */@Data@NoArgsConstructor@AllArgsConstructor@Accessors(chain = true)public class Student { /** * 学生编号 主键 自增 */ private Long stuId; /** * 学生名字 */ private String stuName; /** * 学生电话 */ private String stuPhone; /** * 学生班级 */ private Long stuClass; /** * 学生地址 */ private String stuAddress;}
4、新建StudentMapper接口
package com.lv.code.mapper; import com.lv.code.pojo.Student;import org.springframework.stereotype.Repository;import tk.mybatis.mapper.common.Mapper; @Repositorypublic interface StudentMapper extends Mapper{ }
5、Springboot04Application内引用mapper
package com.lv.code; import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import tk.mybatis.spring.annotation.MapperScan; @SpringBootApplication@MapperScan("com.lv.code.mapper")public class Springboot04Application { public static void main(String[] args) { SpringApplication.run(Springboot04Application.class, args); } }
6、application.yml文件配置
server: port: 8080# 配置数据源spring: datasource: username: root password: 123456 driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/aaa?userSSL=false&serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&allowPublicKeyRetrieval=true# 日志打印logging: level: com.lv.code.mapper: debug
7、测试
Springboot04ApplicationTests:
package com.lv.code; import com.lv.code.mapper.StudentMapper;import org.junit.jupiter.api.Test;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.boot.test.context.SpringBootTest; @SpringBootTestclass Springboot04ApplicationTests { @Autowired StudentMapper mapper; @Test void contextLoads() { System.out.println(mapper.selectAll()); } }
8、将切面、util包、启动器导入
导入依赖
org.springframework.boot spring-boot-starter-aop com.github.pagehelper pagehelper-spring-boot-starter 1.2.10
切面PageAspect:
package com.lv.code.aspect; import com.github.pagehelper.Page;import com.github.pagehelper.PageHelper;import com.github.pagehelper.PageInfo;import com.lv.code.util.PageBean;import lombok.extern.slf4j.Slf4j;import org.aspectj.lang.ProceedingJoinPoint;import org.aspectj.lang.annotation.Around;import org.aspectj.lang.annotation.Aspect;import org.springframework.stereotype.Component; /** * @author yk */@Component@Aspect@Slf4jpublic class PageAspect { @Around(value = "execution(* *..*Service.*Pager(..))") public Object invoke(ProceedingJoinPoint point) throws Throwable { PageBean pageBean = null; for (Object e : point.getArgs()) { if (e instanceof PageBean) { pageBean = (PageBean) e; break; } } if (pageBean != null && pageBean.isPagination()) { PageHelper.startPage(pageBean.getPage(), pageBean.getRows()); } Object obj = point.proceed(point.getArgs()); if (obj != null) { if (obj instanceof Page) { Page page = (Page) obj; PageInfo pageInfo = new PageInfo(page); pageBean.setTotal(new Long(pageInfo.getTotal()).intValue()); return pageInfo.getList(); } } return obj; } }
util包中的PageBean类
package com.lv.code.util; import lombok.AllArgsConstructor;import lombok.Data;import lombok.NoArgsConstructor; import javax.servlet.http.HttpServletRequest;import java.util.Map; /** * @author 银喾 */@Data@NoArgsConstructor@AllArgsConstructorpublic class PageBean { private int total; private int page = 1; private int rows = 5; private boolean pagination = true; private String url; private Mapms; public void setMs(Map ms) { this.ms = ms; } public int calcStartIndex() { return (page - 1) * rows; } public int calcMaxPage() { return total % rows == 0 ? total / rows : total / rows + 1; } public int nextPage() { return Math.min(page + 1, calcMaxPage()); } public int prevPage() { return Math.max(page - 1, 1); } public void setRequest(HttpServletRequest req) { setUrl(req.getRequestURL().toString()); setMs(req.getParameterMap()); String page = req.getParameter("page"); if (page == null) { setPage(1); } else { setPage(Integer.parseInt(page)); } String rows = req.getParameter("rows"); if (rows == null) { setRows(5); } else { setRows(Integer.parseInt(rows)); } String pagination = req.getParameter("pagination"); if ("false".equals(pagination)) { setPagination(false); } } }
9、新建service层
新建StudentService接口:
package com.lv.code.service; import com.lv.code.pojo.Student;import com.lv.code.util.PageBean; import java.util.List; public interface StudentService { ListfindPager(PageBean pageBean); }
实现StudentService接口:StudentServiceImpl
package com.lv.code.service; import com.lv.code.mapper.StudentMapper;import com.lv.code.pojo.Student;import com.lv.code.util.PageBean;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service; import java.util.List; @Servicepublic class StudentServiceImpl implements StudentService { @Autowired private StudentMapper mapper; @Override public ListfindPager(PageBean pageBean) { return mapper.selectAll(); }}
10、新建controller层
StudentController类:
package com.lv.code.controller; import com.github.pagehelper.PageRowBounds;import com.lv.code.service.StudentService;import com.lv.code.util.PageBean;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RestController; import javax.servlet.http.HttpServletRequest; @RestControllerpublic class StudentController { @Autowired private StudentService service; @GetMapping public Object find(HttpServletRequest request){ PageBean pageBean=new PageBean(); pageBean.setRequest(request); return service.findPager(pageBean); } }
11、运行启动类Springboot04Application,访问localhost:8080网址
二、freemarker介绍
1、新建资源文件application.yml
更改配置文件,添加freemarker配置
server: port: 8080# 配置数据源spring: datasource: username: root password: 123456 driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/aaa?userSSL=false&serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&allowPublicKeyRetrieval=true freemarker: #指定HttpServletRequest的属性是否可以覆盖controller的model的同名项 allow-request-override: false #req访问request request-context-attribute: req #后缀名freemarker默认后缀为.ftl,当然你也可以改成自己习惯的.html suffix: .ftl #设置响应的内容类型 content-type: text/html;charset=utf-8 #是否允许mvc使用freemarker enabled: true #是否开启template caching cache: false #设定模板的加载路径,多个以逗号分隔,默认: [ "classpath:/templates/" ] template-loader-path: classpath:/templates/ #设定Template的编码 charset: UTF-8# 日志打印logging: level: com.lv.code.mapper: debug
2、模板语法
3、在资源文件中的templates文件下新建index.ftl文件
增加模块:
然后可选中freemarker直接生成ftl文件
关于"Springboot如何整合FreeMarker"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。
文件
学生
配置
接口
篇文章
整合
内容
切面
后缀
数据
数据源
日志
更多
模块
模板
资源
不错
实用
名字
启动器
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
深圳应用软件开发方案
软件开发工具的性能指标有
狂野飙车9服务器是互通的吗
nodejs服务器搭建
无锡涡是网络技术有限公司
警校网络安全与监察专业
植物大战僵尸2服务器打不开了
软件开发提测质量不过关
公安网络安全自检自查
数据库系统的组成架构图
万方数据库技术流视频
sql创建数据库的命令是
社保网络安全宣传方案
柳州 亿天网络技术支持
网络安全四种攻击方式
大理长期回收服务器
北京市小米科技互联网公司位置
数据库判断触发器
gis转cad数据库
孤岛惊魂6联机服务器
福建pdu服务器电源制造厂
实时渲染软件开发
达梦数据库读取BIT类型
首届厦门青少年网络安全
正风肃纪网络安全
将修改的信息录入数据库
计算机网络技术学的数学难吗
上海一站式软件开发教程
丽水桌面软件开发亿连信
云服务器资讯购买费用