日期:2014-05-20  浏览次数:20815 次

利用Java生成静态HMTL页面(求大神给点思路)谢谢。
这几天公司需要生成静态的HTML页面以减小数据库与服务器的压力和负担,在网上找了很多资料。看了看,还是没有思路。求大神给点思路。让我知道怎么实现。

                                在网上找的东西。

在接下来的应用中,我自己想到另一种解决方案,就是通过Ajax + Struts + XML解决静态页面方案,一并写下来,与大家分享!

生成静态页面技术解决方案之一(转载)
生成静态页面技术解决方案之二(转载)
一个实现将动态页面转为静态的方案(转载)
JSP生成静态HTML页面范例(转载)
利用XML+XSL生成静态页面技术方案(转载)
Ajax + Struts + XML解决静态页面方案(原创)
随着网站访问量的加大,每次从数据库读取都是以效率作为代价的,静态页加在搜索时,也会被优先考虑。互联网上流行的做法是将数据源代码写入数据库再从数据库读取生成静态面,这样无形间就加大了数据库。将现有的JSP页直接生成静态页,将会节省很多。 
为什么要生成静态首页? 
1、如果你首页读取的数据库次数比较多,速度很慢,而且占用很多服务器资源。使用静态页面访问速度当然快多了 
2、搜索引擎容易搜索到 
3、如果程序出问题,也能保证首页能访问
诸如此类等等好处,那么下面几篇文章给大家几个完整的解决方案!
----------------------------------------------------------------

生成静态页面技术解决方案之一

转载者前言:这是一个全面的jsp动态页面静态化方案,本站的帖子静态化方案将借鉴这篇帖子中方法。向http://www.agilejava.org的single的共享精神致敬。 

转帖正文: 

       相信很多人都希望自己的页面越快越好,最好是能静态的,提高客户访问速度。也便于搜索引擎搜索。所以,就希望我们的动态读取数据库的页面,尽可能的生成静态页面。一下系列文章,介绍一下个人的解决方案。 

      本系列将介绍个人的一种方法,在不改变原来jsp文件的基础上,只需要加入少量的代码,就让你的新闻发布系统,很容易就完全变成静态的页面。 

            本文假设你是用java开发的web动态页面。 

           第一步,加入servlet.代码如下。 


      public class ToHtml extends HttpServlet { 

       public void service(HttpServletRequest request, HttpServletResponse response) 
         throws ServletExceptionIOException { 
        String url = ""; 
        String name = ""; 

        ServletContext sc = getServletContext(); 

        String file_name = request.getParameter("file_name");// 你要访问的jsp文件名,如index,不包括扩展名 

        // 则你访问这个servlet时加参数.如http://localhost/test/toHtml?file_name=index 

        url = "/" + file_name + ".jsf";// 你要生成的页面的文件名。我的扩展名为jsf . 

        name = ConfConstants.CONTEXT_PATH+"//"+ file_name + ".htm";// 这是生成的html文件名,如index.htm.文件名字与源文件名相同。扩展名为htm 

      //ConfConstants.CONTEXT_PATH为你的应用的上下文路径。 

        RequestDispatcher rd = sc.getRequestDispatcher(url); 

        final ByteArrayOutputStream ōs = 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 {