jsp中自動產生靜態html頁面實作類別

來源:互聯網
上載者:User

例1

 代碼如下 複製代碼

public class JspToHtml {
 
 private static String title = "標題1";
 private static String context = "標題2";
 private static String editer = "標題3";
 
 public static boolean jspToHtmlFile(String filePath,String htmlFile){
 
  String str = "";
  try {
   FileInputStream is = new FileInputStream(filePath);
   BufferedReader br = new BufferedReader(new InputStreamReader(is));
   String tempStr = "";
   while((tempStr = br.readLine()) != null){
    str = str + tempStr;
   }
  
   br.close();
   is.close();
  } catch (IOException e) {
   e.printStackTrace();
   return false;
  }
 
  try {
   str = str.replaceAll("##title##", title);
   str = str.replaceAll("##context##", context);
   str = str.replaceAll("##editer##", editer);
   System.out.println(str);
   File file = new File(htmlFile);
   BufferedWriter writer = new BufferedWriter(new FileWriter(file));
   writer.write(str);
   writer.close();  
  
  } catch (IOException e) {
   e.printStackTrace();
   return false;
  }
 
  return true;
 
 }
 
 public static void main(String[] args) {
  String url = "D:Workspacesbase.html";
  String savePath = "d:" + 11 + ".html";
 
  jspToHtmlFile(url, savePath);
 }

}


 

例2

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>


例3

 代碼如下 複製代碼

package slt;

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;


public class ToHtml
    extends HttpServlet {
  private static final String CONTENT_TYPE = "text/html; charset=GBK";

  //Initialize global variables
  public void init() throws ServletException {
  }


  //Process the HTTP Get request
  public void doGet(HttpServletRequest request, HttpServletResponse response) throws
      ServletException, IOException {
    response.setContentType(CONTENT_TYPE);
    service(request,response);
  }

  //Process the HTTP Post request
  public void doPost(HttpServletRequest request, HttpServletResponse response) throws
      ServletException, IOException {
    doGet(request, response);
  }
  public void destroy() {
  }

  public void service(HttpServletRequest request, HttpServletResponse response) throws
       ServletException, IOException {
     String url = "";
     String name = "";
     String pName = "";

     ServletContext sc = getServletContext();

     String file_name = request.getParameter("file_name"); //你要訪問的jsp檔案,如index.jsp
//則你訪問這個servlet時加參數.如http://localhost/toHtml?file_name=index

     url = "/" + file_name + ".jsp"; //這是要產生HTML的jsp檔案,如//http://localhost/index.jsp的執行結果.

     name = file_name + ".htm"; //這是產生的html檔案名稱,如index.htm.
     pName = "../WebModule2/" + file_name + ".htm"; //產生html的完整路徑


     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(pName); //把jsp輸出的內容寫到指定路徑的htm檔案中
     os.writeTo(fos);
     fos.close();
     response.sendRedirect(name); //書寫完畢後轉向htm頁面
   }

 

}

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.