Java生成静态HTML页面

该博客详细介绍了如何使用Java实现动态JSP页面到静态HTML的转换,包括两个Servlet实现方式,一种针对单个文件,另一种适用于多级页面。通过在web.xml中配置Servlet并调用通用方法,可以在新闻发布时自动创建静态页面,确保主页、列表和内容页面始终保持最新状态。此外,还探讨了JSP解析器的工作原理和静态文件的更新策略。
摘要由CSDN通过智能技术生成
生成静态页面技术解决方案之一 

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

转帖正文: 

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

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

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

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


      public class ToHtml extends HttpServlet { 

       public void service(HttpServletRequest request, HttpServletResponse response) 
         throws ServletException, IOException { 
        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 { 
          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 ōut = response.getWriter(); 
        out 
          .print("<p align=center><font size=3 color=red>页面已经成功生成!single<br>http://www.agilejava.org/space/? 233</font></p>"); 
       } 
      } 

      第二步、配置你的web.xml 

       <servlet> 
        <servlet-name>toHtml</servlet-name> 
        <servlet-class>mj.util.html.ToHtml</servlet-class>//你的servlet的类。 
       </servlet> 
       <servlet-mapping> 
        <servlet-name>toHtml</servlet-name> 
        <url-pattern>/toHtml</url-pattern> 
       </servlet-mapping> 

      第三步、运行servlet。如:http://localhost:8080/test/toHtml?file_name=index 

       

      OK,这就在你的test项目的根目录下,生成了一个index.htm的静态文件。  

       

      局限性:本文只能生成一个文件!访问一次,生成一个文件。并且生成的文件名也与原来的文件名相同。 

      比较适合主页生成静态页面。 

       

      本系列的后续文章将解决更多的问题。使之在新闻发布系统中,很容易就集成应用。 

---------------------------------------------------------------------------------------------------- 

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



            注意:转贴本文,请加上本文链接http://www.agilejava.org/space/?233/action_viewspace_itemid_21.html  

           在上一篇文章中,生成静态页面,是有一定的局限性的。生成主页是很方便,但要生成二级页面,就不方便了。 

             本文假设一个新闻发布系统。希望后台发布的,前台显示的是静态的文档。这就涉及,主页要是静态的,同时二级列表也是静态的,新闻内容也是静态的。也就是说, 在发布一篇新闻的时候,可能涉及到三个地方生成静态文档。并且,要生成一个网页,必须访问一个servlet。在大量生成静态网页的时候, 

            以下方法,可以解决这些问题。 

          一、加入一下servelet 

          /** 
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值