http://www.blogjava.net/xcp/archive/2014/09/07/417749.html
前面学习了一个开源框架Jfinal,并用此框架开发了一个实例网站现进行分享.
公司名称:北京丰帆佳宇运输有限公司 公司简介:渣土消纳证办理,大型支护土方深度开挖,矿山暗挖,基坑开挖,建筑垃圾清运,渣土清运,砂石料配送,工程机械租赁业务
公司网址:www.bjffjy.com
1、框架Jfinal+freemarker+mysql
2、Web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <!-- index config --> <display-name>北京丰帆佳宇运输有限公司</display-name> <!-- jfinal config --> <filter> <filter-name>jfinal</filter-name> <filter-class>com.jfinal.core.JFinalFilter</filter-class> <init-param> <param-name>configClass</param-name> <param-value>com.bjffjy.config.BjffjyConfig</param-value> </init-param> </filter> <filter-mapping> <filter-name>jfinal</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
<!-- session config --> <session-config> <session-timeout>30</session-timeout> </session-config> <!-- online config --> <listener> <listener-class>com.bjffjy.listener.SessionCounter</listener-class> </listener> <!-- log4j config --> <context-param> <param-name>log4jConfigLocation</param-name> <!-- <param-value>classpath:resources/log4j.properties</param-value> --> <!-- <param-value>/WEB-INF/log4j.properties</param-value> --> <param-value>classpath:log4j.properties</param-value> </context-param> <!-- Settings --> <servlet> <servlet-name>SettingsServlet</servlet-name> <servlet-class>com.bjffjy.servlet.SettingsServlet</servlet-class> <load-on-startup>0</load-on-startup> </servlet> <!-- ckFinder --> <servlet> <servlet-name>ConnectorServlet</servlet-name> <servlet-class>com.ckfinder.connector.ConnectorServlet</servlet-class> <init-param> <param-name>XMLConfig</param-name> <param-value>/WEB-INF/config.xml</param-value> </init-param> <init-param> <param-name>debug</param-name> <param-value>false</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>ConnectorServlet</servlet-name> <url-pattern>/resource/js/ckfinder/core/connector/java/connector.java</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>ConnectorServlet</servlet-name> <url-pattern>/ckfinder/core/connector/java/connector.java</url-pattern> </servlet-mapping> <filter> <filter-name>FileUploadFilter</filter-name> <filter-class>com.ckfinder.connector.FileUploadFilter</filter-class> <init-param> <param-name>sessionCookieName</param-name> <param-value>JSESSIONID</param-value> </init-param> <init-param> <param-name>sessionParameterName</param-name> <param-value>jsessionid</param-value> </init-param> </filter> <filter-mapping> <filter-name>FileUploadFilter</filter-name> <url-pattern>/resource/js/ckfinder/core/connector/java/connector.java</url-pattern> </filter-mapping> <filter-mapping> <filter-name>FileUploadFilter</filter-name> <url-pattern>/ckfinder/core/connector/java/connector.java</url-pattern> </filter-mapping>
<!-- 404,500 config --> <error-page> <error-code>404</error-code> <location>/error.jsp?key=404</location> </error-page> <error-page> <error-code>500</error-code> <location>/error.jsp?key=500</location> </error-page> </web-app>
3、核心控制类
package com.bjffjy.config;
import com.alibaba.druid.filter.stat.StatFilter; import com.alibaba.druid.wall.WallFilter; import com.bjffjy.interceptor.AuthInterceptor; import com.bjffjy.model.Car; import com.bjffjy.model.News; import com.bjffjy.model.Picture; import com.bjffjy.model.Settings; import com.jfinal.config.Constants; import com.jfinal.config.Handlers; import com.jfinal.config.Interceptors; import com.jfinal.config.JFinalConfig; import com.jfinal.config.Plugins; import com.jfinal.config.Routes; import com.jfinal.plugin.activerecord.ActiveRecordPlugin; import com.jfinal.plugin.activerecord.dialect.MysqlDialect; import com.jfinal.plugin.activerecord.tx.TxByActionMethods; import com.jfinal.plugin.druid.DruidPlugin; import com.jfinal.plugin.druid.DruidStatViewHandler; import com.jfinal.plugin.ehcache.EhCachePlugin; import com.jfinal.render.ViewType;
/** * @Title: BjffjyConfig.java * @Description: TODO(总配置器) * @Author Comsys-XCP * @Date 2014-7-6 下午05:22:49 * @Company 北京丰帆佳宇运输有限公司 */ public class BjffjyConfig extends JFinalConfig{ @Override public void configConstant(Constants me) { me.setDevMode(true); loadPropertyFile("config.properties"); me.setError404View("/error.jsp?key=400"); me.setError500View("/error.jsp?key=500"); me.setViewType(ViewType.JSP); }
@Override public void configRoute(Routes me) { me.add(new FrontRoutes()); me.add(new AdminRoutes()); }
@Override public void configInterceptor(Interceptors me) { //用户登录权限过滤 me.add(new AuthInterceptor()); //声明式事务处理 me.add(new TxByActionMethods("save","update","delete","batch")); }
@Override public void configPlugin(Plugins me) { //缓存插件 /*String ehcacheConf = PathKit.getWebRootPath() + File.separator + "WEB-INF" + File.separator + "ehcache.xml"; me.add(new EhCachePlugin(ehcacheConf)); */ me.add(new EhCachePlugin()); //数据源插件 DruidPlugin dp = new DruidPlugin(getProperty("jdbc.url"),getProperty("jdbc.username"), getProperty("jdbc.password")); dp.addFilter(new StatFilter()); WallFilter wall = new WallFilter(); wall.setDbType("mysql"); dp.addFilter(wall); me.add(dp); //ActiveRecord插件 ActiveRecordPlugin arp = new ActiveRecordPlugin(dp); arp.setDialect(new MysqlDialect()).setShowSql(true); me.add(arp); //添加映射 arp.addMapping("s_settings", Settings.class); arp.addMapping("b_news", News.class); arp.addMapping("b_car", Car.class); arp.addMapping("b_picture", Picture.class); } @Override public void configHandler(Handlers me) { DruidStatViewHandler dvh = new DruidStatViewHandler("/druid"); me.add(dvh); } }
package com.bjffjy.config;
import com.bjffjy.core.AdminController; import com.bjffjy.core.CarController; import com.bjffjy.core.LoginController; import com.bjffjy.core.NewsController; import com.bjffjy.core.PictureController; import com.bjffjy.core.SettingsController; import com.bjffjy.core.TemplateController; import com.bjffjy.core.UpdateCenterController; import com.jfinal.config.Routes;
/** * @Title: AdminRoutes.java * @Description: TODO(后台管理路由器) * @Author Comsys-XCP * @Date 2014-7-6 下午09:57:21 * @Company 北京丰帆佳宇公司 */ public class AdminRoutes extends Routes{
@Override public void config() { /**系统登录*/ add("/login",LoginController.class); add("/admin",AdminController.class); add("/admin/**,SettingsController.class); add("/admin/**",TemplateController.class); add("/admin/**",UpdateCenterController.class); add("/admin/**",NewsController.class); add("/admin/**",CarController.class); add("/admin/**",PictureController.class); } }
package com.bjffjy.config;
import com.bjffjy.core.IndexController; import com.jfinal.config.Routes;
/** * @Title: FrontRoutes.java * @Description: TODO(前台管理路由器) * @Author Comsys-XCP * @Date 2014-7-6 下午10:01:10 * @Company 北京丰帆佳宇公司 */ public class FrontRoutes extends Routes{
@Override public void config() { /**首页展示*/ add("/", IndexController.class); } }
package com.bjffjy.config;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;
import com.jfinal.handler.Handler;
/** * @Title: SessionHandler.java * @Description: TODO(Freemarker session) * 因为 jfinal 提倡 restful 的 不建议使用 session * 如果要在页面获取session 需要自己设置 一个handler 将session 放入request中 * http://www.oschina.net/question/582302_59626?sort=default&p=1 * @Author Comsys-XCP * @Date 2014-7-17 下午05:11:23 * @Company *****公司 */ public class SessionHandler extends Handler { @Override public void handle(String target, HttpServletRequest request, HttpServletResponse response, boolean[] isHandled) { request.setAttribute("session", request.getSession()); nextHandler.handle(target, request, response, isHandled); }
}
package com.bjffjy.core;
import java.io.File; import java.util.HashMap; import java.util.Map; import java.util.regex.Matcher; import java.util.regex.Pattern;
import com.bjffjy.model.News; import com.bjffjy.util.ImageUtils; import com.bjffjy.util.RequestUtil; import com.jfinal.core.Controller; import com.jfinal.plugin.activerecord.Page;
/** * @Title: NewsController.java * @Description: TODO(新闻信息控制类) * @Author Comsys-XCP * @Date 2014-7-18 上午11:14:23 * @Company 北京丰帆佳宇公司 */ public class NewsController extends Controller{ /** * @Title: index * @Description: TODO(列表查询) */ public void index(){ Map<String, Object> queryWhere = new HashMap<String, Object>(); //查询条件 queryWhere.put("lx", getPara("news.lx")); queryWhere.put("bt", getPara("news.bt")); queryWhere.put("zt", getPara("news.zt")); //分页 String currentPage = getPara("pageBean.currentPage"); String pageSize = getPara("pageBean.pageSize"); if(currentPage==null || currentPage.equals(""))currentPage = "1"; if(pageSize==null || pageSize.equals(""))pageSize = "15"; queryWhere.put("currentPage",Integer.parseInt(currentPage)); queryWhere.put("pageSize",Integer.parseInt(pageSize)); Page<News> newsPage = News.dao.findByPageBean(queryWhere); setAttr("newsPage", newsPage); setAttr("queryWhere", queryWhere); render("list.jsp"); } /** * @Title: add * @Description: TODO(新增页面) */ public void add() { createToken("tokenid"); } /** * @Title: save * @Description: TODO(新增保存) */ public void save() { if(!validateToken("tokenid")){ StringBuilder sb = new StringBuilder(); sb.append("<script type='text/javascript'>"); sb.append("alert('禁止重复提交表单!');"); sb.append("document.location.href='"+RequestUtil.getBasePath(getRequest())+"admin/news/add' "); sb.append("</script>"); renderJavascript(sb.toString()); return; }else{ //获取数据 News news = getModel(News.class); news.set("id", RequestUtil.getUUID()); int fwrs = (int) (Math.random()*200); news.set("fwrs",fwrs); news.set("zt", 0); //图片解析 //生成效果图 String imagePath = getFirstImagePath(news.get("zw")+""); if(imagePath!=null && !"".equals(imagePath)){ //保存效果图 news.set("tj",imagePath); //生成缩阅图 String basepath = getSession().getServletContext().getRealPath("/"); if(!basepath.endsWith("/"))basepath+="/"; File image = new File(basepath+imagePath); if(image!=null){ int index = imagePath.lastIndexOf("."); String signImagePath = imagePath.substring(0, index)+"_small_170x130"+imagePath.substring(index); //System.out.println(signImagePath); File signImage = new File(basepath+signImagePath); if(!signImage.exists()){ ImageUtils.buildSmallPic(image, signImage, 170, 130, false); } //保存缩阅图 news.set("syt", signImagePath); } } //保存 news.save(); //更新缓存 //CacheKit.remove("commonCache", "findNewsByPageBean"); //跳转 redirect("/admin/news"); } } /** * @Title: getFirstImagePath * @Description: TODO(取得第一张图片作为效果图) * @return */ private String getFirstImagePath(String source){ String imagePath = ""; Pattern p = Pattern.compile("<img [\\s\\S]+? src=\".*/(resource/upload/news/images/[\\s\\S]+?)\""); Matcher m = p.matcher(source); if(m.find()){ imagePath = m.group(1); } return imagePath; } /** * @Title: edit * @Description: TODO(修改页面) */ public void edit() { createToken("tokenid"); setAttr("news",News.dao.findById(getPara("id"))); } /** * @Title: update * @Description: TODO(修改保存) */ public void update() { if(!validateToken("tokenid")){ StringBuilder sb = new StringBuilder(); sb.append("<script type='text/javascript'>"); sb.append("alert('禁止重复提交表单!');"); sb.append("document.location.href='"+RequestUtil.getBasePath(getRequest())+"admin/news' "); sb.append("</script>"); renderJavascript(sb.toString()); return; }else{ //修改 News news = getModel(News.class); //图片解析 //生成效果图 String imagePath = getFirstImagePath(news.get("zw")+""); if(imagePath!=null && !"".equals(imagePath)){ //保存效果图 news.set("tj",imagePath); //生成缩阅图 String basepath = getSession().getServletContext().getRealPath("/"); if(!basepath.endsWith("/"))basepath+="/"; File image = new File(basepath+imagePath); if(image!=null){ int index = imagePath.lastIndexOf("."); String signImagePath = imagePath.substring(0, index)+"_small_170x130"+imagePath.substring(index); //System.out.println(signImagePath); File signImage = new File(basepath+signImagePath); if(!signImage.exists()){ ImageUtils.buildSmallPic(image, signImage, 170, 130, false); } //保存缩阅图 news.set("syt", signImagePath); } } //数据更新 news.update(); //更新缓存 //CacheKit.remove("commonCache", "findNewsByPageBean"); //跳转 redirect("/admin/news"); } } /** * @Title: del * @Description: TODO(删除或批量删除) */ public void delete(){ //删除 String ids = getPara("id"); for(String id: ids.split(",")){ News.dao.deleteById(id); } //更新缓存 //CacheKit.remove("commonCache", "findNewsByPageBean"); redirect("/admin/news"); } /** * @Title: check * @Description: TODO(审核) */ public void check(){ String ids = getPara("id"); String zt = getPara("zt"); for(String id: ids.split(",")){ News.dao.checkNews(id,zt); } //更新缓存 //CacheKit.remove("commonCache", "findNewsByPageBean"); redirect("/admin/news"); }
public void addFwrs(){ String carId = getPara("newsId"); News.dao.addFwrs(carId); renderText("增加访问人数成功"); return; } }
4、freemarker
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <base href="${basePath}" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="keywords" content="${settings.gjz}" /> <meta name="description" content="${settings.zy}" /> <meta name="viewport" content="width=device-width" /> <meta name="viewport" content="width=1136" /> <title>${settings.mc} - 官方网站</title> <link type="text/css" href="css/index.css" rel="stylesheet" /> <link type="text/css" href="css/sf.css" rel="stylesheet"/> <script type="text/javascript" src="js/jquery.min.js"></script> <script type="text/javascript" src="http://a.tbcdn.cn/s/kissy/1.3.0/kissy-min.js"></script> <script type="text/javascript" src="http://a.tbcdn.cn/apps/e/brix/brix-min.js" bx-config="{autoConfig:true,componentsPath:'./',importsPath:'./'}"></script> <script type="text/javascript" src="js/jquery.bxslider.js"></script> <script type="text/javascript" src="js/jcarousellite_1.0.1.js"></script> <script type="text/javascript" src="js/js.js"></script> <!--[if IE 6]> <script type="text/javascript" src="js/png.js"></script> <script type="text/javascript"> PNG.fix('.png') </script> <![endif]--> </head> <body> <iframe src="${path}/top/" frameBorder="0" width="100%" scrolling="no" height="492" ></iframe> <div class="home_main"> <div class="home_neir"> <div class="zhuanye"><img src="images/xuchtitle.png" width="567" height="73"></div> <div class="yewuinfo" id="J_identity"> <ul class="kwicks" id="ulkwicks7"> <li> <div class="kwicks_inner ks-clear" id="tm_sale"> <a class="bigLetter index_tm" href="javascript:void(0);"></a> <a class="bigLetter J_index index_tm_hover" href="javascript:void(0);"></a> <a class="smallLetters" href="javascript:void(0);"> <span class="ywspan hy02">消纳证办理</span> <span class="ywnr">公司为客户办理“北京市建筑垃圾消纳许可证”服务</span> </a> </div> </li> <li> <div class="kwicks_inner ks-clear" id="tb_sale"> <a class="bigLetter index_tb" href="javascript:void(0);"></a> <a class="bigLetter J_index index_tb_hover" href="javascript:void(0);"></a> <a class="smallLetters" href="javascript:void(0);" target="_self"> <span class="ywspan hy01">普通货运</span> <span class="ywnr">公司为客户提供优质、快速、便捷、安全的全国货运服务</span> </a> </div> </li> <li> <div class="kwicks_inner ks-clear"> <a class="bigLetter index_etao" href="javascript:void(0);"></a> <a class="bigLetter J_index index_etao_hover" href="javascript:void(0);"></a> <a class="smallLetters" href="javascript:void(0);"> <span class="ywspan hy03">大型机械设备租赁</span> <span class="ywnr">公司为客户提供各类型铲车、挖掘机、破碎锤、渣土运输车辆租赁服务</span> </a> </div> </li> <li> <div class="kwicks_inner ks-clear"> <a class="bigLetter index_other" href="javascript:void(0);"></a> <a class="bigLetter J_index index_other_hover" href="javascript:void(0);"></a> <a class="smallLetters" href="javascript:void(0);"> <span class="ywspan hy04">土方、建筑、沙石清运</span> <span class="ywnr">公司为客户提供土方、建筑、沙石的挖掘、装载、清运等优质服务</span> </a> </div> </li> </ul> </div> </div> </div> <div class="home_about"> <div class="hoab_main"> <div class="about_title"><img src="images/home_about.png" width="426" height="44"></div> <div class="ho_team"> <span class="hotitle"><img src="images/index_ho01.png" width="192" height="17"></span> <span class="teampic"><img src="images/teampic.jpg" width="320" height="99"></span> <span class="teamwz"> 北京丰帆佳宇运输有限公司成立于2011年11月16日,注册资金300万,坐落于北京市顺义区龙湾屯镇府前街。公司主要从事普通货运、大型机械设备租赁,土方、建筑垃圾及沙石的清运工作。公司现有员工25名,运输车辆福田十轮自卸车20辆,全部符合《建筑垃圾运输车辆标识、监控和封闭技术要求》,铲车50型5辆,挖掘机300型3台。破碎锤230型1台,并且有自己的修理厂专门服务于所属车队,时刻保持车队良好的运行。</span> </div> <div class="carteam"> <span class="hotitle car"><img src="images/index_ho02.png" width="228" height="19"></span> <div class="kache"> <ul> <#if cars??> <#list cars as car> <li><a href="${path}/car?carId=${car.id}#001" target="_blank"><img <#if car.syt??>src="${path}/${car.syt}"</#if> width="200" height="132"></a></li> </#list> </#if> </ul> </div> </div> <div class="fllow"> <span class="hotitle car"><img src="images/index_ho03.png" width="125" height="17"></span> <div class="fllow_info"> <span class="weibo">ID:${settings.wb}</span> <span class="weixin">ID:${settings.wx}</span> </div> <div class="add_info"> 地址:${settings.dz}</br> 电话:${settings.zj} <br> 手机:${settings.sj}(李月波-总经理)<br/> 13311384678(李志强-副总经理) </div> </div> </div> </div> <iframe src="${path}/buttom/" frameBorder="0" width="100%" scrolling="no" height="104" ></iframe> </body> <script type="text/javascript"> KISSY.use("brix/gallery/kwicks/",function(S,Kwicks){ var kwicks1 = new Kwicks({ container:'#J_identity', tmpl:'#ulkwicks7', max:460, spacing:79, autoplay:false, sticky:false }); }); $(function () { win_width = document.documentElement.clientWidth; var curimgH = Math.floor(win_width / 1573 * 352); jQuery('#slideshow .img').css({ height: curimgH}); var bannersider=jQuery('#slideshow .img').bxSlider({ auto: true, speed: 2000 }); jQuery('#slideshow').mouseenter(function(){ jQuery(this).find(".bx-prev").stop().animate({left:"5%"},400); jQuery(this).find(".bx-next").stop().animate({right:"5%"},400); bannersider.stopAuto(); }); jQuery('#slideshow').mouseleave(function(){ jQuery(this).find(".bx-prev").stop().animate({left:"-5%"},300); jQuery(this).find(".bx-next").stop().animate({right:"-5%"},300); bannersider.startAuto(); });
$(".main_div_div").hover(function () { $(this).find(".ad").stop(); $(this).find(".ad").fadeIn(300); }, function () { $(this).find(".ad").stop(); $(this).find(".ad").fadeOut(300); }); }); </script>
5、静态页面生成器
package com.bjffjy.core;
import java.io.BufferedWriter; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStreamWriter; import java.util.HashMap; import java.util.List;
import com.bjffjy.init.BjffjyPropertyRegistry; import com.bjffjy.model.Car; import com.bjffjy.model.News; import com.bjffjy.model.Picture; import com.bjffjy.util.PageBean; import com.bjffjy.util.ResourceManager; import com.jfinal.core.Controller;
import freemarker.template.Configuration; import freemarker.template.Template;
/** * @Title: UpdateCenterController.java * @Description: TODO(数据更新中心控制类) * @Author Comsys-XCP * @Date 2014-7-18 上午11:12:12 * @Company 北京丰帆佳宇公司 */ public class UpdateCenterController extends Controller{ //private static Logger log = Logger.getLogger(UpdateCenterController.class); //模板存放文件夹 private String templatePath; //基本路径-网络 private String basePath ; private String basePath2 ; //模板传送数据 private HashMap<String, Object> data = null; public void index(){ renderJsp("/admin/template/updateCenter.jsp"); } public void build(){ templatePath = getSession().getServletContext().getRealPath(BjffjyPropertyRegistry.TEMPLATE_PATH); //basePath = RequestUtil.getBasePath2(getRequest()); basePath = ResourceManager.getValue("basePath"); basePath2 = basePath + BjffjyPropertyRegistry.TEMPLATE_PATH; //数据设置 data = new HashMap<String, Object>(); data.put("path", basePath); data.put("basePath", basePath2); data.put("settings",getSession().getServletContext().getAttribute("settings")); String type = getPara("type")+""; String message = "数据更新中心成功"; try{ if(type.equals("1")){//刷新菜单导航 buildTop(); }else if(type.equals("2")){//刷新版权备案 buildButtom(); }else if(type.equals("3")){//刷新网站首页 buildIndex(); }else if(type.equals("4")){//刷新新闻列表 buildNewsList(); }else if(type.equals("5")){//刷新新闻内容 buildNews(); }else if(type.equals("6")){//刷新公司服务 buildService(); }else if(type.equals("7")){//刷新车队列表 buildCarList(); }else if(type.equals("8")){//刷新车队内容 buildCar(); }else if(type.equals("9")){//刷新关于我们 buildAbout(); }else if(type.equals("10")){//刷新全部 buildTop(); buildButtom(); buildIndex(); buildNewsList(); buildNews(); buildService(); buildCarList(); buildCar(); buildAbout(); } }catch(Exception e){ e.printStackTrace(); message = "数据更新中心失败"; } renderText(message); return; }
/** * @Title: buildTop * @Description: TODO(通过template/default/top.ftl模板文件生成template/default/static/top.html文件) */ private void buildTop() throws Exception{ //读取模板 Template template = getTemplate(templatePath,"top.ftl"); File top = new File(templatePath+File.separator+"static"+File.separator+"top.html"); //获取输出流 BufferedWriter out = getWriter(top); //要传送的数据 //生在静态页面 template.process(data, out); //关闭流 if(out!=null){ out.flush(); out.close(); }; } /** * @Title: buildButtom * @Description: TODO(通过template/default/buttom.ftl模板文件生成template/default/static/buttom.html文件) * @throws Exception */ private void buildButtom() throws Exception{ //读取模板 Template template = getTemplate(templatePath,"buttom.ftl"); File top = new File(templatePath+File.separator+"static"+File.separator+"buttom.html"); //获取输出流 BufferedWriter out = getWriter(top); //要传送的数据 //生在静态页面 template.process(data, out); //关闭流 if(out!=null){ out.flush(); out.close(); }; } /** * @Title: buildButtom * @Description: TODO(通过template/default/index.ftl模板文件生成template/default/static/index.html文件) * @throws Exception */ private void buildIndex() throws Exception{ //读取模板 Template template = getTemplate(templatePath,"index.ftl"); File top = new File(templatePath+File.separator+"static"+File.separator+"index.html"); //获取输出流 BufferedWriter out = getWriter(top); //要传送的数据 //查询最新发布的3个车辆信息 List<Car> cars = Car.dao.findTop3ForIndex(); List<Picture> pics = Picture.dao.findByCustom(); data.put("cars", cars); data.put("pics", pics); //生在静态页面 template.process(data, out); //关闭流 if(out!=null){ out.flush(); out.close(); }; } /** * @Title: buildNewsList * @Description: TODO(通过template/default/newsList.ftl模板文件生成template/default/static/newslist.html文件) */ private void buildNewsList() throws Exception{ //读取模板 Template template = getTemplate(templatePath,"newsList.ftl"); //获取输出流 File top = null; BufferedWriter out = null; //分页 PageBean pagebean = new PageBean(1,15); //全部资讯 String lx = "0"; int allCount = News.dao.countNews(lx); pagebean.setAllRow(allCount); pagebean.countTotalPage(allCount); boolean hasNext = true; String fileName = "newslist"; while(hasNext){ if(pagebean.getCurrentPage()==1){ top = new File(templatePath+File.separator+"static"+File.separator+fileName+".html"); }else{ top = new File(templatePath+File.separator+"static"+File.separator+fileName+pagebean.getCurrentPage()+".html"); } out = getWriter(top); //要传送的数据 List<News> newslist = News.dao.findAllNews(lx,pagebean); data.put("newslist",newslist); data.put("pagebean",pagebean); data.put("lx",lx); //生在静态页面 template.process(data, out); //关闭流 if(out!=null){ out.flush(); out.close(); }; //查询第二页 if(pagebean.getCurrentPage()<pagebean.getTotalPage()){ pagebean.setCurrentPage(pagebean.getCurrentPage()+1); }else{ hasNext = false; } } //公司动态 lx = "1"; int companyCount = News.dao.countNews(lx); pagebean = new PageBean(1,15); pagebean.setAllRow(companyCount); pagebean.countTotalPage(companyCount); hasNext = true; fileName = "companylist"; while(hasNext){ if(pagebean.getCurrentPage()==1){ top = new File(templatePath+File.separator+"static"+File.separator+fileName+".html"); }else{ top = new File(templatePath+File.separator+"static"+File.separator+fileName+pagebean.getCurrentPage()+".html"); } out = getWriter(top); //要传送的数据 List<News> newslist = News.dao.findAllNews(lx,pagebean); data.put("newslist",newslist); data.put("pagebean",pagebean); data.put("lx",lx); //生在静态页面 template.process(data, out); //关闭流 if(out!=null){ out.flush(); out.close(); }; //查询第二页 if(pagebean.getCurrentPage()<pagebean.getTotalPage()){ pagebean.setCurrentPage(pagebean.getCurrentPage()+1); }else{ hasNext = false; } } //行业信息 lx = "2"; int tradeCount = News.dao.countNews(lx); pagebean = new PageBean(1,15); pagebean.setAllRow(tradeCount); pagebean.countTotalPage(tradeCount); hasNext = true; fileName = "tradelist"; while(hasNext){ if(pagebean.getCurrentPage()==1){ top = new File(templatePath+File.separator+"static"+File.separator+fileName+".html"); }else{ top = new File(templatePath+File.separator+"static"+File.separator+fileName+pagebean.getCurrentPage()+".html"); } out = getWriter(top); //要传送的数据 List<News> newslist = News.dao.findAllNews(lx,pagebean); data.put("newslist",newslist); data.put("pagebean",pagebean); data.put("lx",lx); //生在静态页面 template.process(data, out); //关闭流 if(out!=null){ out.flush(); out.close(); }; //查询第二页 if(pagebean.getCurrentPage()<pagebean.getTotalPage()){ pagebean.setCurrentPage(pagebean.getCurrentPage()+1); }else{ hasNext = false; } } } /** * @Title: buildNews * @Description: TODO(通过template/default/news.ftl模板文件生成template/default/static/news.html文件) * @throws Exception */ private void buildNews() throws Exception{ //读取模板 Template template = getTemplate(templatePath,"news.ftl"); //获取输出流 File top = null; BufferedWriter out = null; //全部资讯 String lx = "0"; //分页 PageBean pagebean = new PageBean(1,15); int allCount = News.dao.countNews(lx); pagebean.setAllRow(allCount); pagebean.countTotalPage(allCount); boolean hasNext = true; while(hasNext){ List<News> newslist = News.dao.findAllNews2(lx,pagebean); for(News news: newslist){ //要传送的数据 top = new File(templatePath+File.separator+"static"+File.separator+"news"+File.separator+news.getStr("id")+".html"); out = getWriter(top); data.put("news",news); //生在静态页面 template.process(data, out); //关闭流 if(out!=null){ out.flush(); out.close(); }; } //查询第二页 if(pagebean.getCurrentPage()<pagebean.getTotalPage()){ pagebean.setCurrentPage(pagebean.getCurrentPage()+1); }else{ hasNext = false; } } } /** * @Title: buildService * @Description: TODO(通过template/default/service.ftl模板文件生成template/default/static/service.html文件) * @throws Exception */ private void buildService() throws Exception{ //读取模板 Template template = getTemplate(templatePath,"service.ftl"); File top = new File(templatePath+File.separator+"static"+File.separator+"service.html"); //获取输出流 BufferedWriter out = getWriter(top); //要传送的数据 List<Picture> pics = Picture.dao.findByPatner(); data.put("pics", pics); //生在静态页面 template.process(data, out); //关闭流 if(out!=null){ out.flush(); out.close(); }; } /** * @Title: buildCarList * @Description: TODO(通过template/default/carList.ftl模板文件生成template/default/static/carlist.html文件) * @throws Exception */ private void buildCarList() throws Exception{ //读取模板 Template template = getTemplate(templatePath,"carList.ftl"); File top = new File(templatePath+File.separator+"static"+File.separator+"carlist.html"); //获取输出流 BufferedWriter out = getWriter(top); //要传送的数据 List<Car> cars = Car.dao.findAllForIndex(); data.put("cars", cars); //生在静态页面 template.process(data, out); //关闭流 if(out!=null){ out.flush(); out.close(); }; } /** * @Title: buildCar * @Description: TODO(通过template/default/car.ftl模板文件生成template/default/static/car.html文件) * @throws Exception */ private void buildCar() throws Exception{ //读取模板 Template template = getTemplate(templatePath,"car.ftl"); //读取所有车辆 List<Car> cars = Car.dao.findAllForIndex(); File top = null; BufferedWriter out = null; String carId = ""; if(cars!=null){ data.remove("car"); data.remove("pics"); for(Car car : cars){ carId = car.getStr("id"); top = new File(templatePath+File.separator+"static"+File.separator+"car"+File.separator+carId+".html"); //获取输出流 out = getWriter(top); //要传送的数据 List<Picture> pics = Picture.dao.findByYwid("1",carId); if(car.get("bz")==null)car.set("bz", ""); data.put("car", car); data.put("pics", pics); //生在静态页面 template.process(data, out); //关闭流 if(out!=null){ out.flush(); out.close(); }; } } } /** * @Title: buildAbout * @Description: TODO(通过template/default/about.ftl模板文件生成template/default/static/about.html文件) * @throws Exception */ private void buildAbout() throws Exception{ //读取模板 Template template = getTemplate(templatePath,"about.ftl"); File top = new File(templatePath+File.separator+"static"+File.separator+"about.html"); //获取输出流 BufferedWriter out = getWriter(top); //要传送的数据 List<Picture> pics = Picture.dao.findByZzry(); data.put("pics", pics); //生在静态页面 template.process(data, out); //关闭流 if(out!=null){ out.flush(); out.close(); }; }
/** * @Title: getConfiguration * @Description: TODO(获取模板文件夹) * @throws IOException */ private Configuration getConfiguration(String templatePath) throws IOException{ Configuration cfg = new Configuration(); cfg.setDefaultEncoding("UTF-8"); cfg.setDirectoryForTemplateLoading(new File(templatePath)); return cfg; } /** * @Title: getTemplate * @Description: TODO(获取模板文件) * @param templatePath 模板文件夹路径 * @param templateName 模板文件名称 * @throws IOException */ private Template getTemplate(String templatePath,String templateName)throws IOException{ Configuration cfg = getConfiguration(templatePath); Template template = cfg.getTemplate(templateName); template.setEncoding("UTF-8"); return template; } /** * @Title: getWriter * @Description: TODO(获取缓冲输出流) * @param file 输出文件 */ private BufferedWriter getWriter(File file) throws Exception{ if(file!=null && file.exists()) file.delete(); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(file),"UTF-8")); return bw; } }