J2EE社區

          茍有恒,何必三更起五更眠;
          最無益,只怕一日曝十日寒.
          posts - 241, comments - 318, trackbacks - 0, articles - 16

          Jfinal實例-北京豐帆佳宇運輸有限公司

          Posted on 2014-09-07 20:43 xcp 閱讀(8002) 評論(0)  編輯  收藏 所屬分類: JAVA
          前面學習了一個開源框架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" style="float:left;"></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" style="float:left;"></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;
              }
          }






          名稱: ?4C.ESL | .↗Evon
          口號: 遇到新問題?先要尋找一個方案乄而不是創造一個方案こ
          mail: 聯系我


          主站蜘蛛池模板: 江山市| 天等县| 扶沟县| 九江市| 沁源县| 全南县| 茂名市| 济阳县| 德格县| 嵊州市| 甘肃省| 松江区| 东山县| 镇安县| 阜城县| 孟津县| 正定县| 日喀则市| 五原县| 广安市| 安宁市| 宁陕县| 江川县| 周口市| 沅江市| 禹州市| 伊川县| 高尔夫| 临潭县| 丹凤县| 闵行区| 班戈县| 高青县| 武定县| 乌兰浩特市| 湖北省| 大田县| 宣化县| 苍溪县| 股票| 浙江省|