下面我将详细讲解Spring Boot整合Freemarker的实现过程。
首先,在项目的pom.xml文件中添加Freemarker的依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>
接下来,我们需要创建一个配置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模板语言定义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";
}
}
最后,我们需要运行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