静态化文件位置注意:
实体类定义:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | public class News { private String title; private String pubTime; private String category; private String newsContent; public String getTitle() { return title; } public void setTitle(String title) { this .title = title; } public String getPubTime() { return pubTime; } public void setPubTime(String pubTime) { this .pubTime = pubTime; } public String getCategory() { return category; } public void setCategory(String category) { this .category = category; } public String getNewsContent() { return newsContent; } public void setNewsContent(String newsContent) { this .newsContent = newsContent; } } |
自定义流的工具类
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 | public class CharStreamIO { public void copyFile(String fsrc,String fDest){ File file = new File(fDest); if (file.exists()){ file.delete(); } PrintWriter out = null ; BufferedReader in = null ; try { in = new BufferedReader( new FileReader(fsrc)); out = new PrintWriter( new BufferedWriter( new FileWriter(fDest))); String strRet; while ((strRet=in.readLine()) != null ){ out.println(strRet); out.flush(); } } catch (Exception e) { e.printStackTrace(); } finally { if (in != null ){ try { in.close(); } catch (Exception e2) { e2.printStackTrace(); } } if (out != null ){ try { out.close(); } catch (Exception e2) { e2.printStackTrace(); } } } } /** * 把传入的信息,保存成文件 * @param finfo 传入的文件内容信息 * @param fname 目标路径和文件名 */ public void writeFile(String finfo,String fDest){ File file = new File(fDest); if (file.exists()){ file.delete(); } PrintWriter out = null ; try { out = new PrintWriter( new BufferedWriter( new FileWriter(fDest))); out.write(finfo); out.flush(); } catch (Exception e) { e.printStackTrace(); } finally { if (out != null ){ out.close(); } } } /** * 读取文本型文件 * @param name * @return */ public String readFile(String fname){ File file = new File(fname); StringBuilder bild = new StringBuilder(); BufferedReader in = null ; if (file.exists()){ try { in = new BufferedReader( new FileReader(fname)); String strRet; while ((strRet=in.readLine()) != null ){ bild.append(strRet); } } catch (Exception e) { e.printStackTrace(); } finally { if (in != null ){ try { in.close(); } catch (Exception e2) { e2.printStackTrace(); } } } } else { System.out.println(fname + "不存在" ); } return bild.toString(); } } |
数据访问层
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | public class NewsDao { /** * 读取数据库中要生成的新闻信息 * @return */ public List<News> getAllNews(){ CharStreamIO io = new CharStreamIO(); SimpleDateFormat sd = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss" ); List<News> newsList = new ArrayList<News>(); News n1 = new News(); n1.setCategory( "sport" ); String c1 = io.readFile( "NewsInfo\\news1.txt" ); n1.setNewsContent(c1); n1.setPubTime(sd.format( new Date())); n1.setTitle( "深足教练组:说我们买球是侮辱 朱广沪常暗中支招" ); News n2 = new News(); n2.setCategory( "hot" ); String c2 = io.readFile( "\\NewsInfo\\news2.txt" ); n2.setNewsContent(c2); n2.setPubTime(sd.format( new Date())); n2.setTitle( "对对对发发发失误失误" ); newsList.add(n1); newsList.add(n2); return newsList; } } |
业务逻辑层
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | public class NewsBiz { /** * 读取数据库中要生成的新闻信息 * @return */ public void createAllNews() throws Exception{ NewsDao dao = new NewsDao(); List<News> newsList = dao.getAllNews(); String destPath = "/News/newspages" ; for ( int i= 0 ;i<newsList.size();i++){ //读取模板 CharStreamIO io = new CharStreamIO(); String tmp = io.readFile( "/News/news.tmp" ); //替换模板中的参数数据 News n = newsList.get(i); String newTmp; newTmp = tmp.replace(TemplateParam.TITLE, n.getTitle()); newTmp = newTmp.replace(TemplateParam.CATEGORY,n.getCategory()); newTmp = newTmp.replace(TemplateParam.PUB_TIME,n.getPubTime()); newTmp = newTmp.replace(TemplateParam.CONTENT, n.getNewsContent()); //把替换后的内容保存成新闻页面 io.writeFile(newTmp, destPath + "/news-" + i + ".html" ); } } } |
TemplateParam类
1 2 3 4 5 6 7 8 | public class TemplateParam { public static final String TITLE = "%{title}%" ; public static final String CATEGORY = "%{category}%" ; public static final String CONTENT = "%{newsContent}%" ; public static final String PUB_TIME = "%{pubTime}%" ; } |
用户接口层
1 2 3 4 5 6 7 8 9 10 11 12 | public class NewsTest { public static void main(String[] args) { NewsBiz biz = new NewsBiz(); try { biz.createAllNews(); System.out.println( "新闻页面创建完毕!" ); } catch (Exception e) { e.printStackTrace(); } } } |