zoukankan      html  css  js  c++  java
  • 用JSP生成HTM网页,减轻数据库操作

    原文:http://www.jspkongjian.net/news.jsp?id=396

    此教程的功能: 利用servlet 实现抓取一个网页,把这个网页保存为.htm  比如抓取我们的主页index.jsp,在把他保存为htm,这样当使用了apache和tomcat分离后,我们的主页就由原来的index.jsp 变为 index.htm 了,当tomcat关闭的时候,您的主页也可以访问(实际上是所有静态文件还是一样可以访问)

    可能还需要纠正的一个误区: 正常情况下用户在后台发布了一个新闻,会返回一个对话框提示说新闻增加成功!而利用我们这个教程您就不需要在返回一个对话框,直接返回一个网页,问下管理员 发布了新的新闻要不要把主页的htm也更新下,,用户点更新,你们就调用我们的这个servlet重新抓取index.jsp生成一个新的htm文件,事先htm和动态网页更新同步!!

    大家跟着做就可以了,首先我们建立个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"):"";
    String xx = request.getParameter("xx")!=null?request.getParameter("xx"):"";
    String jishu = request.getParameter("i")!=null?request.getParameter("i"):"";
    int i = Integer.valueOf(jishu).intValue();
    i = i+1;
    //url是要生成htm的jsp页面
    String name = "";
    response.setContentType("text/html;charset=GBK");
    ServletContext sc = getServletContext();
    System.out.println("request.getRealPath"+request.getRealPath(""));
    name = request.getRealPath("") + xx;
    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>首页生成成功!!!</p>");
    ");
    }
    }


     
     

    把他放到WEB-INF/classes/com/jetsum/mystatic/toHtml文件夹下,编译为classes 用jdk1.6编译,编译成功后会出现3个文件 toHtml$1.class , toHtml$2.class , toHtml.class 生成好放在这里就可以了!!

    接下来我们设置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>


     

       这个配置好后需要重启tomcat

    然后做个htm网页 在里面输入

    <a href="http://www.您的域名.com/web/tohtm?urls=/index.jsp&xx=/index.htm&i=0">生成 首页 网页</a>

    这里的urls=/index.jsp 是要被抓取的网页

    xx=index.htm 是抓取后要生成的htm文件名称

    i=0 是如果有分页的情况下自动抓取下一页,默认情况下为0就可以了

    把这个htm网页放到您的空间里,打开浏览器,访问这个htm只要点下这个连接,他就会把您的index.jsp文件自动访问抓取保存为index.htm文件

    这样就实现了,您的主页或者其他网页都生成为htm的功能

    最新评论
  • 相关阅读:
    Unix高级编程之文件权限
    gdb手册
    libev 使用
    Unix高级环境编程之fcntl函数
    设计基于锁的并发数据结构
    CPU占用分析
    atomic用法
    RESTful架构搜集
    神奇的VIM
    [转] boost:lexical_cast用法
  • 原文地址:https://www.cnblogs.com/shihaiming/p/6000969.html
Copyright © 2011-2022 走看看