静态化文件位置注意:

HTML页面静态化实现

实体类定义:

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