静态化文件位置注意:

实体类定义:

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