SpringMVC&Freemarker静态化页面的处理思路.docx

上传人:小飞机 文档编号:3166061 上传时间:2023-03-11 格式:DOCX 页数:8 大小:38.85KB
返回 下载 相关 举报
SpringMVC&Freemarker静态化页面的处理思路.docx_第1页
第1页 / 共8页
SpringMVC&Freemarker静态化页面的处理思路.docx_第2页
第2页 / 共8页
SpringMVC&Freemarker静态化页面的处理思路.docx_第3页
第3页 / 共8页
SpringMVC&Freemarker静态化页面的处理思路.docx_第4页
第4页 / 共8页
SpringMVC&Freemarker静态化页面的处理思路.docx_第5页
第5页 / 共8页
亲,该文档总共8页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《SpringMVC&Freemarker静态化页面的处理思路.docx》由会员分享,可在线阅读,更多相关《SpringMVC&Freemarker静态化页面的处理思路.docx(8页珍藏版)》请在三一办公上搜索。

1、SpringMVC&Freemarker静态化页面的处理思路这里对freemarker的代码进行了修改,效果: 1,请求.do的URL时直接生成对应的.htm文件,并将请求转发到该htm文件 2,自由控制某个页面是否需要静态化 原理:对org.springframework.web.servlet.view.freemarker.FreeMarkerView类进行扩展 第一步:在web.xml中将*.do请求交给SpringMVC XML code demo org.springframework.web.servlet.DispatcherServlet contextConfigLocat

2、ion /WEB-INF/demo-servlet.xml 1 demo *.do 第二步:配置/WEB-INF/demo-servlet.xml XML code !- - 1 UTF-8 第三步:新建package,com.myview,新建一个MyFreeMarkerView,继承自org.springframework.web.servlet.view.freemarker.FreeMarkerView,在这里对原类进行扩展 Java code package com.myview; import java.io.BufferedWriter; import java.io.File;

3、 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; i

4、mport 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 MyFreeMarkerView extends Fr

5、eeMarkerView Override protected void doRender(Map model, HttpServletRequest request, HttpServletResponse response) throws Exception / Expose model to JSP tags (as request attributes). exposeModelAsRequestAttributes(model, request); / Expose all standard FreeMarker hash models. SimpleHash fmModel = b

6、uildTemplateModel(model, request, response); if (logger.isDebugEnabled) logger.debug(Rendering FreeMarker template + getUrl + in FreeMarkerView + getBeanName + ); / Grab the locale-specific version of the template. Locale locale = RequestContextUtils.getLocale(request); /* * 默认生成静态文件,除非在编写ModelAndVi

7、ew时指定CREATE_HTML = false, * 这样对静态文件生成的粒度控制更细一点 * 例如:ModelAndView mav = new ModelAndView(search); * mav.addObject(CREATE_HTML, false); */ if(Boolean.FALSE.equals(model.get(CREATE_HTML) processTemplate(getTemplate(locale), fmModel, response); else createHTML(getTemplate(locale), fmModel, request, resp

8、onse); public void createHTML(Template template, SimpleHash model,HttpServletRequest request, HttpServletResponse response) throws IOException, TemplateException, ServletException /站点根目录的绝对路径 String basePath = request.getSession.getServletContext.getRealPath(/); String requestHTML = this.getRequestH

9、TML(request); /静态页面绝对路径 String htmlPath = basePath + requestHTML; 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),

10、UTF-8); /处理模版 template.process(model, out); out.flush; out.close; /*将请求转发到生成的htm文件*/ request.getRequestDispatcher(requestHTML).forward(request, response); /* * 计算要生成的静态文件相对路径 * 因为大家在调试的时候一般在Tomcat的webapps下面新建站点目录的, * 但在实际应用时直接布署到ROOT目录里面,这里要保证路径的一致性。 * param request HttpServletRequest * return /目录/*

11、.htm */ private String getRequestHTML(HttpServletRequest request) /web应用名称,部署在ROOT目录时为空 String contextPath = request.getContextPath; /web应用/目录/文件.do String requestURI = request.getRequestURI; /basePath里面已经有了web应用名称,所以直接把它replace掉,以免重复 requestURI = requestURI.replaceFirst(contextPath, ); /将.do改为.htm,

12、稍后将请求转发到此htm文件 requestURI = requestURI.substring(0, requestURI.indexOf(.) + .htm; return requestURI; 到这里就基本完成了。 一个Controller类的例子: Java code package com.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframew

13、ork.web.servlet.ModelAndView; Controller public class IndexController RequestMapping(/index) public ModelAndView index ModelAndView mav = new ModelAndView(index); mav.addObject(title, 网站标题); /在这里可以控制不生成静态htm mav.addObject(CREATE_HTML, false); return mav; RequestMapping(/abc/index) public ModelAndView abcindex ModelAndView mav = new ModelAndView(index); /默认生成htm文件 mav.addObject(title, 网站标题); return mav;

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备2025010119号-1

经营许可证:宁B2-20210002

宁公网安备 64010402000987号