jsp產生html(方法簡單,只用使用一個serlvet)

來源:互聯網
上載者:User

1   toHtml.java(不用修改,直接用)
package com.jetsum.mystatic;

import java.io.ByteArrayOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpServletResponseWrapper;

public class toHtml extends HttpServlet {

        public void service(HttpServletRequest request, HttpServletResponse response)
                        throws ServletException, IOException {
                String url = request.getParameter("urls")!=null?request.getParameter("urls"):""; 
                //url是要產生htm的jsp頁面
                String name = "";
                response.setContentType("text/html;charset=gb2312");
                ServletContext sc = getServletContext();
                System.out.println("request.getRealPath"+request.getRealPath(""));
                 name = request.getRealPath("") + "/index.htm";      /*產生htm頁  位置在%伺服器的根目錄%/工程名/index.htm 例如:d:/tomcat5.0/webapp/studyteach/index.htm  ,注意這裡是在根目錄產生,你可以產生後放到你想放的檔案夾裡,保證其它東西片的路徑正確     這裡就寫成name = request.getRealPath("") + "/kszx/kszx.htm";      */

              RequestDispatcher rd = sc.getRequestDispatcher(url);

                final ByteArrayOutputStream os = new ByteArrayOutputStream();

                final ServletOutputStream stream = new ServletOutputStream()
                {
                        public void write(byte[] data, int offset, int length) {
                                os.write(data, offset, length);
                        }

                        public void write(int b) throws IOException {
                                os.write(b);
                        }
                };

                final PrintWriter pw = new PrintWriter(new OutputStreamWriter(os));

                HttpServletResponse rep = new HttpServletResponseWrapper(response)
                {
                        public ServletOutputStream getOutputStream() {
                                return stream;
                        }

                        public PrintWriter getWriter() {
                                return pw;
                        }
                };
                rd.include(request, rep);
                pw.flush();
                FileOutputStream fos = new FileOutputStream(name); // 把jsp輸出的內容寫到xxx.htm
                os.writeTo(fos);
                fos.close();
                PrintWriter out = response.getWriter();
                out.print("<p align=center><font size=3 color=red>首頁已經成功產生!</font></p>");
        }
}
web.xml
中添加
   <servlet>
    <servlet-name>tohtm</servlet-name>
    <servlet-class>com.jetsum.mystatic.toHtml</servlet-class>
</servlet>

  <servlet-mapping>
    <servlet-name>tohtm</servlet-name>
    <url-pattern>/web/tohtm</url-pattern>
  </servlet-mapping>
使用方法很簡單  mytest.jsp(wwwroot下)
<a href="web/tohtm?urls=/kszx/kszx.jsp">產生靜態頁</a>    kszx.jsp為要產生htm的動態網頁
如果不在wwwroot下,在wwwroot/pp下
就要寫成
<a href="../web/tohtm?urls=/kszx/kszx.jsp">產生靜態頁</a>

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.