中文字幕在线观看,亚洲а∨天堂久久精品9966,亚洲成a人片在线观看你懂的,亚洲av成人片无码网站,亚洲国产精品无码久久久五月天

將JSP輸出成靜態(tài)html頁面

2018-07-20    來源:open-open

容器云強勢上線!快速搭建集群,上萬Linux鏡像隨意使用

/**
     * 參數(shù)requestPageUrl想要生成html的jsp文件路徑(如:/frontStage/articleMenuContent.jsp),這是實際存在的jsp文件
     * (同時我看了一些API想找到只需要傳過來一個action也可以的方法,但是找不到...請高手幫幫忙..指點一下)
     * 參數(shù)createPagePath為存放生成html的路徑(如:/frontStage/articleMenuContent.html)
     * **/
    public void createStaticPage(String requestPageUrl,String createPagePath) throws Exception{
        /**
         * 創(chuàng)建ServletContext對象,用于獲取RequestDispatcher對象
         */
        ServletContext sc = ServletActionContext.getServletContext();

        /**
         * 根據(jù)傳過來的相對文件路徑,生成一個reqeustDispatcher的包裝類
         */
        RequestDispatcher rd = sc.getRequestDispatcher(requestPageUrl);

        /**
         * 獲得request,response對象
         */
        HttpServletRequest request = ServletActionContext.getRequest();
        HttpServletResponse response = ServletActionContext.getResponse();

        /**
         * 創(chuàng)建一個ByteArrayOutputStream的字節(jié)數(shù)組輸出流,用來存放輸出的信息
         */
        final ByteArrayOutputStream baos = new ByteArrayOutputStream();

        /**
         * ServletOutputStream是抽象類,必須實現(xiàn)write的方法
         */
        final ServletOutputStream outputStream = new ServletOutputStream(){
            @Override
            public void write(int b) throws IOException {
                /**
                 * 將指定的字節(jié)寫入此字節(jié)輸出流
                 */
                baos.write(b);
            }
        }; 
        /**
         * 通過現(xiàn)有的 OutputStream 創(chuàng)建新的 PrintWriter
         * OutputStreamWriter 是字符流通向字節(jié)流的橋梁:可使用指定的 charset 將要寫入流中的字符編碼成字節(jié)
         */
        final PrintWriter pw = new PrintWriter(new OutputStreamWriter(baos,"utf-8"),true);

        /**
         * 生成HttpServletResponse的適配器,用來包裝response
         */
        HttpServletResponse resp = new HttpServletResponseWrapper(response){
            /**
             * 調(diào)用getOutputStream的方法(此方法是ServletResponse中已有的)返回ServletOutputStream的對象
             * 用來在response中返回一個二進制輸出對象
             * 此方法目的是把源文件寫入byteArrayOutputStream
             */
            public ServletOutputStream getOutputStream(){
                return outputStream;
            }

            /**
             * 再調(diào)用getWriter的方法(此方法是ServletResponse中已有)返回PrintWriter的對象
             * 此方法用來發(fā)送字符文本到客戶端
             */
            public PrintWriter getWriter(){
                return pw;
            }
        }; 
        /**
         * 在不跳轉(zhuǎn)下訪問目標jsp。 就是利用RequestDispatcher.include(ServletRequest request,
         * ServletResponse response)。 該方法把RequestDispatcher指向的目標頁面寫到response中。
         */
        rd.include(request, resp);
        pw.flush();
        FileOutputStream fos = new FileOutputStream(createPagePath);
        /**
         * 使用ByteArrayOutputStream的writeTo方法來向文本輸出流寫入數(shù)據(jù),這也是為什么要使用ByteArray的一個原因
         */
        baos.writeTo(fos);
        fos.close();
    }

標簽: isp

版權(quán)申明:本站文章部分自網(wǎng)絡,如有侵權(quán),請聯(lián)系:west999com@outlook.com
特別注意:本站所有轉(zhuǎn)載文章言論不代表本站觀點!
本站所提供的圖片等素材,版權(quán)歸原作者所有,如需使用,請與原作者聯(lián)系。

上一篇:PHP終極加密功能

下一篇:PHP發(fā)送電子郵件類