欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
網(wǎng)站HTML靜態(tài)化解決方案

最近在做一個(gè)項目,其中一部分的訪(fǎng)問(wèn)頻率較高但內容變動(dòng)較小。所以使用網(wǎng)站HTML靜態(tài)化方案來(lái)優(yōu)化訪(fǎng)問(wèn)速度

當一個(gè)Servlet資源請求到達WEB服務(wù)器之后我們會(huì )填充指定的JSP頁(yè)面來(lái)響應請求:

HTTP請求---Web服務(wù)器---Servlet--業(yè)務(wù)邏輯處理--訪(fǎng)問(wèn)數據--填充JSP--響應請求

HTML靜態(tài)化之后:

HTTP請求---Web服務(wù)器---Servlet--HTML--響應請求

嘿嘿,是不是很爽?省去了業(yè)務(wù)邏輯處理和數據抓取直接響應。

Servlet:

  1. public void doGet(HttpServletRequest request, HttpServletResponse response)   
  2.         throws ServletException, IOException {   
  3.     if(request.getParameter("chapterId") != null){   
  4.         String chapterFileName = "bookChapterRead_"+request.getParameter("chapterId")+".html";   
  5.         String chapterFilePath = getServletContext().getRealPath("/") + chapterFileName;   
  6.         File chapterFile = new File(chapterFilePath);   
  7.         if(chapterFile.exists()){response.sendRedirect(chapterFileName);return;}//如果有這個(gè)文件就告訴瀏覽器轉向   
  8.         INovelChapterBiz novelChapterBiz = new NovelChapterBizImpl();   
  9.         NovelChapter novelChapter = novelChapterBiz.searchNovelChapterById(Integer.parseInt(request.getParameter("chapterId")));//章節信息   
  10.         int lastPageId = novelChapterBiz.searchLastCHapterId(novelChapter.getNovelId().getId(), novelChapter.getId());   
  11.         int nextPageId = novelChapterBiz.searchNextChapterId(novelChapter.getNovelId().getId(), novelChapter.getId());   
  12.         request.setAttribute("novelChapter", novelChapter);   
  13.         request.setAttribute("lastPageId", lastPageId);   
  14.         request.setAttribute("nextPageId", nextPageId);   
  15.         new CreateStaticHTMLPage().createStaticHTMLPage(request, response, getServletContext(),    
  16.                 chapterFileName, chapterFilePath, "/bookRead.jsp");   
  17.     }   
  18. }  
 

 

生成HTML靜態(tài)頁(yè)面的類(lèi):

  1. package com.jb.y2t034.thefifth.web.servlet;   
  2. import java.io.ByteArrayOutputStream;   
  3. import java.io.FileOutputStream;   
  4. import java.io.IOException;   
  5. import java.io.OutputStreamWriter;   
  6. import java.io.PrintWriter;   
  7. import javax.servlet.RequestDispatcher;   
  8. import javax.servlet.ServletContext;   
  9. import javax.servlet.ServletException;   
  10. import javax.servlet.ServletOutputStream;   
  11. import javax.servlet.http.HttpServletRequest;   
  12. import javax.servlet.http.HttpServletResponse;   
  13. import javax.servlet.http.HttpServletResponseWrapper;   
  14. /**  
  15.  * 創(chuàng )建HTML靜態(tài)頁(yè)面  
  16.  * 功能:創(chuàng )建HTML靜態(tài)頁(yè)面  
  17.  * 時(shí)間:2009年1011日  
  18.  * 地點(diǎn):home  
  19.  * @author mavk  
  20.  *  
  21.  */  
  22. public class CreateStaticHTMLPage {   
  23.     /**  
  24.      * 生成靜態(tài)HTML頁(yè)面的方法  
  25.      * @param request 請求對象  
  26.      * @param response 響應對象  
  27.      * @param servletContext Servlet上下文  
  28.      * @param fileName 文件名稱(chēng)  
  29.      * @param fileFullPath 文件完整路徑  
  30.      * @param jspPath 需要生成靜態(tài)文件的JSP路徑(相對即可)  
  31.      * @throws IOException  
  32.      * @throws ServletException  
  33.      */  
  34.     public void createStaticHTMLPage(HttpServletRequest request, HttpServletResponse response,ServletContext servletContext,String fileName,String fileFullPath,String jspPath) throws ServletException, IOException{   
  35.         response.setContentType("text/html;charset=gb2312");//設置HTML結果流編碼(即HTML文件編碼)   
  36.         RequestDispatcher rd = servletContext.getRequestDispatcher(jspPath);//得到JSP資源   
  37.         final ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();//用于從ServletOutputStream中接收資源   
  38.         final ServletOutputStream servletOuputStream = new ServletOutputStream(){//用于從HttpServletResponse中接收資源   
  39.             public void write(byte[] b, int off,int len){   
  40.                 byteArrayOutputStream.write(b, off, len);   
  41.             }   
  42.             public void write(int b){   
  43.                 byteArrayOutputStream.write(b);   
  44.             }   
  45.         };   
  46.         final PrintWriter printWriter = new PrintWriter(new OutputStreamWriter(byteArrayOutputStream));//把轉換字節流轉換成字符流   
  47.         HttpServletResponse httpServletResponse = new HttpServletResponseWrapper(response){//用于從response獲取結果流資源(重寫(xiě)了兩個(gè)方法)   
  48.             public ServletOutputStream getOutputStream(){   
  49.                 return servletOuputStream;   
  50.             }   
  51.             public PrintWriter getWriter(){   
  52.                 return printWriter;   
  53.             }   
  54.         };   
  55.         rd.include(request, httpServletResponse);//發(fā)送結果流   
  56.         printWriter.flush();//刷新緩沖區,把緩沖區的數據輸出   
  57.         FileOutputStream fileOutputStream = new FileOutputStream(fileFullPath);   
  58.         byteArrayOutputStream.writeTo(fileOutputStream);//把byteArrayOuputStream中的資源全部寫(xiě)入到fileOuputStream中   
  59.         fileOutputStream.close();//關(guān)閉輸出流,并釋放相關(guān)資源   
  60.         response.sendRedirect(fileName);//發(fā)送指定文件流到客戶(hù)端   
  61.     }   
  62. }  

引用:http://blog.csdn.net/zjwilove4/archive/2009/10/18/4695518.aspx

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
用JSP+Servlet+JavaBean實(shí)現MVC設計模式的流程
html5實(shí)現多文件的上傳示例代碼
jsp/servlet的重定向技術(shù)綜述
jsp中forword和sendRedirect的區別
javaweb文件下載功能實(shí)現
Java
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久