当前位置:编程学习 > JSP >>

jsp中自动生成静态html页面实现类

例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页面
   }

 

}

补充:Jsp教程,Java技巧及代码 
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,