当前位置:首页 > 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:

@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中:

<!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中:

java 如何配置模板

@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
分享给朋友:

相关文章

实现vue模板解析

实现vue模板解析

Vue 模板解析的基本原理 Vue 的模板解析是将模板字符串转换为渲染函数的过程。核心步骤包括模板编译、AST 生成、优化和代码生成。 模板编译阶段 Vue 使用 vue-template-comp…

uniapp隐私政策模板

uniapp隐私政策模板

隐私政策模板(UniApp适用) 以下是一个适用于UniApp的隐私政策模板,可根据实际业务需求调整内容。注意需符合《个人信息保护法》《网络安全法》等法律法规要求。 个人信息收集与使用 应用可能收集…

java如何输出数组

java如何输出数组

输出数组的方法 在Java中,输出数组内容有多种方式,具体取决于数组类型和输出格式需求。以下是几种常见的方法: 使用Arrays.toString()方法 适用于一维数组,直接调用Arrays.to…

java如何输入数组

java如何输入数组

输入数组的方法 在Java中,可以通过多种方式输入数组,具体取决于输入源(如控制台、文件等)和数组类型(如基本类型或对象类型)。以下是几种常见的方法: 使用Scanner从控制台输入 对于基本数据类…

java如何创建包

java如何创建包

创建Java包的步骤 在Java中,包(package)用于组织和管理类文件,避免命名冲突。以下是创建Java包的详细方法: 定义包名 在Java源文件的开头使用package关键字声明包名。包名…

java如何处理高并发

java如何处理高并发

Java处理高并发的方法 使用多线程和线程池 Java的java.util.concurrent包提供了线程池(如ThreadPoolExecutor)和并发工具类(如CountDownLatch、C…