Java语言SpringMvc整合FreeMarker静态页面生成

说明:FreeMarker是静态页面生成框架,本文章主要写了两个案例且都是基于SpringMvc框架。一个是生成伪静态,一个是生成静态页面。只写具体功能,不做太多解释,代码是干货,想多深入自己慢慢研究。

准备工作:现在pom.xml文件中引入FreeMarker包



  org.freemarker
  freemarker-gae
  2.3.20

一,伪静态

这是之前Springmvc的视图配置。


class="org.springframework.web.servlet.view.InternalResourceViewResolver">
   
   name="prefix" value="/WEB-INF/jsps/" />
   name="suffix" value=".jsp" />
   name="order" value="1"/>

在原有的基础上增加FreeMarker的视图配置。


id="freemarkerConfig"
     class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
   name="templateLoaderPath">
      /WEB-INF/freemarker
   
   name="freemarkerVariables">
      
         key="xml_escape" value-ref="fmXmlEscape" />
      
   
   name="defaultEncoding">
      utf-8
   

id="fmXmlEscape" class="freemarker.template.utility.XmlEscape" />


      class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
   name="viewClass"
           value="org.springframework.web.servlet.view.freemarker.FreeMarkerView" />
   name="contentType" value="text/html; charset=utf-8" />
   name="suffix" value=".ftl" />
   name="order" value="0" />

之前是返回视图的时候直接返回/WEB-INF/jsp

配置完成后会根据order的value等级返回查找,我们配置的是优先返回order=0的视图,也就是freemarker的视图。Java语言SpringMvc整合FreeMarker静态页面生成_第1张图片

freemarker.ftl文件中内容。

<#assign base="sss" />
html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">


    </span>freemarker Test<span style="color:#e8bf6a;">


Hello,${root.w}


${root.w}

我们在FreeMarkerController中写一个返回freemarker视图的方法就OK了

@RequestMapping("freemarkerFirstPage")
public String firstPage(Model model){
    String w="Welcome FreeMarker!";
    Map root = new HashMap();
    root.put("w",w);
    model.addAttribute("root",root);
    return "freemarker";
}

这样freemarker的伪静态就完成了,功能类似于java的jsp.

二,生成静态页面

在D盘下创建db文件夹

在FreeMarkerController中加入下面代码就Ok了

@RequestMapping("twoHtmlPage")
@ResponseBody
public String twoHtmlPage(Model model,HttpServletRequest req){
    String w="Welcome FreeMarker!";
    Map root = new HashMap();
    root.put("w",w);

    String realPath=req.getServletContext().getRealPath("/WEB-INF/freemarker");
    System.out.println(realPath);

    Configuration config=new Configuration();
    try {
        config.setDirectoryForTemplateLoading(new File(realPath));
        config.setObjectWrapper(new DefaultObjectWrapper());
        Template template=config.getTemplate("/freemarker.ftl","GBK");
        FileOutputStream fos = new FileOutputStream("D:\\db\\freemarker.html");
        Writer out = new OutputStreamWriter(fos,"GBK");
        template.process(root, out);
        out.flush();
        out.close();
    } catch (IOException e) {
        e.printStackTrace();
    } catch (TemplateException e) {
        e.printStackTrace();
    }
    return "OK";
}

代码访问完成后,去D/db文件夹下看看是否生成静态页面,如果生成就Ok了









你可能感兴趣的:(Java语言SpringMvc整合FreeMarker静态页面生成)