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

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

2018-07-20    來源:open-open

容器云強(qiáng)勢(shì)上線!快速搭建集群,上萬Linux鏡像隨意使用

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

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

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

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

        /**
         * ServletOutputStream是抽象類,必須實(shí)現(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的對(duì)象
             * 用來在response中返回一個(gè)二進(jìn)制輸出對(duì)象
             * 此方法目的是把源文件寫入byteArrayOutputStream
             */
            public ServletOutputStream getOutputStream(){
                return outputStream;
            }

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

標(biāo)簽: isp

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

上一篇:PHP終極加密功能

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