前面学习了一个开源框架Jfinal,并用此框架开发了一个实例网站现进行分享.
公司名称: 北京丰帆佳宇运输有限公司
公司简介:渣土消纳证办理,大型支护土方深度开挖,矿山暗挖,基坑开挖,建筑垃圾清运,渣土清运,砂石料配送,工程机械租赁业务
公司网址: www.bjffjy.com
1、框架Jfinal+ freemarker+mysql
2、Web.xml
<? xml version="1.0" encoding="UTF-8" ?>
公司名称: 北京丰帆佳宇运输有限公司
公司简介:渣土消纳证办理,大型支护土方深度开挖,矿山暗挖,基坑开挖,建筑垃圾清运,渣土清运,砂石料配送,工程机械租赁业务
公司网址: 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 >
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);
}
}
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);
}
}
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);
}
}
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);
}
}
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;
}
}
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>
<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;
}
}
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: 联系我