千家信息网

Springboot如何整合FreeMarker

发表于:2025-11-18 作者:千家信息网编辑
千家信息网最后更新 2025年11月18日,这篇文章将为大家详细讲解有关Springboot如何整合FreeMarker,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、项目搭建1、新建模块2、导入依赖 :将
千家信息网最后更新 2025年11月18日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 Map ms;     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 {     List findPager(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 List findPager(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安全错误 数据库的锁怎样保障安全 台州天台县企业软件开发 阿拉德之怒怎么开服务器 服务器可以搭建gost隧道中转 石家庄软件开发机构 一个网站绑定多个数据库 手机连接服务器吗 联盟新手选哪个服务器 服务器安全组怎么开英文 政务中心软件开发公司 上海网络安全培训东塔特训营 医疗器械经网络安全 网络安全 竞赛规则 网络安全宣传周活动工作小组 目前学习哪些网络技术有前途 软件开发外派人员还需要面试吗 互联网科技公司是做些什么工作的 淘宝里的软件开发都能做什么 多人协作软件开发环境 幼儿园网络安全教育内容文案 云数据库架构安全吗 六年级关于网络安全的手抄报 手机连接服务器吗 若依框架数据库设计 软件开发代码要求 江苏浪潮服务器虚拟化价格 互联网跳银行科技岗难不难 网络安全专业在山东的好大学 大兴区软件开发售后保障 千支网络技术有限公司 网络技术备付金
0