欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

freemarker 页面静态化

程序员文章站 2022-06-22 18:18:20
...

 

 
freemarker 页面静态化
            
    
    博客分类: freemarker freemarker页面静态化 
 
freemarker 页面静态化
            
    
    博客分类: freemarker freemarker页面静态化 
 

 

 

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>

<#if  users?size != 0> 
<div class=”user”> 
     <strong>user info:</strong> 
     <#list users as user> 
    <p> ${user.userName } </p>
  </#list> 
</div> 
<#else> 
<div class=”user”></div> 
</#if> 


</body>
</html>

 

 

<?xml version="1.0" encoding="GBK"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:aop="http://www.springframework.org/schema/aop"
	xmlns:tx="http://www.springframework.org/schema/tx" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:util="http://www.springframework.org/schema/util"
	xsi:schemaLocation="http://www.springframework.org/schema/beans 
        http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
        http://www.springframework.org/schema/aop 
        http://www.springframework.org/schema/aop/spring-aop-4.0.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context-4.0.xsd
        http://www.springframework.org/schema/mvc 
        http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd
        http://www.springframework.org/schema/tx 
        http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
        http://www.springframework.org/schema/util
        http://www.springframework.org/schema/util/spring-util-4.0.xsd">

	<bean id="freemakerCongfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
		<property name="templateLoaderPath">
			<value>/WEB-INF/ftl/</value>
		</property>
		<property name="freemarkerSettings">
			<props>
				<prop key="defaultEncoding">UTF-8</prop>
			</props>
		</property>
	</bean>

</beans>

 

 

 

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Locale;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer;

import com.curiousby.entity.User;
import com.curiousby.util.FreeMarkerOnParamLinsenter;
import com.curiousby.FreeMarkerRequest;

import freemarker.core.ParseException;
import freemarker.template.Configuration;
import freemarker.template.MalformedTemplateNameException;
import freemarker.template.Template;
import freemarker.template.TemplateExceptionHandler;
import freemarker.template.TemplateNotFoundException;

/**
 * @Type StaticPageController.java
 * @Desc 
 * @author baoyou curiousby@163.com
 * @date 2017年3月19日 下午8:00:49
 * @version 
 */
@Controller
@RequestMapping(value = "/test/staticpage")
public class StaticPageController {

    @Autowired
    FreeMarkerConfigurer freemakerCongfig;

    @RequestMapping(value = "/")
    public void index(HttpServletRequest request, HttpServletResponse response) throws Exception {

        new FreeMarkerRequest(new FreeMarkerOnParamLinsenter() {

            @Override
            public void onParamLinsenLinsenter(Map<String, Object> params) {
                User user = new User();
                user.setUserName("baoyou");
                List<User> users = new ArrayList<>();
                users.add(user);
                params.put("users", users);
            }
        }).request(request, response, freemakerCongfig, null, "freemaker.ftl", "index.html");
    }

    @RequestMapping(value = "/home")
    public void home(HttpServletRequest request, HttpServletResponse response) throws Exception {

        new FreeMarkerRequest(new FreeMarkerOnParamLinsenter() {

            @Override
            public void onParamLinsenLinsenter(Map<String, Object> params) {
                User user = new User();
                user.setUserName("baoyou");
                List<User> users = new ArrayList<>();
                users.add(user);
                params.put("users", users);
            }
        }).request(request, response, freemakerCongfig, "home", "index.ftl", "index.html");
    }
}
/**
 * Revision history
 * -------------------------------------------------------------------------
 * 
 * Date Author Note
 * -------------------------------------------------------------------------
 * 2017年3月19日 baoyou curiousby@163.com creat
 */

 

 

/*
 * This software is the confidential and proprietary information of
 * curiousby Company. ("Confidential Information").  You shall not
 * disclose such Confidential Information and shall use it only in
 * accordance with the terms of the license.
 */
package com.curiousby.util;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;
import java.io.Writer; 
import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import org.springframework.web.servlet.view.freemarker.FreeMarkerConfig;

import freemarker.template.Template;
import freemarker.template.TemplateException;

/**
 * @Type FreeMarkerUtil.java
 * @Desc 
 * @author baoyou curiousby@163.com
 * @date 2017年3月20日 下午12:18:23
 * @version 
 */
public class FreeMarkerUtil {

