HTMLでページの静的化を実装する事例

黄舟
リリース: 2017-10-24 10:13:17
オリジナル
3889 人が閲覧しました

静态化文件位置注意:

HTMLでページの静的化を実装する事例

实体类定义:

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;
	}
}
ログイン後にコピー

自定义流的工具类

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

}
ログイン後にコピー

数据访问层

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;
		
	}
}
ログイン後にコピー

业务逻辑层

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类

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}%";

}
ログイン後にコピー

用户接口层

public class NewsTest {
	
	public static void main(String[] args) {
		NewsBiz biz = new NewsBiz();
		try {
			biz.createAllNews();	
			System.out.println("新闻页面创建完毕!");
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}
ログイン後にコピー

以上がHTMLでページの静的化を実装する事例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート