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日

相关文章

  • Java web xml文件读取解析方式

    针对“Java web xml文件读取解析方式”,我们可以通过以下几个步骤来实现: 创建一个XML解析器 Java中提供了多种XML解析器工具,如DOM(Document Object Model)解析器、SAX(Simple API for XML)解析器等,我们在这里使用DOM解析器来完成解析操作。 为了使用DOM解析器,我们首先需要添加相应的依赖。以M…

    html 2023年5月30日
    00
  • JSP学习笔记之基础语法

    下面我将为您详细讲解 “JSP学习笔记之基础语法”的完整攻略。 一、概述 JSP(Java Server Pages)是一种基于 Java 技术,用于开发动态 Web 网页的服务器端脚本语言。它可以将 Java 代码嵌入到 HTML 页面中,实现 Web 页面的动态效果,使得页面可以根据用户的请求动态改变。JSP 技术是在传统 CGI(Common Gate…

    html 2023年5月30日
    00
  • PHP XML操作类DOMDocument

    当涉及到在PHP中处理XML文档时,DOMDocument是一种非常强大的类。DOMDocument类允许您在XML文档的树形结构中操作元素,节点和文本。下面是DOMDocument类的详细攻略,包括创建DOMDocument对象、添加子元素、读取/修改元素值、删除元素等操作。 创建DOMDocument对象 要在PHP中操作XML文档,需要首先创建DOMD…

    html 2023年5月30日
    00
  • win10 2004卡在重启界面进不去怎么办 电脑停留在启动界面的解决方法

    以下是“win10 2004卡在重启界面进不去怎么办 电脑停留在启动界面的解决方法”的完整攻略: win10 2004卡在重启界面进不去怎么办 电脑停留在启动界面的解决方法 如果您的电脑在重启界面卡住了,无法进入系统,您可以按照以下步骤进行操作: 检查硬件设备:首先,您需要检查电脑的硬件设备是否正常。您可以检查电脑的硬盘、内存、显卡等设备是否正常连接。如果有…

    html 2023年5月18日
    00
  • HTML注释的写法(附带示例)

    HTML注释是一种特殊的语法,它通常被用于在HTML文档中注释一些内容。在网页开发中,注释是一种非常有用的方式,可以让其他的开发者和自己更好地理解文档结构,也方便我们在调试代码时做一些标注。 以下是HTML注释的写法和示例: 注释单行内容 注释单行内容的方法是在要注释的内容前加上“”符号。注意,注释符号中间不要加空格。 <p>这是一个段落<…

    Web开发基础 2023年3月15日
    00
  • Spring 面向切面编程AOP实现详解

    Spring 面向切面编程AOP实现详解 什么是AOP AOP(Aspect Oriented Programming)即面向切面编程,是一种编程思想,它把程序的业务逻辑和系统内部的非业务逻辑分离开来,以便更好地重用两部分逻辑,提高代码的灵活性和可维护性。 AOP的实现方式 AOP有多种实现方式,包括基于继承的方式、基于代理的方式等,但Spring框架采用的…

    html 2023年5月30日
    00
  • ajax中文乱码的各种解决办法总结

    标题: Ajax中文乱码的各种解决办法总结 正文:在使用Ajax进行数据交互过程中,有时候会遇到中文乱码的问题。这种情况通常是由于字符集不统一或编码格式不正确引起的。本文将为大家总结几种解决Ajax中文乱码问题的常见方法。 1、在服务端指定字符集 在服务端脚本中指定正确的字符集可以避免中文乱码问题。常见示例如下: header(‘Content-type:t…

    html 2023年5月31日
    00
  • 详解HTML中table表格的frame和rules属性

    下面是关于HTML中table表格的frame和rules属性的详细讲解。 HTML中table表格的frame和rules属性 在HTML中,我们可以使用<table>标签来创建表格。而在创建表格的时候,常常会涉及到表格的边框和边框线的显示问题。这时,我们就需要用到HTML中table表格的frame和rules属性。 frame属性 fram…

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