Geração de Páginas Estáticas para Aplicativo Móvel de Saúde

Conceitos de Estatização de Páginas

Em sistemas com alto tráfego como listagens e detalhes de planos de saúde, o acesso frequente ao banco de dados gera sobrecarga. A estatização transforma conteúdo dinâmico em páginas HTML estáticas, eliminando consultas repetitivas. Técnicas como Freemarker ou Thymeleaf automatizam a geração desses arquivos.

Implemantação com Freemarker

Gere páginas estáticas para listagem e detalhamento de plenos:

Dependência Maven

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

Modelos de Templlate

Modelo para Listagem (pacotes.ftl):

<html>
<body>
  <ul>
    <#list planos as plano>
      <li>
        <a href="detalhe_plano_${plano.codigo}.html">
          <img src="${plano.imagemUrl}">
          <h4>${plano.nome}</h4>
        </a>
      </li>
    </#list>
  </ul>
</body>
</html>

Modelo para Detalhes (detalhe_plano.ftl):

<html>
<body>
  <div class="card">
    <img src="${plano.imagemUrl}">
    <h4>${plano.nome}</h4>
    <div>
      <#list plano.gruposVerificacao as grupo>
        <div>${grupo.titulo}</div>
      </#list>
    </div>
  </div>
</body>
</html>

Configuração Spring

<bean id="configuradorFreemarker" 
      class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
  <property name="templateLoaderPath" value="/WEB-INF/templates/" />
</bean>

Lógica de Geração

@Service
public class ServicoPlanoImpl implements ServicoPlano {

  @Value("${caminho.saida}")
  private String diretorioSaida;

  public void adicionarPlano(PlanoSaude plano, Integer[] idsGrupos) {
    // Lógica de persistência
    gerarPaginasEstaticas();
  }

  private void gerarPaginasEstaticas() {
    List<PlanoSaude> planos = buscarTodosPlanos();
    gerarListagemPlanos(planos);
    gerarDetalhesPlanos(planos);
  }

  private void gerarListagemPlanos(List<PlanoSaude> planos) {
    Map<String, Object> dados = new HashMap<>();
    dados.put("planos", planos);
    processarTemplate("pacotes.ftl", "lista_planos.html", dados);
  }

  private void processarTemplate(String template, String arquivoSaida, Map<String, Object> dados) {
    Configuration config = configuradorFreemarker.getConfiguration();
    try (Writer escritor = new FileWriter(diretorioSaida + arquivoSaida)) {
      Template modelo = config.getTemplate(template);
      modelo.process(dados, escritor);
    } catch (Exception e) {
      // Tratamento de erros
    }
  }
}

Estratégias de Geração

  • Disparo: Ativado após alterações nos planos
  • Localização: Diretório do aplicativo móvel durante execução
  • Quantidade: Uma página de listagem + múltiplas páginas de detalhe

Tags: FreeMarker Spring HTML java tomcat

Publicado em 7-29 19:44