天天看點

HTML頁面靜态化實作

靜态化檔案位置注意:

<a href="https://s3.51cto.com/wyfs02/M00/A4/FF/wKioL1m2KwSD3R_pAAAjiwpj0zM659.png" target="_blank"></a>

實體類定義:

<code>public</code> <code>class</code> <code>News {</code>

<code>    </code><code>private</code> <code>String title;</code>

<code>    </code><code>private</code> <code>String pubTime;</code>

<code>    </code><code>private</code> <code>String category;</code>

<code>    </code><code>private</code> <code>String newsContent;</code>

<code>    </code> 

<code>    </code><code>public</code> <code>String getTitle() {</code>

<code>        </code><code>return</code> <code>title;</code>

<code>    </code><code>}</code>

<code>    </code><code>public</code> <code>void</code> <code>setTitle(String title) {</code>

<code>        </code><code>this</code><code>.title = title;</code>

<code>    </code><code>public</code> <code>String getPubTime() {</code>

<code>        </code><code>return</code> <code>pubTime;</code>

<code>    </code><code>public</code> <code>void</code> <code>setPubTime(String pubTime) {</code>

<code>        </code><code>this</code><code>.pubTime = pubTime;</code>

<code>    </code><code>public</code> <code>String getCategory() {</code>

<code>        </code><code>return</code> <code>category;</code>

<code>    </code><code>public</code> <code>void</code> <code>setCategory(String category) {</code>

<code>        </code><code>this</code><code>.category = category;</code>

<code>    </code><code>public</code> <code>String getNewsContent() {</code>

<code>        </code><code>return</code> <code>newsContent;</code>

<code>    </code><code>public</code> <code>void</code> <code>setNewsContent(String newsContent) {</code>

<code>        </code><code>this</code><code>.newsContent = newsContent;</code>

<code>}</code>

自定義流的工具類

<code>public</code> <code>class</code> <code>CharStreamIO {</code>

<code>    </code><code>public</code> <code>void</code> <code>copyFile(String fsrc,String fDest){</code>

<code>        </code><code>File file = </code><code>new</code> <code>File(fDest);</code>

<code>        </code><code>if</code><code>(file.exists()){</code>

<code>            </code><code>file.delete();</code>

<code>        </code><code>}</code>

<code>        </code><code>PrintWriter out = </code><code>null</code><code>;</code>

<code>        </code><code>BufferedReader in = </code><code>null</code><code>;</code>

<code>        </code><code>try</code> <code>{</code>

<code>            </code><code>in = </code><code>new</code> <code>BufferedReader(</code><code>new</code> <code>FileReader(fsrc));</code>

<code>            </code><code>out = </code><code>new</code> <code>PrintWriter(</code><code>new</code> <code>BufferedWriter(</code><code>new</code> <code>FileWriter(fDest)));</code>

<code>            </code><code>String strRet;</code>

<code>            </code><code>while</code><code>((strRet=in.readLine()) != </code><code>null</code><code>){               </code>

<code>                </code><code>out.println(strRet);</code>

<code>                </code><code>out.flush();</code>

<code>            </code><code>}          </code>

<code>        </code><code>} </code><code>catch</code> <code>(Exception e) {</code>

<code>            </code><code>e.printStackTrace();</code>

<code>        </code><code>}</code><code>finally</code><code>{</code>

<code>            </code><code>if</code><code>(in != </code><code>null</code><code>){</code>

<code>                </code><code>try</code> <code>{</code>

<code>                    </code><code>in.close();</code>

<code>                </code><code>} </code><code>catch</code> <code>(Exception e2) {</code>

<code>                    </code><code>e2.printStackTrace();</code>

<code>                </code><code>}</code>

<code>            </code><code>}</code>

<code>            </code><code>if</code><code>(out != </code><code>null</code><code>){</code>

<code>                    </code><code>out.close();   </code>

<code>                </code><code>}              </code>

<code>    </code><code>/**</code>

<code>     </code><code>* 把傳入的資訊,儲存成檔案</code>

<code>     </code><code>* @param finfo   傳入的檔案内容資訊</code>

<code>     </code><code>* @param fname   目标路徑和檔案名</code>

<code>     </code><code>*/</code>

<code>    </code><code>public</code> <code>void</code> <code>writeFile(String finfo,String fDest){</code>

<code>            </code><code>out.write(finfo);  </code>

<code>            </code><code>out.flush();</code>

<code>            </code><code>if</code><code>(out !=</code><code>null</code><code>){</code>

<code>                </code><code>out.close();</code>

<code>        </code><code>}      </code>

<code>     </code><code>* 讀取文本型檔案   </code>

<code>     </code><code>* @param name</code>

<code>     </code><code>* @return</code>

<code>    </code><code>public</code> <code>String readFile(String fname){</code>

<code>        </code> 

<code>        </code><code>File file = </code><code>new</code> <code>File(fname);</code>

<code>        </code><code>StringBuilder bild = </code><code>new</code> <code>StringBuilder();</code>

<code>            </code><code>try</code> <code>{</code>

<code>                </code><code>in = </code><code>new</code> <code>BufferedReader(</code><code>new</code> <code>FileReader(fname));</code>

<code>                </code><code>String strRet;</code>

<code>                </code><code>while</code><code>((strRet=in.readLine()) != </code><code>null</code><code>){</code>

<code>                    </code><code>bild.append(strRet);</code>

<code>            </code><code>} </code><code>catch</code> <code>(Exception e) {</code>

<code>                </code><code>e.printStackTrace();</code>

<code>            </code><code>}</code><code>finally</code><code>{</code>

<code>                </code><code>if</code><code>(in != </code><code>null</code><code>){</code>

<code>                    </code><code>try</code> <code>{</code>

<code>                        </code><code>in.close();</code>

<code>                    </code><code>} </code><code>catch</code> <code>(Exception e2) {</code>

<code>                        </code><code>e2.printStackTrace();</code>

<code>                    </code><code>}                  </code>

<code>            </code> 

<code>        </code><code>}</code><code>else</code><code>{</code>

<code>            </code><code>System.out.println(fname + </code><code>"不存在"</code><code>);</code>

<code>      </code><code>return</code> <code>bild.toString();   </code>

資料通路層

<code>public</code> <code>class</code> <code>NewsDao {</code>

<code>     </code><code>* 讀取資料庫中要生成的新聞資訊</code>

<code>    </code><code>public</code> <code>List&lt;News&gt; getAllNews(){</code>

<code>        </code><code>CharStreamIO io = </code><code>new</code> <code>CharStreamIO();</code>

<code>        </code><code>SimpleDateFormat sd = </code><code>new</code> <code>SimpleDateFormat(</code><code>"yyyy-MM-dd HH:mm:ss"</code><code>);    </code>

<code>        </code><code>List&lt;News&gt; newsList = </code><code>new</code> <code>ArrayList&lt;News&gt;();</code>

<code>        </code><code>News n1 = </code><code>new</code> <code>News();</code>

<code>        </code><code>n1.setCategory(</code><code>"sport"</code><code>);</code>

<code>        </code><code>String c1 = io.readFile(</code><code>"NewsInfo\\news1.txt"</code><code>);</code>

<code>        </code><code>n1.setNewsContent(c1);     </code>

<code>        </code><code>n1.setPubTime(sd.format(</code><code>new</code> <code>Date()));</code>

<code>        </code><code>n1.setTitle(</code><code>"深足教練組:說我們買球是侮辱 朱廣滬常暗中支招"</code><code>);</code>

<code>        </code><code>News n2 = </code><code>new</code> <code>News();</code>

<code>        </code><code>n2.setCategory(</code><code>"hot"</code><code>);</code>

<code>        </code><code>String c2 = io.readFile(</code><code>"\\NewsInfo\\news2.txt"</code><code>);</code>

<code>        </code><code>n2.setNewsContent(c2);</code>

<code>        </code><code>n2.setPubTime(sd.format(</code><code>new</code> <code>Date()));</code>

<code>        </code><code>n2.setTitle(</code><code>"對對對發發發失誤失誤"</code><code>);</code>

<code>        </code><code>newsList.add(n1);</code>

<code>        </code><code>newsList.add(n2);</code>

<code>        </code><code>return</code> <code>newsList;</code>

業務邏輯層

<code>public</code> <code>class</code> <code>NewsBiz {</code>

<code>    </code><code>public</code> <code>void</code> <code>createAllNews() </code><code>throws</code> <code>Exception{      </code>

<code>        </code><code>NewsDao dao = </code><code>new</code> <code>NewsDao();</code>

<code>        </code><code>List&lt;News&gt; newsList = dao.getAllNews();</code>

<code>        </code><code>String destPath = </code><code>"/News/newspages"</code><code>;</code>

<code>        </code><code>for</code><code>(</code><code>int</code> <code>i=</code><code>0</code><code>;i&lt;newsList.size();i++){</code>

<code>            </code><code>//讀取模闆</code>

<code>            </code><code>CharStreamIO io = </code><code>new</code> <code>CharStreamIO();</code>

<code>            </code><code>String tmp = io.readFile(</code><code>"/News/news.tmp"</code><code>);</code>

<code>            </code><code>//替換模闆中的參數資料</code>

<code>            </code><code>News n = newsList.get(i);</code>

<code>            </code><code>String newTmp;</code>

<code>            </code><code>newTmp = tmp.replace(TemplateParam.TITLE, n.getTitle());</code>

<code>            </code><code>newTmp = newTmp.replace(TemplateParam.CATEGORY,n.getCategory());</code>

<code>            </code><code>newTmp = newTmp.replace(TemplateParam.PUB_TIME,n.getPubTime());</code>

<code>            </code><code>newTmp = newTmp.replace(TemplateParam.CONTENT, n.getNewsContent());</code>

<code>            </code><code>//把替換後的内容儲存成新聞頁面</code>

<code>            </code><code>io.writeFile(newTmp, destPath + </code><code>"/news-"</code> <code>+ i + </code><code>".html"</code><code>);        </code>

TemplateParam類

<code>public</code> <code>class</code> <code>TemplateParam {</code>

<code>    </code><code>public</code> <code>static</code> <code>final</code> <code>String TITLE = </code><code>"%{title}%"</code><code>;</code>

<code>    </code><code>public</code> <code>static</code> <code>final</code> <code>String CATEGORY = </code><code>"%{category}%"</code><code>;</code>

<code>    </code><code>public</code> <code>static</code> <code>final</code> <code>String CONTENT = </code><code>"%{newsContent}%"</code><code>;</code>

<code>    </code><code>public</code> <code>static</code> <code>final</code> <code>String PUB_TIME = </code><code>"%{pubTime}%"</code><code>;</code>

使用者接口層

<code>public</code> <code>class</code> <code>NewsTest {</code>

<code>    </code><code>public</code> <code>static</code> <code>void</code> <code>main(String[] args) {</code>

<code>        </code><code>NewsBiz biz = </code><code>new</code> <code>NewsBiz();</code>

<code>            </code><code>biz.createAllNews();   </code>

<code>            </code><code>System.out.println(</code><code>"新聞頁面建立完畢!"</code><code>);</code>

版權聲明:原創作品,謝絕轉載。否則将追究法律責任

本文轉自 叫我北北 51CTO部落格,原文連結:http://blog.51cto.com/qinbin/1964312

繼續閱讀