资源大全 | 神秘文化 | 在线翻译 | QQ专区 | 视频教程 | 彩信频道 | 搜索引擎 | BT下载 |  | 网站地图
设为首页
加入收藏
联系站长
您现在的位置: 一百网络 >> JSP编程 >> JSP技巧 >> 文档正文
最近更新
普通文档 JSP显示内容缓存技巧
普通文档 JSP实现浏览器关闭cooki
普通文档 Servlet、Jsp中的多国语
普通文档 Servlet及JSP中的多线程
普通文档 JSP之plugin的使用
普通文档 用JSP下载word文件(不会
普通文档 JSP应用的安全问题
普通文档 Java中对文件的读写操作
普通文档 如何使用JSP连接DB2数据
普通文档 JSP显示中文问题的解决方
推荐文章
  • 此栏目下没有推荐文档
  • JSP显示内容缓存技巧

    文章作者:佚名 录入时间:2006-6-26 来源:不详
    网站声明:本站的文章除部分特别声明禁止转载的专稿外,可以自由转载.但请务必注明出处和原始作者,文章版权归本网站与文章作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。


    首先想到的一种办法,是采用 java.net的URLConnection把服务器上的jsp抓过来做缓存,不过我觉得这样做太见外了,自己服务器上的东西,为何要用HTTP去访问.于是想另外一个办法,把jsp的out对象的输出控制到自己希望的地方.比如输出到静态文件,又或者保存成全局的字符串变量.这样的话,浏览就不需要执行jsp,只是浏览该html了.仅仅在数据有更新的时候进行一次update操作,把jsp重新输出为html.

      我觉得,浏览事件比数据插入或更新发生的次数多的时候.不妨试试这个办法来提高页面访问速度.

      整件事情有点像把jsp当作模板,生成静态的html页面.

      将如下代码写入web-xml

    <filter>
    <filter-name>FileCaptureFilter</filter-name>
    <filter-class>com.junjing.filter.FileCaptureFilter</filter-class>
    </filter>

    <filter-mapping>
    <filter-name>FileCaptureFilter</filter-name>
    <url-pattern>/latest.jsp</url-pattern>
    </filter-mapping>

      latest.jsp是我要cache的页面

      java源码代码如下

    /** * START File FileCaptureFilter.java */

    package com.junjing.filter;
    import javax.servlet.*;
    import javax.servlet.http.*;
    import java.io.*;
    public class FileCaptureFilter implements Filter
    {
     private String protDirPath;
     public void init(FilterConfig filterConfig)
      throws ServletException
      {
       protDirPath = filterConfig.getServletContext().getRealPath("/");
      }
     public void doFilter(ServletRequest request,ServletResponse response,FilterChain chain)
      throws IOException, ServletException
      {
      String fileName = protDirPath + "forum/lastest.html";
      PrintWriter out = response.getWriter();
      FileCaptureResponseWrapper responseWrapper = new FileCaptureResponseWrapper((HttpServletResponse)response);
      chain.doFilter(request, responseWrapper);
      // fill responseWrapper up
      String html = responseWrapper.toString();
      //得到的html页面结果字符串
      // responseWrapper.writeFile(fileName);
      // dump the contents 写成html文件,也可以保存在内存
      //responseWrapper.writeResponse( out );
      // back to browser
      //responseWrapper.sendRedirect("lastestThread.jsp");
      }

      public void destroy() {}
    }

    /** * END File FileCaptureFilter.java */
    /** * START File FileCaptureResponseWrapper.java */

    package com.junjing.filter;
    import javax.servlet.*;
    import javax.servlet.http.*;
    import java.io.*;

    public class FileCaptureResponseWrapper
     extends HttpServletResponseWrapper
     {
      private CharArrayWriter output;
      public String toString()
      {
       return output.toString();
      }
      public FileCaptureResponseWrapper(HttpServletResponse response)
      {
       super(response);
       output = new CharArrayWriter();
      }

      public PrintWriter getWriter()
      {
       return new PrintWriter(output);
      }

      public void writeFile(String fileName)
       throws IOException
       {
        FileWriter fw = new FileWriter(fileName);
        fw.write( output.toCharArray() );
        fw.close();
       }

      public void writeResponse(PrintWriter out)
      {
       out.print( output.toCharArray() );
      }
     }
     /** * END File FileCaptureResponseWrapper.java */

     

  • 上一篇文档:

  • 下一篇文档: 没有了
  •     查找更多“JSP显示内容缓存技巧”的内容  
    相关连接
  • JSP实现浏览器关闭cookies情况下的会话管理

  • Servlet、Jsp中的多国语言显示

  • Servlet及JSP中的多线程同步问题

  • JSP之plugin的使用

  • 用JSP下载word文件(不会直接用IE打开)