Springboot如何整合FreeMarker
发表于:2025-01-20 作者:千家信息网编辑
千家信息网最后更新 2025年01月20日,这篇文章将为大家详细讲解有关Springboot如何整合FreeMarker,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、项目搭建1、新建模块2、导入依赖 :将
千家信息网最后更新 2025年01月20日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安全错误
数据库的锁怎样保障安全
sql数据库数据内容查看器
网站运维 服务器安全
网络安全渗透工程师学什么
3g网络安全
网络安全的就业策划书800字
工业软件开发入口
戴尔710服务器安装ghost
江苏服务器电源厂家哪家好
金融数据库的选择
杨浦区会计网络技术欢迎咨询
计算机网络技术应用ppt课件
软件开发招商的内容
湖北电脑软件开发费用是多少
主题为网络安全的征文
锐捷网络安全设备和思科哪个好
计算机网络技术仲恺
在数据库的安全性控制
虚拟机共享ip和服务器独立ip
网易会取消ice服务器吗
无尽贪婪和等价交换服务器
火车票 服务器
我的世界服务器一直无法连接
常熟公安局网络安全大队
软件开发编码过程能力
祁阳广东软件开发哪家好
奉贤区防水网络技术多少钱
高中网络技术应用教学计划表知道
租用华为云和数据库
魔兽裁缝数据库
佟年世界网络安全大赛排行