Servlet高级应用----缓存设置

设置缓存有两种场景:

1:场景一是对于不经常变化的数据 在servlet里可以为其设置合理的缓存时间 以避免浏览器频繁向服务器发送请求。

例如:设置缓存时间为3分钟

package cn.nyist.servlet.context;

public class ServletDemo10 extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
   String value="abc";
   response.setDateHeader("experice", System.currentTimeMillis()+1000*180);
  
   response.getWriter().write(value);

}

public void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {

    doGet(request,response);
}

}

2 场景二 :如果要实现一种高级功能 即客户端请求动态web资源时 动态web资源发现发给客户端的数据更新了 就发送给客户端最新的数据 如果没有更新 动态web资源就要客户访问它的缓存数据。此种情况可以复写web资源的(即servlet)的getLastModify()方法实现

例如:读取工程的 /webRoot 下的bbb.text 文件 当bbb.text 内容没有更新时候 客户端访问时候(非第一次)就读取缓存数据 如果bbb.text 更新了 就发送最新的数据

package cn.nyist.servlet.context;

public class ServletDemo11 extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
    ServletContext context=this.getServletContext();
         
    InputStream in=context.getResourceAsStream("/bbb.text");
    BufferedReader br=new BufferedReader(new InputStreamReader(in));
   
    String line= br.readLine();
   
    response.getWriter().write(line);
   
}

public void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {

    doGet(request,response);
}

@Override

//复写了service中的getLastModified()方法
protected long getLastModified(HttpServletRequest req) {
   //获取文件
   ServletContext context=this.getServletContext();
   String path = context.getRealPath("/bbb.text");
   File file=new File(path);
   return file.lastModified();
}
}
参考:

servlet高级应用--缓存设置

让servlet支持浏览器缓存


你可能感兴趣的:(JavaEE)