Springboot整合freemarker和相应的语法详解

下面是关于SpringBoot整合Freemarker的攻略以及相应的语法详解。

1. SpringBoot整合freemarker的步骤

1.1 引入依赖

在pom.xml中引入相关的依赖:

<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-freemarker</artifactId>
   <version>2.5.1</version>
</dependency>

1.2 配置视图解析器

@Configuration
public class WebMvcConfig implements WebMvcConfigurer {

   @Override
   public void configureViewResolvers(ViewResolverRegistry registry) {
       registry.freeMarker().cache(false);
   }
}

1.3 编写Freemarker模板

在resources目录下创建templates文件夹,编写Freemarker模板,例如:

<!DOCTYPE html>
<html>
<head>
   <meta charset="UTF-8">
   <title>${title}</title>
</head>
<body>
   <h1>${content}</h1>
</body>
</html>

1.4 编写Controller

编写Controller类,通过ModelAndView将数据传递给模板,并指定使用的模板名称,例如:

@Controller
public class IndexController {

   @RequestMapping("/")
   public ModelAndView index() {
       ModelAndView modelAndView = new ModelAndView("index");
       modelAndView.addObject("title", "首页");
       modelAndView.addObject("content", "我是首页内容");
       return modelAndView;
   }
}

1.5 运行项目

运行SpringBoot应用,访问http://localhost:8080/,即可看到效果。

2. Freemarker语法详解

2.1 变量输出

在Freemarker模板中,使用${variableName}来输出变量的值,例如:

<h1>${title}</h1>

2.2 条件判断

使用<#if condition><!--#if-->来进行条件判断,例如:

<#if user.hasLogin>
    <p>欢迎回来,${user.nickname}!</p>
<#else>
    <p>请先<a href="/login">登录</a></p>
</#if>

2.3 循环遍历

使用<#list itemList as item><!--#list-->来进行循环遍历,例如:

<ul>
<#list articles as article>
    <li>${article.title}</li>
</#list>
</ul>

2.4 引用模板

使用<#include "templateName.ftl">来引用其他模板,例如:

<div id="header">
   <#include "header.ftl">
</div>

以上是SpringBoot整合Freemarker以及相应语法的详解。如果您还有其他问题,可以在评论区留言,我会尽快回复的。

示例1:SpringBoot整合Freemarker展示动态列表

1. 引入依赖

在pom.xml中引入相关依赖

<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-freemarker</artifactId>
   <version>2.5.1</version>
</dependency>

<dependency>
   <groupId>com.baomidou</groupId>
   <artifactId>mybatis-plus-boot-starter</artifactId>
   <version>3.4.3.1</version>
</dependency>

<dependency>
   <groupId>com.h2database</groupId>
   <artifactId>h2</artifactId>
   <version>1.4.200</version>
</dependency>

2. 编写Mapper

编写对应的Mapper类:

@Mapper
public interface UserMapper {
    @Select("select * from user")
    List<User> findAll();
}

3. 编写Controller类并注入Mapper

编写Controller类,并将Mapper注入,例如:

@Controller
public class UserController {

   @Autowired
   private UserMapper userMapper;

   @RequestMapping("/users")
   public ModelAndView index() {
       ModelAndView modelAndView = new ModelAndView("users");
       List<User> userList = userMapper.findAll();
       modelAndView.addObject("userList", userList);
       return modelAndView;
   }
}

4. 编写Freemarker模板

在templates文件夹下创建users.ftl,编写Freemarker模板:

<#list userList as user>
   <p>${user.username},${user.age}岁</p>
</#list>

5. 运行项目

运行SpringBoot应用,访问http://localhost:8080/users,即可看到效果。

示例2:SpringBoot整合Freemarker实现表单提交

1. 编写Controller

编写Controller类,并将数据注入,例如:

@Controller
public class FormController {

   @GetMapping("/form")
   public ModelAndView form() {
       ModelAndView modelAndView = new ModelAndView("form");
       modelAndView.addObject("title", "表单提交");
       modelAndView.addObject("genderList", Arrays.asList("男", "女", "保密"));
       return modelAndView;
   }

   @PostMapping("/form")
   public ModelAndView submit(@RequestParam String username,
                              @RequestParam String password,
                              @RequestParam String gender,
                              @RequestParam Integer age) {
       ModelAndView modelAndView = new ModelAndView("form_result");
       modelAndView.addObject("title", "提交成功");
       modelAndView.addObject("username", username);
       modelAndView.addObject("password", password);
       modelAndView.addObject("gender", gender);
       modelAndView.addObject("age", age);
       return modelAndView;
   }
}

2. 编写Freemarker模板

在templates文件夹下创建form.ftl,编写Freemarker模板:

<h1>${title}</h1>
<form action="/form" method="post">
   <p>
       <label>用户名:<input type="text" name="username"></label>
   </p>
   <p>
       <label>密码:<input type="password" name="password"></label>
   </p>
   <p>
       <label>性别:
           <select name="gender">
               <#list genderList as item>
                   <option>${item}</option>
               </#list>
           </select>
       </label>
   </p>
   <p>
       <label>年龄:<input type="number" name="age"></label>
   </p>
   <p>
       <button type="submit">提交</button>
   </p>
