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日

相关文章

  • vscode怎么导入图片? vscode把图片放进程序的技巧

    以下是关于VSCode导入图片的详细攻略: VSCode如何导入图片? 在VSCode中打开您的项目文件夹。 在项目文件夹中创建一个名为“images”的文件夹,用于存放您的图片。 将您的图片文件拖放到“images”文件夹中。 在您的HTML或CSS文件中,使用相对路径引用您的图片文件。例如,如果您的图片文件名为“example.jpg”,则可以使用以下代…

    html 2023年5月17日
    00
  • ps怎么拼心形图片? ps合成心形图片的技巧

    以下是“ps怎么拼心形图片? ps合成心形图片的技巧”的完整攻略: ps怎么拼心形图片? ps合成心形图片的技巧 Adobe Photoshop(简称PS)是一款非常流行的图像处理软件,用户可以使用PS合成心形图片。下面是一些PS合成心形图片的技巧,可以帮助用户设计出高质量的心形图片。 技巧1:使用“形状工具”绘制心形 用户可以使用PS中的“形状工具”绘制心…

    html 2023年5月18日
    00
  • idea中使用Inputstream流导致中文乱码解决方法

    当我们在使用Java的InputStream流读取文件时,如果文件中含有中文字符,有时候会出现中文字符乱码的问题。其中一个常见的情况是使用idea开发工具进行开发时,读取中文文件内容会出现乱码。这里介绍两种解决方法。 方法一:使用BufferedReader进行流读取 BufferedReader是 java.io 包中一个读取字符流的处理类,使用该类可以避…

    html 2023年5月31日
    00
  • Z170主板怎么安装win7?Z170主板完美安装Win7系统教程

    重启电脑后打开VMware提示该虚拟机似乎正在使用中该怎么办?完整攻略 VMware是一款虚拟机软件,它允许您在一台计算机上运行多个操作系统。有时,当您重启计算机并尝试打开虚拟机时,VMware会提示该虚拟机似乎正在使用中。以下是解决此问题的详细攻略: 步骤1:关闭VMware 关闭虚拟机中的所有操作系统。 关闭VMware。 步骤2:删除锁定文件 打开虚拟…

    html 2023年5月17日
    00
  • C#/VB.NET实现HTML转为XML的示例代码

    首先要说明的是 HTML 是一种标记语言,它并不是像 XML 那样具有严格的格式和规范。因此,将 HTML 转换为 XML 可以使我们更好地管理和利用 HTML 的信息。 一般来说,将 HTML 转换为 XML 可以通过以下几个步骤实现: 读取 HTML 文件。 使用正则表达式或其他方法提取 HTML 中的标签和属性。 将提取到的标签和属性转换为 XML 标…

    html 2023年5月30日
    00
  • Android高级xml布局之输入框EditText设计

    当我们在Android应用程序开发中设计界面时,输入框(EditText)是经常用到的控件之一。EditText可以让用户在应用程序中输入文本、数字、邮箱等。如何设计好EditText控件,让用户在我们的应用程序中可以更加方便地输入内容呢?下面就是关于Android高级xml布局之输入框EditText设计的完整攻略。 设置EditText的属性 输入类型 …

    html 2023年5月30日
    00
  • mybatis plus框架@TableField注解不生效问题及解决方案

    问题描述: 在使用Mybatis Plus框架时,我们通常会使用@TableField注解来标识实体类的成员变量与数据库表字段的映射关系。但是,有时在实际使用中可能会遇到@TableField注解不生效的问题。例如,我们定义如下的实体类: @Data public class User { @TableId(type = IdType.AUTO) priva…

    html 2023年5月30日
    00
  • logback 配置详解(推荐)

    下面我来详细讲解 “logback 配置详解(推荐)” 的完整攻略。 1. logback 是什么? logback 是 Java 世界中广泛使用的日志框架,由 Ceki Gülcü 开发,是 log4j 日志框架的改进版。它支持多种输出方式,具有高效、稳定、高度可配置化等优点,已经在很多大型的 Java 项目中得到应用。 2. logback 的配置方式 …

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