静态化文件位置注意:

wKioL1m2KwSD3R_pAAAjiwpj0zM659.png

实体类定义:

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();
         }
     }
}