</form>

在templates文件夹下创建form_result.ftl,编写Freemarker模板:

<h1>${title}</h1>
<p>用户名:${username}</p>
<p>密码:${password}</p>
<p>性别:${gender}</p>
<p>年龄:${age}</p>

3. 运行项目

运行SpringBoot应用,访问http://localhost:8080/form,填写表单并提交,即可看到效果。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Springboot整合freemarker和相应的语法详解 - Python技术站

(0)
上一篇 2023年5月31日
下一篇 2023年5月31日

相关文章

  • c#中LINQ的基本用法实例

    C#中的LINQ是一种非常强大的查询语言,它可以在集合、数据库以及XML等各种数据源中查询和过滤数据,且具有高效、清晰、易读的特点。下面将针对C#中LINQ的基本用法进行详细讲解,包括如何使用LINQ进行简单的数据查询和过滤。 1. 基本语法 在使用LINQ时,需要使用一些基本的关键字和语法规则,包括: from:指定数据源,如数组、集合、数据库表等。 in…

    html 2023年5月30日
    00
  • CentOS8出现-bash:乱码问题及解决方法

    当在CentOS 8系统中使用终端时,可能会出现命令行界面的乱码问题,这是由于系统默认的字符集不匹配所导致的。这个问题可以通过设置正确的字符集来解决。 以下是解决这个问题的详细步骤: 问题描述 当在终端中输入命令时,可能会看到一些奇奇怪怪的字符,例如: $ -bash: ls: 未找到命令 或者 $ -bash: \nn: 未找到命令 这个问题可能会导致命令…

    html 2023年5月31日
    00
  • XML入门问答

    XML入门问答完整攻略 什么是XML? XML全称为Extensible Markup Language(可扩展标记语言),是一种文本格式化的语言。 XML有哪些特点? 自定义标签 XML与文本格式相同,易于阅读 支持多个语言之间的数据交换 XML有哪些用途? 作为配置文件 作为网络爬虫的数据存储格式 与Web服务配合使用 XML的基础语法格式是什么? XM…

    html 2023年5月30日
    00
  • 抖音怎么发布作品?5步教你玩转抖音

    以下是“抖音怎么发布作品?5步教你玩转抖音”的完整攻略: 抖音怎么发布作品?5步教你玩转抖音 抖音是一款非常流行的短视频应用程序,用户可以在抖音上发布自己的作品,与其他用户分享自己的生活和创意。下面是在抖音上发布作品的具体步骤。 步骤1:打开抖音应用程序 在使用抖音发布作品前,用户需要打开抖音应用程序。用户可以在手机主屏幕或应用程序列表中找到抖音应用程序,然…

    html 2023年5月18日
    00
  • python中ThreadPoolExecutor线程池和ProcessPoolExecutor进程池

    Python中ThreadPoolExecutor线程池和ProcessPoolExecutor进程池 在Python中,线程池和进程池是常用的并发编程工具。它们可以帮助我们更好地利用计算机的多核处理能力,提高程序的执行效率。下面是关于Python中ThreadPoolExecutor线程池和ProcessPoolExecutor进程池的详细讲解。 Thre…

    html 2023年5月18日
    00
  • 前端开发每天必学之HTML入门介绍

    下面让我详细讲解“前端开发每天必学之HTML入门介绍”的完整攻略。 HTML介绍 HTML(Hyper Text Markup Language)是一种标记语言,用于创建网站的内容和结构。通过使用HTML,网站开发人员可以定义页面的标题、段落、图像、链接、表格、列表等元素。 HTML基础语法 HTML使用标记标签来创建页面,格式如下: <tagname…

    html 2023年5月30日
    00
  • 抖音无人直播带货怎么操作

    以下是“抖音无人直播带货怎么操作”的完整攻略: 抖音无人直播带货怎么操作? 抖音无人直播带货是一种新型的电商模式,可以让商家在不需要实时直播的情况下,通过提前录制视频并设置定时播放,实现商品的展示和销售。以下是一些操作步骤和攻略。 步骤1:开通无人直播带货功能 在使用抖音无人直播带货之前,需要先开通该功能。以下是一些开通无人直播带货功能的方法: 打开抖音AP…

    html 2023年5月18日
    00
  • C#导航器Xpath与XPathNavigator类

    C#导航器Xpath与XPathNavigator类 什么是XPath? XPath是一种用来在XML文档中查找信息的语言,XPath的基本语法很简单,但是可以很方便的从文档中查找我们想要的内容,并且这种语言的查询方式是与平台和编程语言无关的。 XpathNavigator类的作用 XpathNavigator类用来实现XPath查询,可以在XML文档中定位…

    html 2023年5月30日
    00
合作推广
合作推广
分享本页
返回顶部