posts - 2, comments - 27, trackbacks - 0, articles - 60
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          JSP靜態化HTML筆記

          Posted on 2012-07-23 19:37 ZhouFeng 閱讀(1893) 評論(0)  編輯  收藏 所屬分類: 轉載Web開發JAVA
          至于將JSP頁面靜態化為HTML的好處,想必不用我在此解釋了。之前用過一種偽處理的方式,用urlrewrite地址重定向偽裝了訪問路徑,每次訪問頁面的時候還是會讀取數據庫,其實每次讀取的數據都一樣,特別是如新聞內容這種類型的頁面,還是不太完美,今天在網上找了一些資料,也發現用urlrewrite的不少,我希望是能生成html文件那樣的處理,還好找到一個博客,寫的這樣的處理方法,才發現,人家早就寫了,只是當時沒有下功夫去學習,今天按照上面的步驟做出來了,順便記在這里

          創建一個Servlet,主要內容如下
           1 String url = "";
           2 String name = "";
           3 
           4 Charset charset = Charset.forName("UTF-8");  //設置生成文件的字符集
           5 ServletContext servletContext = getServletContext();
           6 
           7 String file_name = request.getParameter("file_name");
           8 url = "/" + file_name + ".jsp";    // 你要生成的頁面動態頁面來源
           9 name = servletContext.getRealPath("/")+"\\"+ file_name + ".html";
          10 // 這是生成的html文件名,如index.html文件名字與源文件名相同
          11 
          12 RequestDispatcher requestDispatcher = servletContext.getRequestDispatcher(url);
          13 
          14 final ByteArrayOutputStream outStream = new ByteArrayOutputStream();
          15 
          16 final ServletOutputStream stream = new ServletOutputStream() {
          17     public void write(byte[] data, int offset, int length) {
          18         outStream.write(data, offset, length);
          19     }
          20 
          21     public void write(int b) throws IOException {
          22         outStream.write(b);
          23     }
          24 };
          25 
          26 final PrintWriter printWriter = new PrintWriter(new OutputStreamWriter(outStream,charset));
          27 
          28 HttpServletResponse rep = new HttpServletResponseWrapper(response) {
          29     public ServletOutputStream getOutputStream() {
          30         return stream;
          31     }
          32 
          33     public PrintWriter getWriter() {
          34         return printWriter;
          35     }
          36 };
          37 requestDispatcher.include(request, rep);
          38 printWriter.flush();
          39 FileOutputStream fos = new FileOutputStream(name); // 把jsp輸出的內容寫到html文件中去
          40 outStream.writeTo(fos);
          41 fos.close();
          42 out.print("<p align=center>OK</p>");
          我是想把page.jsp這個文件轉換成page.html,所以只傳了一個參數,如果想把show.jsp?id=123轉換成123.html,相信這也難不到大家,只不過得注意引用CSS或圖片的路徑
          這是在網上那位仁兄貼出來的代碼,并做了些修改,他還介紹了其它的些,其它的還沒來得及學習,先把這些記錄下來。
          我在轉換的時候,碰到中文問題,更改request和response的字符集都搞不定,還好參考了http://www.aygfsteel.com/zphab/articles/295631.html,把字符編碼加過來了,中文才算搞定了,簡單的測試通過后,放在應用里就好辦了。人家寫出來這么多年了,才發現,慚愧呀

          以上方案參考:http://blog.csdn.net/noove_001/article/details/1953682
          主站蜘蛛池模板: 沅陵县| 应用必备| 荣成市| 马山县| 河东区| 邢台市| 麦盖提县| 大悟县| 冷水江市| 信宜市| 安溪县| 鹤壁市| 大港区| 辛集市| 宁远县| 清水河县| 大宁县| 泾川县| 内黄县| 高雄市| 邵武市| 阿克陶县| 确山县| 新源县| 富阳市| 道真| 赣榆县| 武胜县| 锦屏县| 汾西县| 通化市| 甘南县| 上栗县| 井冈山市| 修武县| 临漳县| 商洛市| 资源县| 吉安市| 连南| 全州县|