O Spring Boot integra o mecanismo de modelo freemarker

Este artigo está participando do "Projeto Pedra Dourada. Compartilhe 60.000 prêmios em dinheiro"

prefácio

O campo do J2EE inclui cinco mecanismos principais: mecanismo de modelo, mecanismo de processo, mecanismo de pesquisa, mecanismo de regras e mecanismo de relatório. Cada mecanismo pode resolver um determinado problema. O mecanismo de modelo resolve a separação da interface do usuário e dos dados de negócios. O mecanismo de processo resolve o problema de direcionar o negócio para executar de acordo com um determinado processo. A diferença é que diferentes decisões de negócios precisam ser separadas do código. Em relação a essas tecnologias de motores, vamos nos concentrar em explicá-las uma a uma nos próximos artigos.

foto.png

Este artigo explicará o mecanismo de modelo.Os mecanismos de modelo comumente usados ​​no J2EE incluem Velocity, Freemark, Thymeleaf, etc.

Introdução

O FreeMarker é um mecanismo de modelo escrito na linguagem Java que gera saída de texto com base em modelos. Separe a exibição de dados de negócios e a interface do usuário e concentre-se na renderização de visualizações, melhorando assim a eficiência.

Cenário de Aplicação

  • ver renderização
  • Faça modelos, como modelos de e-mail, modelos de SMS, etc.
  • Geradores de código, como mybatis-plus-generator
  • exportar documento do word

Integração básica

Importar pacote jar

<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>
<dependency>
   <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
复制代码

Configuração do atributo do modelo

# freemarker静态资源配置
spring:
  freemarker:
    tempalte-loader-path: classpath:/templates
    cache: true
    charset: UTF-8
    check-template-location: true
    content-type: text/html
    expose-request-attributes: true
    expose-session-attributes: true
    request-context-attribute: request
    suffix: .ftl
复制代码

-ilustrar:

  • tempalte-loader-path: especifica o caminho para o arquivo de modelo.
  • cache: se o arquivo é armazenado em cache
  • charset: define a codificação de caracteres do arquivo
  • tipo de conteúdo: o tipo do arquivo
  • sufixo: sufixo do arquivo
  • check-template-location: verifique se o arquivo de modelo existe
  • expor-request-attributes: se deseja ativar o atributo de solicitação, o padrão é false
  • expor-session-attributes: se o atributo HttpSession deve ser ativado

realização de negócios

@Controller
public class UserController
{
    @RequestMapping("/user")
    public String showUser(Model model) 
    {
        List<User> users = new ArrayList<>();
        for (int i = 0; i < 10; i++) 
        {
            User user = new User();
            user.setId((long) i);
            user.setUsername("剑圣无痕" + i);
            user.setAddress("广东省人民路" + i+"号");
            users.add(user);
        }
        model.addAttribute("users", users);
        return "user";
    }
}

复制代码

visualizar arquivo

<table border="1">
    <tr>
        <td>用户编号</td>
        <td>用户名称</td>
        <td>用户地址</td>
    </tr>
    <#list users as user>
        <tr>
            <td>${user.id}</td>
            <td>${user.username}</td>
            <td>${user.address}</td>
        </tr>
    </#list>
</table>
复制代码

Nota: Este artigo não explicará os loops básicos, condições e outras gramáticas do freemark. Para mais detalhes, você pode verificar o site oficial

resultado da operação

foto.png

outras características

Através das etapas acima, percebemos a função de renderização de exibição do Spring Boot integrado ao Freemark, mas no projeto real, é necessário implementar funções como configuração de modelo e exportação de documentos do Word, então como conseguir isso através do Freemark?

carregar um modelo específico

 public void sendFreemarkTemplateMail(String templateName,Mail mail)
    {
        HashMap<String, Object> map = new HashMap<>();
        map.put("companyName", "广东剑圣无痕股份有限公司");
        map.put("address", "广东省建设路1008号");
        map.put("phone", "13123456789");
        Template template;
        try
        {
            template = configurer.getConfiguration().getTemplate(templateName);
            String context = FreeMarkerTemplateUtils.processTemplateIntoString(template, map);
            mail.setBody(context);
            sendHtmlMail(mail);
        }
        catch (Exception e)
        {
           logger.error("send freemark error",e);
        }
    }
复制代码

O acima é a configuração do modelo de envio de email, e o conteúdo de saída do arquivo de modelo é carregado por meio de freemark para enviar o email

Resumir

Este artigo explica a integração do Freemark com o Spring Boot.Se você tiver alguma dúvida, envie um feedback a tempo.

Acho que você gosta

Origin juejin.im/post/7166455005770153991
Recomendado
Clasificación