如何将动态的jsp页面转换成静态的HTML页面?而且要带参数的那种。。求教了如果能回答最好带例子。谢谢了

解决方案 »

  1.   

    如果是说我访问webAction.do?method=list&XXX=aaa
    这样子。如果这个Action最后跳到product.jsp页面的话。我要想让product.jsp这个页面变成product.html里面的内容全是静态的
      

  2.   

    那个一般用Freeer这些工具。
    如果是sdfsd.jsp?ID=..这种生成静态页,我这里有个代码你可以参考下。
    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 {
    private static final String CONTENT_TYPE = "text/html; charset=gb2312";
    // Initialize global variables

    // Process the HTTP Get request
    public void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
    response.setContentType(CONTENT_TYPE);
    String test="xxx";
    service(request, response,test);
      /**
    * 只有成功初始化后此方法才能被调用处理用户请求。前一个参数提供访问初始请求数据的方法和字段,
       * 后一个提供servlet构造响应的方法。
       */
    }
    // Process the HTTP Post request
    public void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
    doGet(request, response);
    }

    public void service(HttpServletRequest request, HttpServletResponse response,String test)
    throws ServletException, IOException {
    ServletContext sc = getServletContext();
    String url="/article/detail_article.jsp?ID=200811300023576";
    String name = "article.htm"; // 这是生成的html文件名
    String pName = "C:\\article.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页面
    }
    }
    直接输入Tohtml 可以将/article/detail_article.jsp?ID=200811300023576,这个文章的内容生成静态的。
    你可以以这个为基础写一个工具类。。把.jsp的位置和静态页的位置设置成接收来的参数。
      

  3.   

    我好像不是很能理解呢……一般带有参数的 URL 都是一些查询页面,查询条件都不一样的,这种怎么去生成静态页面啊?
      

  4.   

    哪有那么难理解的呀。。SEO优化。
      

  5.   

    你是想要网页静态化还是URL静态化啊?
      

  6.   

    知道是 SEO 优化啊,但是已经有 JSP 页面了,为什么再要去生成 HTML 啊?这不是多此一举么?拿 CSDN 的帖子来说,在发帖的时候就生成了一个 HTML 页面,我想 CSDN 并不是先生成 aspx 页面,再拿这个 aspx 去生成 HTML 的!
      

  7.   


    你已经发送请求到Action了,要进行查询,肯定需要动态生成页面,天知道你的查询条件是什么。
    所谓静态,就像这个:<a href="http://topic.csdn.net/u/20081230/12/55892829-a1e7-4820-b975-a93625c36d07.html">你的帖子</a>一篇篇帖子你可以给他生成静态页面放着,看到的连接直接就是.html的,不用再通过Id去数据库查,该静态页面已经存在了。
      

  8.   

    LZ的意思可能是想让后缀为HTML。
    改改配置就行了。