SpringBoot整合FreeMarker(十一)

简介: SpringBoot整合FreeMarker(十一)

SpringBoot 整合 FreeMarker


按照 SpringBoot 整合 BootStrap 的Maven方式创建相应的项目。


将模板 ftl 文件放置在 resources/templates 目录下


fd16d4a85cde453782e134ba8ad01670.png


一. 一 pom.xml 添加相应的依赖


 <!--引入 spring-boot-starter-freemarker的依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-freemarker</artifactId>
        </dependency>
        <!--添加一个webjar jquery-->
        <dependency>
            <groupId>org.webjars</groupId>
            <artifactId>jquery</artifactId>
            <version>3.5.1</version>
        </dependency>
        <!--引入bootstrap-->
        <dependency>
            <groupId>org.webjars</groupId>
            <artifactId>bootstrap</artifactId>
            <version>3.4.1</version>
        </dependency>


一.二 application.yml 配置文件中配置 FreeMarker的相关信息


# 引入 数据库的相关配置
spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/springboot?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=UTF-8&useSSL=false&allowMultiQueries=true
    username: root
    password: abc123
    type: com.alibaba.druid.pool.DruidDataSource
  # 配置freemark的相关的信息
  freemarker:
    # 设置文件的路径,对应的是 directoryForTemplateLoading 属性
    # 关闭缓存,及时进行刷新。 上线生产环境,需要改成 true
    cache: false
    # 设置编码的样式
    charset: UTF-8
    #是否检查模板的位置
    check-template-location: false
    # 模板的样式
    content-type: text/html
    # 是否曝露
    expose-request-attributes: true
    expose-session-attributes: true
    request-context-attribute: request
    # 后缀
    suffix: .ftl
    template-loader-path: classpath:/templates/


一.三 配置资源映射


@Configuration
public class WebConfig extends WebMvcConfigurerAdapter {
    /**
     * 配置静态的资源信息
     * @param registry
     */
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("doc.html").addResourceLocations("classpath:/META-INF/resources/");
        registry.addResourceHandler("swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/");
        //映射 static 目录
        registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/");
        //放置其他 业务页面资源
        registry.addResourceHandler("/**").addResourceLocations("classpath:/templates/");
    }
}


一.四 静态资源 index.ftl


放置在 resources/templates 目录下


用的是 webjars 的 bootstrap 的样式。


<html>
<head>
    <title>Welcome ${web} </title>
    <link rel="StyleSheet" href="webjars/bootstrap/3.4.1/css/bootstrap.css" type="text/css">
</head>
<body>
<h1>Welcome ${user}!</h1>
<p>Girl:
    <a href="${info.url}">${info.name}</a>!
<table class="table table-hover">
    <th><td>id编号</td>
    <td>名称</td>
    <td>年龄</td>
    <td>性别</td>
    <td>描述</td>
    </th>
    <#if userList??>
        <#list userList as u>
            <tr><td>${u.id}</td>
                <td>${u.name}</td>
                <td>${u.age}</td>
                <td><#if u.sex==1>男<#else>女</#if></td>
                <td>${u.description}</td>
            </tr>
        </#list>
    <#-- 如果为空的话, #else 表示为空的意义-->
    <#else>
        <tr>
            没有数据
        </tr>
    </#if>
</table>
<script type="text/javascript" src="webjars/jquery/3.5.1/jquery.js"></script>
<script type="text/javascript" src="webjars/bootstrap/3.4.1/js/bootstrap.js"></script>
</body>
</html>


一.五 InfoController 类


老蝴蝶这儿只列举一个简单的查询的方法


@Controller
public class InfoController {
    @RequestMapping("/index")
    public String info(Model model){
        model.addAttribute("web","FreeMarker展示信息");
        model.addAttribute("user","两个蝴蝶飞");
        Map<String,Object> info=new HashMap<>();
        info.put("url","www.yueshushu.top");
        info.put("name","周小欢");
        model.addAttribute("info",info);
        model.addAttribute("userList",getUserList());
        return "index";
    }
    // 不采用数据库查询的方法
    private List<User> getUserList() {
        List<User> userList=new ArrayList<>();
        for(int i=1;i<=10;i++){
            User user=new User();
            user.setId(i);
            user.setName("蝴蝶"+i);
            user.setAge(i*3+1);
            user.setSex(i%2);
            user.setDescription("一个简单的描述");
            userList.add(user);
        }
        return userList;
    }
}


一.六 输入网址,进行访问


http://localhost:8081/FreeMarker/index


038ae20728414ac7aea36ba74302e8fe.png


SpringBoot整合 FreeMarker 模板,整合成功。


本章节的代码放置在 github 上:


https://github.com/yuejianli/springboot/tree/develop/Springboot_FreeMarker


谢谢您的观看,如果喜欢,请关注我,再次感谢 !!!

相关文章
|
Java Maven
springboot项目--freemarker使用ftl模板文件动态生成图片
springboot项目--freemarker使用ftl模板文件动态生成图片
1613 0
|
缓存 自然语言处理 Java
详解FreeMarker Template:在Spring Boot中实现动态内容生成
详解FreeMarker Template:在Spring Boot中实现动态内容生成
2244 13
|
缓存 Java 程序员
Java|SpringBoot 项目开发时,让 FreeMarker 文件编辑后自动更新
在开发过程中,FreeMarker 文件编辑后,每次都需要重启应用才能看到效果,效率非常低下。通过一些配置后,可以让它们免重启自动更新。
311 0
|
消息中间件 Java Kafka
Spring Boot与模板引擎:整合Thymeleaf和FreeMarker,打造现代化Web应用
【8月更文挑战第29天】这段内容介绍了在分布式系统中起到异步通信与解耦作用的消息队列,并详细探讨了三种流行的消息队列产品:RabbitMQ、RocketMQ 和 Kafka。RabbitMQ 是一个基于 AMQP 协议的开源消息队列系统,支持多种消息模型,具有高可靠性及稳定性;RocketMQ 则是由阿里巴巴开源的高性能分布式消息队列,支持事务消息等多种特性;而 Kafka 是 LinkedIn 开源的分布式流处理平台,以其高吞吐量和良好的可扩展性著称。文中还提供了使用这三种消息队列产品的示例代码。
150 0
|
XML 前端开发 Java
Springboot整合freemarker
Springboot整合freemarker
599 0
|
XML JavaScript 前端开发
SpringBoot整合Freemarker使用
SpringBoot整合Freemarker使用
181 0
|
数据采集 XML 缓存
【Java】SpringBoot项目整合FreeMarker加快页面访问速度
【Java】SpringBoot项目整合FreeMarker加快页面访问速度
431 0
|
Java
Java:SpringBoot 整合 Freemarker模板引擎渲染html
Java:SpringBoot 整合 Freemarker模板引擎渲染html
478 0
Java:SpringBoot 整合 Freemarker模板引擎渲染html
|
XML JavaScript 前端开发
SpringBoot整合Freemarker使用
SpringBoot整合Freemarker使用
271 0
|
Java Maven
springboot使用freemarker的入门Demo
1.创建一个maven web项目 2.添加所需要的依赖