Webサイトの静的知識ポイントの整理


詳細
*、ウェブサイトの静態化開発を行う場合、システムに導入されたページについてもhtmlを導入する方式を実現したい.これにより、導入されたページが変更された場合、すべての参照ページを静態化する必要がなく、導入されたページの静態化を行うだけでよい.
  :jquery    html   load
http://www.360doc.com/content/15/0610/14/18139076_477138156.shtml

 
*、ウェブサイトの静態化コアの一つ:ウェブサイトのソースコードの取得を要求する
/**
 *        ,   url      
 * @param urlPath     
 * @param requestMethod GET POST,   GET
 * @param codeType GBK UTF-8,   GBK
 */
public static String getHtmlCode(String urlPath , String requestMethod , String codeType) {
	String aimHtml = null;
	try {
		URL url=new URL(urlPath);
	HttpURLConnection httpConn=(HttpURLConnection)url.openConnection();
	
	//    
	httpConn.setDoOutput(true);     	//    
	httpConn.setDoInput(true);      	//    
	httpConn.setUseCaches(false);   	//     
	httpConn.setRequestMethod(StringUtils.isBlank(requestMethod) ? "GET" : requestMethod);   //  GET    
	//httpConn.setConnectTimeout(1000 * 10); //    10 
	//httpConn.setReadTimeout(1000 * 6); //    6 
	//      
	httpConn.setRequestProperty("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8");
	httpConn.setRequestProperty("Accept-Encoding", "gzip, deflate, sdch");
	httpConn.setRequestProperty("Accept-Language", "en-US,en;q=0.8");//    :         
	httpConn.setRequestProperty("Connection", "Keep-Alive");
	httpConn.setRequestProperty("Charset", StringUtils.isBlank(codeType) ? "GBK" : codeType);
	httpConn.setRequestProperty("Cache-Control", "max-age=0");
	httpConn.setRequestProperty("Upgrade-Insecure-Requests", "1");
	httpConn.setRequestProperty("User-Agent", "Mozilla/5.0");
	httpConn.connect();
	
	//      
	int resultCode=httpConn.getResponseCode();
	if(HttpURLConnection.HTTP_OK==resultCode){
	    StringBuffer sb=new StringBuffer();
	    String readLine=new String();
	    BufferedReader responseReader=new BufferedReader(new InputStreamReader(httpConn.getInputStream(),StringUtils.isBlank(codeType) ? "GBK" : codeType));
	    while((readLine=responseReader.readLine())!=null){
		sb.append(readLine).append("
"); } responseReader.close(); aimHtml = sb.toString(); } }catch(Exception e) { aimHtml = null; logger.error(urlPath+" !",e); } return aimHtml; }

 
*静態化ウェブサイトの核心の二つ目は、ソースコードをファイルに書き込み、文字化けしないことである.
/**
 *             HTML   
 * 
 * @param pageContent
 *                
 * @param fileUrl
 *                 
 * @throws Exception
 */
private static void writeHtml(String pageContent, String fileUrl)
		throws Exception {
	try {
		OutputStreamWriter fw = new OutputStreamWriter(
				new FileOutputStream(fileUrl), "UTF-8");
		fw.write(pageContent);
		if (fw != null) {
			fw.close();
		}
	} catch (Exception e) {
		logger.error(fileUrl + "      !", e);
		throw e;
	}
}

 
*、静的時のデータ構造+urlwriterは効率を高め、具体的にはシナリオ分析に基づいて(*^^*)ニコニコ・・・