JAVA集成Freemarker生成静态html过程解析

 更新时间:2020年06月08日 14:26:20   作者:受伤的芒果  
这篇文章主要介绍了JAVA集成Freemarker生成静态html过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

Springboot

1.引入Freemarker jar包

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>

2.配置application.properties

### freemarker
spring.freemarker.templateLoaderPath=classpath:/templates/
spring.freemarker.suffix=.ftl
spring.freemarker.charset=UTF-8
spring.freemarker.request-context-attribute=request
spring.freemarker.settings.number_format=0.##########

3.创建ftl文件

在resource文件下新增文件夹templates,在templates文件夹下存放ftl文件,例如:

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8"/>
  <title>FreeMarker</title>
</head>
<body>
<h1>Simple project</h1>
<h1>${key}</h1>
</body>
</html>

4.新建controller调用方法

@SuppressWarnings("unchecked")
  @RequestMapping(value="/test",method=RequestMethod.GET)
  public String test(Model model,HttpServletRequest request) {
     model.addAttribute("key","test project");
    return "test";
  }

5.生成html静态文件

使用工具类:

/**
   * @param modeName 模板名称
   * @param targetFileName 生成后的HTML名称
   * @param params 传入模板的参数
   * @Author: zy
   * @Date: 2020-6-4 09:39:47
   * @Description:生成静态页面
   */
  public void createHtmlByMode(String modeName, String targetFileName, Map<String, Object> params) {
    Writer out = null;
    // 找到服务器缓存目录,可以自己指定目录
    String folder = PropertisUtil.getApplicationProperties("healthReport.logs.urls") + targetFileName;
    // 通过匹配路径格式拼接完整生成路径
    String outFile = folder;
    try {
      File file = new File(outFile);
      // 生成空HTML文件
      if (!file.exists()) {
        file.createNewFile();
      }

      // 创建模版对象
      Template template = cfg.getTemplate(modeName);

      // 设置输出流
      out = new OutputStreamWriter(new FileOutputStream(file), "UTF-8");// 设置编码 UTF-8

      // 模版数据插入参数,通过输出流插入到HTML中
      template.process(params, out);

    } catch (Exception e) {
      e.printStackTrace();
    } finally {
      if (null != out) {
        try {
          out.flush();
          out.close();
        } catch (IOException e) {
          e.printStackTrace();
        }
      }
    }
  }

修改controller中的方法:

@SuppressWarnings("unchecked")
  @RequestMapping(value="/test",method=RequestMethod.GET)
  public String test(Model model,HttpServletRequest request) {
     model.addAttribute("key","test project");
     //生成静态文件
     Map param=new HashMap();
     param.put("key", "我是被生成的静态文件");
     createHtmlByMode("test.ftl","test.html",param);
    return "test";
    
  }

实现效果(我这里默认保存到d:/testlogs):

Springmvc(和springboot大致相同,此处只留下配置)

1.引入Freemarker jar包

<dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context-support</artifactId>
      <version>3.2.4.RELEASE</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.freemarker/freemarker -->
    <dependency>
      <groupId>org.freemarker</groupId>
      <artifactId>freemarker</artifactId>
      <version>2.3.25-incubating</version>
    </dependency>

2.springmvc配置

<!-- freemarker -->
  <bean id="freeMarkerConfigurer"
    class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
    <property name="templateLoaderPath" value="/freemarker/ftl/"></property>
    <property name="defaultEncoding" value="utf-8" />
    <property name="freemarkerSettings">
      <props>
        <prop key="template_update_delay">1</prop>
        <prop key="locale">zh_CN</prop>
        <prop key="datetime_format">yyyy-MM-dd</prop><!-- 时间格式化 -->
        <prop key="date_format">yyyy-MM-dd</prop>
        <prop key="number_format">#.##</prop>
      </props>
    </property>
  </bean>

  <bean id="freeMarkerViewResolver"
    class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
    <property name="cache" value="true" />
    <property name="prefix" value="" /><!-- 上面已经配了,这里就不用配啦 -->
    <property name="suffix" value=".ftl" />
    <property name="contentType" value="text/html;charset=UTF-8" />
    <property name="allowSessionOverride" value="true" />
    <property name="allowRequestOverride" value="true" />
    <property name="exposeSpringMacroHelpers" value="true" />
    <property name="exposeRequestAttributes" value="true" />
    <property name="exposeSessionAttributes" value="true" />
    <property name="requestContextAttribute" value="request" />
  </bean>

3.调用方式

/**返回模板信息*/
 @SuppressWarnings("unchecked")
 @RequestMapping(value="/test",method={RequestMethod.GET})
 public ModelAndView test(HttpServletRequest request) {
   ModelAndView mv = new ModelAndView();
   //设置参数
   mv.addObject("key", "测试freemarker");
   //配置模板
   mv.setViewName("test");
   return mv;
 }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • IDEA 设置显示内存的使用情况和内存回收的方法

    IDEA 设置显示内存的使用情况和内存回收的方法

    这篇文章主要介绍了IDEA 设置显示内存的使用情况和内存回收的方法,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-04-04
  • SpringBoot 2.7.18 集成 Mybatis Plus + Druid的实例详解

    SpringBoot 2.7.18 集成 Mybatis Plus + Druid的实例详解

    Mybatis和MybatisPlus都是流行的持久层框架,MybatisPlus在Mybatis基础上增加了更多便捷的功能,如自动CRUD、分页插件等,文章还提到了Entity、Mapper、Service、Controller等组件的基本使用方法,为开发者提供了一套完整的集成方案
    2024-10-10
  • Jersey实现Restful服务(实例讲解)

    Jersey实现Restful服务(实例讲解)

    下面小编就为大家带来一篇Jersey实现Restful服务(实例讲解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-08-08
  • springboot使用log4j2异步日志提升性能的实现方式

    springboot使用log4j2异步日志提升性能的实现方式

    这篇文章主要介绍了springboot使用log4j2异步日志提升性能,异步日志实现方式:将日志存入一个单独的队列中,有一个单独的线程从队列中获取日志并写入磁盘文件,需要的朋友可以参考下
    2022-05-05
  • JavaScript中HTML元素操作的实现

    JavaScript中HTML元素操作的实现

    本文主要介绍了JavaScript中HTML元素操作的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-06-06
  • Java解析XML文件开源库DOM4J

    Java解析XML文件开源库DOM4J

    dom4j是一个Java的XML API,是jdom的升级品,用来读写XML文件的。dom4j是一个十分优秀的JavaXML API,具有性能优异、功能强大和极其易使用的特点,它的性能超过sun公司官方的dom技术,同时它也是一个开放源代码的软件
    2023-01-01
  • ElasticSearch 动态映射实战详解

    ElasticSearch 动态映射实战详解

    这篇文章主要为大家介绍了ElasticSearch 动态映射实战详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-01-01
  • SpringBoot之Banner的使用示例

    SpringBoot之Banner的使用示例

    本篇文章主要介绍了SpringBoot之Banner的使用示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-11-11
  • IntelliJ IDEA 2020.2 配置大全详细图文教程(更新中)

    IntelliJ IDEA 2020.2 配置大全详细图文教程(更新中)

    这篇文章主要介绍了IntelliJ IDEA 2020.2 配置大全(更新中),本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-08-08
  • Java中Servlet的生命周期详解

    Java中Servlet的生命周期详解

    这篇文章主要介绍了Java中Servlet的生命周期详解,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-08-08

最新评论