jsp生成html(方法简单,只用使用一个serlvet)

来源:互联网 发布:发型设计软件哪个好 编辑:程序博客网 时间:2024/05/21 02:53

本文转载自:http://www.builder.com.cn/2008/0701/960421.shtml

 

还可以参考:http://www.qudong.com/soft/program/jsp/jinghuawenzhai/20080509/11725.html

 

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>

 

原创粉丝点击