当前位置:首页 > Java

java 如何配置模板

2026-03-22 17:25:16Java

配置模板的常用方法

在Java中配置模板通常涉及模板引擎的使用,例如Thymeleaf、FreeMarker或Velocity。以下是几种常见模板引擎的配置方法。

Thymeleaf配置

添加Maven依赖:

<dependency>
    <groupId>org.thymeleaf</groupId>
    <artifactId>thymeleaf</artifactId>
    <version>3.1.2.RELEASE</version>
</dependency>

配置Spring Boot的Thymeleaf:

@Configuration
public class ThymeleafConfig {
    @Bean
    public SpringTemplateEngine templateEngine() {
        SpringTemplateEngine templateEngine = new SpringTemplateEngine();
        templateEngine.setTemplateResolver(templateResolver());
        return templateEngine;
    }

    private ITemplateResolver templateResolver() {
        ClassLoaderTemplateResolver templateResolver = new ClassLoaderTemplateResolver();
        templateResolver.setPrefix("templates/");
        templateResolver.setSuffix(".html");
        templateResolver.setTemplateMode("HTML");
        return templateResolver;
    }
}

FreeMarker配置

添加Maven依赖:

<dependency>
    <groupId>org.freemarker</groupId>
    <artifactId>freemarker</artifactId>
    <version>2.3.32</version>
</dependency>

配置FreeMarker:

@Configuration
public class FreeMarkerConfig {
    @Bean
    public FreeMarkerConfigurer freeMarkerConfigurer() {
        FreeMarkerConfigurer configurer = new FreeMarkerConfigurer();
        configurer.setTemplateLoaderPath("classpath:/templates/");
        return configurer;
    }
}

Velocity配置

添加Maven依赖:

<dependency>
    <groupId>org.apache.velocity</groupId>
    <artifactId>velocity</artifactId>
    <version>1.7</version>
</dependency>

配置Velocity:

java 如何配置模板

@Configuration
public class VelocityConfig {
    @Bean
    public VelocityEngine velocityEngine() {
        VelocityEngineFactoryBean factory = new VelocityEngineFactoryBean();
        Properties props = new Properties();
        props.setProperty("resource.loader", "class");
        props.setProperty("class.resource.loader.class", "org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader");
        factory.setVelocityProperties(props);
        return factory.createVelocityEngine();
    }
}

模板文件存放位置

模板文件通常存放在src/main/resources/templates/目录下。例如Thymeleaf的HTML模板或FreeMarker的.ftl文件应放置在此目录中。

模板渲染示例

使用Thymeleaf渲染模板:

@Controller
public class MyController {
    @Autowired
    private SpringTemplateEngine templateEngine;

    @GetMapping("/example")
    public String example(Model model) {
        model.addAttribute("message", "Hello, Thymeleaf!");
        return "example-template";
    }
}

使用FreeMarker渲染模板:

@Controller
public class MyController {
    @Autowired
    private FreeMarkerConfigurer freeMarkerConfigurer;

    @GetMapping("/example")
    public String example(Model model) throws Exception {
        model.addAttribute("message", "Hello, FreeMarker!");
        return "example-template.ftl";
    }
}

动态内容绑定

模板引擎支持动态内容绑定。例如在Thymeleaf中:

java 如何配置模板

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <title>Example</title>
</head>
<body>
    <p th:text="${message}">Default message</p>
</body>
</html>

在FreeMarker中:

<!DOCTYPE html>
<html>
<head>
    <title>Example</title>
</head>
<body>
    <p>${message}</p>
</body>
</html>

自定义模板解析器

需要自定义模板解析路径时,可扩展ITemplateResolver接口(Thymeleaf)或配置FreeMarkerConfigurersetTemplateLoaderPaths方法(FreeMarker)。

模板缓存配置

生产环境通常启用模板缓存。在Thymeleaf中:

templateResolver.setCacheable(true);

在FreeMarker中通过配置文件设置:

spring.freemarker.cache=true

多模板引擎支持

项目需要同时支持多种模板引擎时,可通过配置多个ViewResolver并设置优先级顺序实现。例如在Spring MVC中:

@Bean
public ViewResolver thymeleafViewResolver() {
    ThymeleafViewResolver resolver = new ThymeleafViewResolver();
    resolver.setTemplateEngine(templateEngine());
    resolver.setOrder(1);
    return resolver;
}

@Bean
public ViewResolver freeMarkerViewResolver() {
    FreeMarkerViewResolver resolver = new FreeMarkerViewResolver();
    resolver.setConfigurer(freeMarkerConfigurer());
    resolver.setOrder(2);
    return resolver;
}

标签: 模板java
分享给朋友:

相关文章

如何用java

如何用java

用Java实现基础功能 Java是一种广泛使用的编程语言,适用于开发各种应用程序。以下是几个常见功能的实现方法。 打印"Hello, World!" public class HelloWorl…

java如何调用接口

java如何调用接口

调用接口的基本方法 在Java中调用接口通常涉及实现接口或使用接口引用对象。以下是几种常见场景的示例: 定义接口 public interface MyInterface { void d…

java如何编写接口

java如何编写接口

编写Java接口的基本语法 在Java中,接口通过interface关键字定义,可以包含抽象方法、默认方法、静态方法和常量。 public interface MyInterface {…

java如何实现多继承

java如何实现多继承

在Java中,由于语言设计本身不支持多继承(即一个类不能直接继承多个父类),但可以通过以下方式间接实现类似多继承的效果: 使用接口实现多继承 接口允许一个类实现多个接口,从而继承多个抽象行为。接口中…

如何阅读java源码

如何阅读java源码

阅读Java源码的方法 选择合适的源码项目 初学者建议从JDK核心类库(如java.lang、java.util)或知名开源项目(如Spring、Guava)入手。选择文档完善、社区活跃的项目能降低理…

如何精通java

如何精通java

理解Java核心概念 Java的基础知识包括数据类型、变量、运算符、控制流语句(如循环和条件判断)、数组以及面向对象编程(OOP)的核心概念(类、对象、继承、多态、封装)。熟练掌握这些内容是后续学习的…