关键词

Springboot整合Freemarker的实现详细过程

下面我将详细讲解Spring Boot整合Freemarker的实现过程。

一、添加Freemarker依赖

首先,在项目的pom.xml文件中添加Freemarker的依赖:

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

二、配置Freemarker配置类

接下来,我们需要创建一个配置Freemarker的配置类。可以使用以下代码:

@Configuration
public class FreemarkerConfig {

    @Autowired
    private ApplicationContext applicationContext;

    @Bean
    public FreemarkerViewResolver freemarkerViewResolver() {
        FreemarkerViewResolver resolver = new FreemarkerViewResolver();
        resolver.setPrefix("");
        resolver.setSuffix(".ftl");
        resolver.setContentType("text/html;charset=UTF-8");
        resolver.setExposeRequestAttributes(true);
        resolver.setExposeSessionAttributes(true);
        resolver.setRequestContextAttribute("request");
        resolver.setCache(false);
        resolver.setOrder(1);
        Properties properties = new Properties();
        properties.setProperty("template_update_delay", "0");
        properties.setProperty("default_encoding", "UTF-8");
        properties.setProperty("number_format", "0.##########");
        properties.setProperty("datetime_format", "yyyy-MM-dd HH:mm:ss");
        properties.setProperty("classic_compatible", "true");
        properties.setProperty("template_exception_handler", "ignore");
        properties.setProperty("locale", "zh_CN");
        resolver.setAttributes(properties);
        return resolver;
    }

    @Bean
    public FreeMarkerConfigurer freeMarkerConfigurer() {
        FreeMarkerConfigurer configurer = new FreeMarkerConfigurer();
        configurer.setTemplateLoaderPath("classpath:/templates");
        configurer.setDefaultEncoding("UTF-8");
        Properties properties = new Properties();
        properties.setProperty("default_encoding", "UTF-8");
        properties.setProperty("number_format", "0.##########");
        properties.setProperty("datetime_format", "yyyy-MM-dd HH:mm:ss");
        properties.setProperty("classic_compatible", "true");
        properties.setProperty("template_exception_handler", "ignore");
        properties.setProperty("locale", "zh_CN");
        configurer.setFreemarkerSettings(properties);
        configurer.setPreferFileSystemAccess(false);
        configurer.setResourceLoader(applicationContext);
        return configurer;
    }

}

在上述代码中,我们创建了一个FreemarkerViewResolver对象和一个FreeMarkerConfigurer对象。其中,FreemarkerViewResolver用于配置Freemarker视图解析器,而FreeMarkerConfigurer用于配置Freemarker的配置信息。

三、创建Freemarker视图

在Freemarker视图中,我们可以使用Freemarker模板语言定义HTML页面的内容。下面是一个简单的例子:

<!DOCTYPE html>
<html>
    <head>
        <title>Welcome to SpringBoot and Freemarker</title>
    </head>
    <body>
        <h1>Welcome to SpringBoot and Freemarker</h1>
        <p>${name}</p>
    </body>
</html>

你可以使用Freemarker模板语言替换${name}这个变量的值。例如,在Java代码中设置name的值为"SpringBoot"

@Controller
public class HelloController {

    @GetMapping("/hello")
    public String hello(Map<String, Object> model) {
        model.put("name", "SpringBoot");
        return "hello";
    }

}

四、运行SpringBoot应用程序

最后,我们需要运行Spring Boot应用程序来查看结果。可以使用以下命令来启动应用程序:

mvn spring-boot:run

接下来可以通过浏览器访问http://localhost:8080/hello,就能看到你编写的Freemarker视图已经成功地被渲染出来了。

五、其他示例

下面是一个包含表单的示例,其中演示了如何将表单的数据传递给Freemarker视图:

@Controller
public class UserController {

    @GetMapping("/user")
    public String user(User user) {
        return "user";
    }

    @PostMapping("/user")
    public String addUser(User user, Map<String, Object> model) {
        model.put("user", user);
        return "result";
    }

}

在该示例中,我们使用了@GetMapping@PostMapping注解来处理GET和POST请求。在GET请求时,我们返回用于创建用户的表单视图;在POST请求时,我们将通过表单提交的用户数据添加到模型中,并返回查询结果的视图。

下面是user.ftl表单视图的内容:

<!DOCTYPE html>
<html>
    <head>
        <title>User Form</title>
    </head>
    <body>
        <h1>User Form</h1>
        <form action="/user" method="post">
            <table>
                <tr>
                    <td>Name:</td>
                    <td><input type="text" name="name"></td>
                </tr>
                <tr>
                    <td>Email:</td>
                    <td><input type="email" name="email"></td>
                </tr>
                <tr>
                    <td>Phone:</td>
                    <td><input type="text" name="phone"></td>
                </tr>
                <tr>
                    <td colspan="2"><input type="submit" value="Submit"></td>
                </tr>
            </table>
        </form>
    </body>
</html>

下面是result.ftl查询结果的视图:

<!DOCTYPE html>
<html>
  <head>
    <title>User Result</title>
  </head>
  <body>
    <h1>User Result</h1>
    <table>
      <tr>
        <td>Name:</td>
        <td>${user.name}</td>
      </tr>
      <tr>
        <td>Email:</td>
        <td>${user.email}</td>
      </tr>
      <tr>
        <td>Phone:</td>
        <td>${user.phone}</td>
      </tr>
    </table>
  </body>
</html>

在这里,我们使用${user.name}${user.email}${user.phone}语法显示用户提交表单的结果。

希望这些示例能够帮助你更好地了解如何使用Spring Boot整合Freemarker。

本文链接:http://task.lmcjl.com/news/8070.html

展开阅读全文