目前本人的项目中需要用到:客户端输入一个查询条件(提交到search.jsp),然后服务器端通过处理,把数据用静态的html显示出来.这个静态页面还需要分页。不知道如何处理,请高手解决!
本人的qq:286115833

解决方案 »

  1.   

    http://www.programfan.com/article/showarticle.asp?id=1027
      

  2.   

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

  3.   

    直接生成html文件吗?做一共模板把数据输出到模板就行了
      

  4.   

    不知道分页 怎么弄 jsp中分页到是 很简单 可是要把这个 已经分页的jsp在转化成html 好像分页 就 有点困难哦
      

  5.   

    这要看分页你是用什么方式做的
    如果用我上面说的ToHtml来生成静态页面,个人感觉其他地方都应该没有什么区别 只是在页末
    针对页数的热链上做一些相应的处理
    例如:
    <a href="<%=url%>">第1页</a>
    这里的url可以调用servlet,".do",或者直接调用一个jsp页面,只要传进去相应的参数,最后得到的都会是你想要的结果
      

  6.   

    wangxin4450(接近幸福) 我是这样客户按照一个条件search ,进入search.jsp 我用javabean分得页 我想把 search.jsp用 html显示给客户看 你所指的 <a href="<%=url%>">第1页</a>
    中的 url是什么意思?是 你上面铁的代码的 url吗?
      

  7.   

    To : xiangbo520(充栋汗牛) ( ) 信誉:107 虽然是生成了静态页面,但是数据库更新的时候是必要重新更新一下静态页面的,这里可以借助过滤器。不然的话怎么保证数据是最新的?
      

  8.   

    动态的JSP都做了一次查询,再做一次过滤成静态页多了一步.
    所谓的静态页,本来就是一个不能更新的页,现在由JSP查询了一次后,再过滤生成静态页,没有必要.捡了芝麻掉了西瓜.
      

  9.   

    应该是每次新的查询都按照命名规则生成一个html
    然后查询已经查询过的问题就不需要再生成了这种对于查询历史数据特别有用.
      

  10.   

    方法很有一种复古的感觉!就象现代人要体会钻木取火。jsp页面在客户端显示的效果和HTML又有好大区别哟