1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116
| package com.freemarker.Controller; import java.io.BufferedWriter; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStreamWriter; import java.io.Writer; import java.util.Locale; import java.util.Map; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.web.servlet.support.RequestContextUtils; import org.springframework.web.servlet.view.freemarker.FreeMarkerView; import freemarker.template.SimpleHash; import freemarker.template.Template; import freemarker.template.TemplateException; public class FreeMarkerViewUtil extends FreeMarkerView { @Override protected void doRender(Map<String, Object> model, HttpServletRequest request, HttpServletResponse response) throws Exception { exposeModelAsRequestAttributes(model, request); SimpleHash fmModel = buildTemplateModel(model, request, response); if (logger.isDebugEnabled()) { logger.debug(“Rendering FreeMarker 模版 [” + getUrl() + “] in FreeMarkerView ‘” + getBeanName() + “‘”); } Locale locale = RequestContextUtils.getLocale(request);
if (Boolean.FALSE.equals(model.get(“CREATE_HTML”))) { processTemplate(getTemplate(locale), fmModel, response); } else { createHTML(getTemplate(locale), fmModel, request, response); } } public void createHTML(Template template, SimpleHash model, HttpServletRequest request, HttpServletResponse response) throws IOException, TemplateException, ServletException { String basePath = request.getSession().getServletContext().getRealPath(“/”); String requestHTML = this.getRequestHTML(request); String htmlPath = basePath + requestHTML; System.out.println(“静态页面绝对路径===========>>:”+htmlPath); File htmlFile = new File(htmlPath); if (!htmlFile.getParentFile().exists()) { htmlFile.getParentFile().mkdirs(); } if (!htmlFile.exists()) { htmlFile.createNewFile(); } Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(htmlFile), “UTF-8”)); template.process(model, out); out.flush(); out.close(); request.getRequestDispatcher(requestHTML).forward(request, response); }
private String getRequestHTML(HttpServletRequest request) { String contextPath = request.getContextPath(); String requestURI = request.getRequestURI(); requestURI = requestURI.replaceFirst(contextPath, “”); requestURI = requestURI.substring(0, requestURI.indexOf(“.”)) + “.html”; return requestURI; } } package com.freemarker.Controller; import java.util.ArrayList; import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; import com.spring.vo.User; @Controller @RequestMapping(“/home”) public class FreeMarkerController { @RequestMapping(“index1”) public ModelAndView Add(HttpServletRequest request, HttpServletResponse response) { ModelAndView mav = new ModelAndView(“index”); User user = new User(); user.setUsername(“<h2>小明=========================================================></h2>”); user.setPassword(“<a href=’https: List<User> users = new ArrayList<User>(); users.add(user); mav.addObject(“users”, users); return mav; } @RequestMapping(“index2”) public ModelAndView index() { ModelAndView mav = new ModelAndView(“index”); mav.addObject(“title”, “网站标题”); mav.addObject(“CREATE_HTML”, false); return mav; } }
|