    /**
     * 
     * @param freeMarkerConfig
     * @param templateName
     * @param request
     * @param map
     * @param filePath
     * @param fileName
     */
    public static void createHtml(FreeMarkerConfig freeMarkerConfig, 
                                  String templateName,
                                  HttpServletRequest request, 
                                  Map<?, ?> map, 
                                  String filePath,
                                  String fileName) {
        Writer out = null;
        try {
            Template template = freeMarkerConfig.getConfiguration().getTemplate(templateName);
            String htmlPath = request.getSession().getServletContext().getRealPath("/")+  ((filePath == null || "".equals(filePath)) ? "" : filePath + "/") + "/"+ fileName;
            File htmlFile = new File(htmlPath);
            if (!htmlFile.getParentFile().exists()) {
                htmlFile.getParentFile().mkdirs();
            }
            if (!htmlFile.exists()) {
                htmlFile.createNewFile();
            }
            out = new OutputStreamWriter(new FileOutputStream(htmlPath), "UTF-8");
            template.process(map, out);
            out.flush();
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (TemplateException e) {
            e.printStackTrace();
        } finally {
            try {
                out.close();
                out = null;
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }

    /**
     * 
     * @param request
     * @param filePath
     * @param fileName
     * @return
     */
    public static boolean exits(HttpServletRequest request, 
                                                       String filePath,
                                                       String fileName) {
        boolean flag = false; 
        String htmlPath = request.getSession().getServletContext().getRealPath("/") +  ((filePath == null || "".equals(filePath)) ? "" : filePath + "/") + "/"+ fileName;
        File htmlFile = new File(htmlPath);
        if (htmlFile.exists()) {
            flag = true;      
        }
        return flag;
    }

}


 

/*
 * This software is the confidential and proprietary information of
 * curiousby Company. ("Confidential Information").  You shall not
 * disclose such Confidential Information and shall use it only in
 * accordance with the terms of the license.
 */
package com.curiousby.util;

import java.util.Map;

/**
 * @Type FreeMarkerOnParamLinsenter.java
 * @Desc 
 * @author baoyou curiousby@163.com
 * @date 2017年3月20日 下午12:27:09
 * @version 
 */
public interface FreeMarkerOnParamLinsenter {

    public void onParamLinsenLinsenter(Map<String,Object> params);
}


/**
 * Revision history
 * -------------------------------------------------------------------------
 * 
 * Date Author Note
 * -------------------------------------------------------------------------
 * 2017年3月20日 baoyou curiousby@163.com creat
 */

 

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.util.LinkedHashMap;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer;

import freemarker.template.Template;
import freemarker.template.TemplateException;

/**
 * @Type FreeMarkerRequest.java
 * @Desc 
 * @author baoyou curiousby@163.com
 * @date 2017年3月20日 下午12:26:31
 * @version 
 */
public class FreeMarkerRequest {

    private FreeMarkerOnParamLinsenter onParamLinsenter;

    public FreeMarkerRequest(FreeMarkerOnParamLinsenter onParamLinsenter) {
        this.onParamLinsenter = onParamLinsenter;
    }

    public void request(HttpServletRequest request, HttpServletResponse response,
                        FreeMarkerConfigurer freemakerCongfig, String filePath,String ftlName, String fileName)
             {

        Map<String, Object> params = new LinkedHashMap<String, Object>();
        this.onParamLinsenter.onParamLinsenLinsenter(params);
        boolean exits = FreeMarkerUtil.exits(request, filePath, fileName);
        Writer out = null;
        try {
            if (!exits) {
                File path = new File(request.getServletContext().getRealPath("/staticpage") + "/" +  ((filePath == null || "".equals(filePath)) ? "" : filePath + "/") );
                if(!path.exists()){
                    path.mkdirs();
                }
                Template temple = freemakerCongfig.getConfiguration().getTemplate( ((filePath == null || "".equals(filePath)) ? "" : filePath + "/") + ftlName);
                out = new OutputStreamWriter(new FileOutputStream(
                        request.getServletContext().getRealPath("/staticpage") + "/" +  ((filePath == null || "".equals(filePath)) ? "" : filePath + "/") + fileName));
                temple.process(params, out);//处理

            }

            response.sendRedirect(request.getServletContext().getContextPath() + "/staticpage/" + ((filePath == null || "".equals(filePath)) ? "" : filePath + "/") + fileName);
        } catch (IOException e) {
            e.printStackTrace();
        } catch (TemplateException e) { 
            e.printStackTrace();
        } finally {
            if (out!=null) {
                try {
                    out.close();
                } catch (IOException e) { 
                    e.printStackTrace();
                }
            }
        }
    }

}

/**
 * Revision history
 * -------------------------------------------------------------------------
 * 
 * Date Author Note
 * -------------------------------------------------------------------------
 * 2017年3月20日 baoyou curiousby@163.com creat
 */

 

 

 

 

 

 

 

 

 

 

 

捐助开发者

在兴趣的驱动下,写一个免费的东西,有欣喜,也还有汗水,希望你喜欢我的作品,同时也能支持一下。 当然,有钱捧个钱场(右上角的爱心标志,支持支付宝和微信捐助),没钱捧个人场,谢谢各位。


freemarker 页面静态化
            
    
    博客分类: freemarker freemarker页面静态化 freemarker 页面静态化
            
    
    博客分类: freemarker freemarker页面静态化 freemarker 页面静态化
            
    
    博客分类: freemarker freemarker页面静态化 
 
 
 谢谢您的赞助,我会做的更好!

 

  

  • freemarker 页面静态化
            
    
    博客分类: freemarker freemarker页面静态化 
  • 大小: 49.8 KB
  • freemarker 页面静态化
            
    
    博客分类: freemarker freemarker页面静态化 
  • 大小: 151.6 KB