视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
利用Freemarker生成html静态页面_html/css
2020-11-27 16:39:06 责编:小采
文档


通过java生成文件毫无疑问会使用到流,对于流在该文章中不做重点解释。首先我们做一个准备工作,搭建你的项目,采用Freemarker模版技术,首先给大家展示一个Freemarker文件。

预定价格: ${trip.price!'面议'}元 目的地: ${trip.toCity!''} 行程天数:${trip.tripDay!'待定'} 提前预定天数: 建议提前一周报名 出团日期:${trip.toTirpTime} 友谊 

模版建好了,我们接下来写一个工具类,通过该工具类生成html文件。FreeMarkerUtil.java 此处我们只列出主要用到的方法。

 public static void writeTo(ServletContext context, Mapmap, String templatePath, 	String templateName, String htmlPath) throws IOException, TemplateException {	Configuration freemarkerCfg = new Configuration(); // 设置要解析的模板所在的目录,并加载模板文件	freemarkerCfg.setServletContextForTemplateLoading(context, templatePath);	freemarkerCfg.setEncoding(Locale.getDefault(), "UTF-8"); // 获取模板,并设置编码方式	Template template = freemarkerCfg.getTemplate(templateName);	template.setEncoding("UTF-8");	File htmlFilel = new File(context.getRealPath("") +File.separator +"html"+File.separator+"channel");	if(! htmlFilel.exists()) {	htmlFilel.mkdir();	}	File htmlFile = new File(context.getRealPath("") + File.separator + htmlPath);	Writer out = new BufferedWriter(new OutputStreamWriter(	new FileOutputStream(htmlFile), "UTF-8")); // 合并数据模型与模板	template.process(map, out);	out.flush();	out.close();	}

需要导入的类,这些都在freemarker-2.3.16.jar 包中了:

import freemarker.template.Configuration;import freemarker.template.DefaultObjectWrapper;import freemarker.template.Template;import freemarker.template.TemplateException;

接下来就是业务处理了,其实很简单的没有任何的技术含量,这个功能也是在使用Freemarker做模版视图较多使用的,此处为了让学习的人看的明白,业务和控制层都写在一个方法了,容易理解。

public ModelAndView doAdd(HttpServletRequest request,	MultipartHttpServletRequest filerequest, Trip trip)	throws ParseException {	Listfile1 = filerequest.getFiles("file1");	Listfile2 = filerequest.getFiles("file2");	if (file1.size() > 0) {	String titleImg = "";	titleImg = uploadImage(request, file1.get(0));	if (null != titleImg && !titleImg.equals("")) {	trip.setImgUrl(titleImg);	}	}	if (file2.size() > 0) {	String titleImg = "";	titleImg = uploadImage(request, file2.get(0));	if (null != titleImg && !titleImg.equals("")) {	trip.setImgUrl2(titleImg);	}	}	trip.setInputTime(new Date());	File directory = new File(request.getSession().getServletContext()	.getRealPath("/")	+ "trip");	if (!directory.exists()) {	directory.mkdirs();	}	DateFormat format1 = new SimpleDateFormat("yyyyMMddhhmm");	String dateStr = format1.format(new Date());	String html = "trip" + File.separator + trip.getChannelId() + "-"	+ trip.getCityId() + "-" + dateStr + ".html";	trip.setUrlStr(html);	PageBean pageBean3 = tripService.getTriplist(0, 10);	ListtripList = pageBean3.getBeanList();	PageBean pageBean2 = newsService.getTripNewslist(1, 10);	ListtripNewsList = pageBean2.getBeanList();	PageBean pageBean22 = newsService.getTripNews2list(1, 10);	ListtripNews2List = pageBean22.getBeanList();	Map map = new HashMap();	map.put("tripNews2List", tripNews2List);	map.put("tripList", tripList);	map.put("tripNewsList", tripNewsList);	map.put("trip", trip);	map.put("base", request.getContextPath());	try {	FreeMarkerUtil.writeTo(request.getSession().getServletContext(),	map, "/templates", "trip.ftl", html);	} catch (IOException e) {	// TODO Auto-generated catch block	e.printStackTrace();	} catch (TemplateException e) {	// TODO Auto-generated catch block	e.printStackTrace();	}	tripService.save(trip);	return new ModelAndView("redirect:/trip/page.shtml?page_now=1");	}

好了,这样你就可以写你的静态网站了。

也许有人现在也不知道生成静态的作用到底是什么呢?

1、访问的时候不需要在操作数据库了。

2、对于搜索引擎来说html静态页面更加的友好。

3、访问速度变的很快。

等等,大家自己感受一下。有需要可留言要源码demo。

本文地址:http://www.osblog.net/code/117.html

下载本文
显示全文
专题