在运行ajax的图片浏览器的时候,仅有第一次运行的情况是正确的,能正确显示图片。
JS的代码为:
var store = new Ext.data.JsonStore({ url: '../ImagesServlet', root: 'images', fields: ['name', 'url',{name:'size', type: 'float'}, {name:'lastmod', type:'date', dateFormat:'timestamp'}] });
JS调用ImageServlet,取得json类型的数据。然后根据json的数据显示图片。
ImageServlet代码为:
/** * */ package org.eimhe; import java.io.File; import java.io.IOException; import java.io.PrintWriter; import javax.servlet.ServletContext; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * @author liheng * ImagesServlet.java * 2009-2-23 */ public class ImagesServlet extends HttpServlet{ private boolean is_first = true; private StringBuffer jsonString = new StringBuffer(); protected void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException { processRequest(request,response); } protected void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException{ processRequest(request,response); } protected void processRequest(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException { //json "[images:{{name:'',url:'',size:'',lastmod:''},{}}]" ServletContext ctx = getServletContext(); String cs = ctx.getRealPath("/upload"); //String cs = "c:/upload"; File f = new File(cs); /** * if(jsonString != null) * { * System.out.println("the cache is: "+jsonString.toString()); * jsonString = new StringBuffer(); * is_first = true; * } */ jsonString.append("{\"images\":["); //append json string head if(f.isDirectory()) { File[] fs = f.listFiles(new picFilter()); for(int i=0,len=fs.length;i<len;i++){ if(fs[i].isFile()) { if(is_first) { is_first = false; } else { jsonString.append(","); } jsonString.append("{\"name\":\""+fs[i].getName()+"\",\"url\":\"../upload/"+fs[i].getName()+"\",\"size\":"+fs[i].length()+",\"lastmod\":"+fs[i].lastModified()+"}"); //jsonString.append("{\"name\":\""+fs[i].getName()+"\",\"url\":\""+fs[i].getPath()+"\",\"size\":"+fs[i].length()+",\"lastmod\":"+fs[i].lastModified()+"}"); } else if(fs[i].isDirectory()) { getJsonStringForDirectory(fs[i],fs[i].getName()); } } } jsonString.append("]}"); //append json string bottom response.setContentType("text/html"); response.setHeader("Pragma","No-cache"); response.setDateHeader("Expires",0); response.setHeader("Cache-Control","no-cache"); PrintWriter out = response.getWriter(); out.print(jsonString.toString()); out.close(); } protected void getJsonStringForDirectory(File f,String directoryName) { File[] ifile = f.listFiles(new picFilter()); for(int i=0,len=ifile.length;i<len;i++) { if(ifile[i].isFile()) { if(is_first) { is_first = false; } else { jsonString.append(","); } jsonString.append("{\"name\":\""+ifile[i].getName()+"\",\"url\":\"../upload/"+directoryName+"/"+ifile[i].getName()+"\",\"size\":"+ifile[i].length()+",\"lastmod\":"+ifile[i].lastModified()+"}"); } else if(ifile[i].isDirectory()) { getJsonStringForDirectory(ifile[i],directoryName+"/"+ifile[i].getName()); } } } }
刷新的时候,图片老是不能正常显示,于是怀疑是现实的json的格式有问题,发现没刷新一次,json的数据就多一些。原来是jsonString 和is_first都缓存了数据,在第二次运行的时候没有设置为默认值,导致json的格式错误。
去掉代码中注释的那块,图片能正常显示啦。
您还没有登录,请您登录后再发表评论
调用 servlet 并完成生成高速缓存的输出之后,会创建包含 servlet 的输出和副作用的高速缓存条目。这些副作用可能包含对其他 servlet 或 Java Server Pages(JSP)文件的调用,或有关条目的元数据,包括超时和条目...
Redis Servlet 缓存 该项目为以下问题提供了一个实现: 缓存由 Java Servlet 处理的自定义 HTTP GET 请求的内容。 缓存机制基于 Redis 键值存储 ( )。 缓存机制是通过 Servlet 过滤器实现的,因此可以轻松地从任何...
1、始终使用 MVC 框架。 2、在每一层都应用自动单元... 11、在 WebSphere 中,启动动态缓存,并使用 WebSphere servlet 缓存机制。 12、为了提高程序员的工作效率,将 CMP 实体 bean 作为 O/R 映射的首选解决方案。
它具有内存和磁盘存储,缓存加载器,缓存扩展,缓存异常处理程序,一个 gzip 缓存 servlet 过滤器,支持 REST 和 SOAP api 等特点。 优点: 1)快速 2)简单 3)多种缓存策略 4)缓存数据有两级:内存和磁盘...
servlet使用MVC设计模式,实现cookie缓存和分页显示数据。
IE页面缓存问题,html,jsp及servlet中的设置
JSP 开发之Servlet解决网页缓存问题 (1)我们为什么要防止游览器页面缓存的问题: 所以在不需要缓存的页面中需要实现不缓存页面; 代码如下: package com.lc.HttpTest; import java.io.IOException; import ...
servlet四个有用的过滤器,包括中文转码,缓存过滤等等
使用java中的jsp及servlet开发的有趣项目——趣味人生...主要技术:jsp+servlet将表单数据提交到后台,,用java修改图片,将表单数据添加到图片上,创建图片缓存对象。在利用jsp+servlet将修改后的图片返回到浏览器。
NULL 博文链接:https://1601844782.iteye.com/blog/2273999
NULL 博文链接:https://bushyou.iteye.com/blog/1187666
本Demo是Servlet 拿过去既可以导入运行,主要知识点是缓存管理,通过反射机制获取对象,有一种工厂设计模式在里面,缓存工具类采用的是单例模式.
缓存清单 Servlet介绍HTML5 提供了很棒的功能此功能基于cache.manifest文件,浏览器使用该文件来确定应在离线模式下访问哪些资源。 每次打开页面浏览器时,都使用页面和资源的缓存版本,但是在后台检查cache....
探讨了使用Java Servlet模式实现WebGIS的优势与方法,采用GeoServer与OpenLayers结合的方式设计并实现了一种Java Servlet模式的WebGIS系统。由于服务器端性能的优劣直接影响到客户端用户的使用和体验效果,因此对...
通常JavaWeb项目启动时我们需要... 下面代码是模拟初始化的一个示例,可以在控制台看到程序的输出,和Listener、Filter、Servlet的启动先后顺序,强烈建议跟我一样喜欢动手的Coder操作一下,废话不多说,直接上代码了。
下面只列出了功能大纲;...类别菜单(使用Redis做缓存) 商品详情页 浏览记录实现 抽取BaseServlet 购物车的实现 我的订单 第三方支付功能 使用工厂模式+反射+配置文件的方式来解耦(解Web层和Service层的耦合)
处理视图模板文件的servlet基类; 继承:HttpServlet类 重写了init()方法: 1.获取ServletContext对象 2.创建Thymeleaf解析器对象 3.给解析器对象设置参数(前缀、后缀、缓存过期时间、是否缓存、编码方式) 4....
jsp获取当前URL绝对路径.ziw JSP页面跳转的五种方法.ziw servlet 获取客户端请求的路径 得到站点的绝对地址.ziw 强制页面刷新,防止被服务器缓存.ziw
webDemo Mybits和Servlet学习Mybaits和Hibernate比较: Hibernate:杜绝开发人员亲自试用JDBC,杜绝亲自试用sql命令Hibernate无法进行SQL优化Hibernate缓存依赖过大,一级缓存如何同步二级缓存Mybatis:杜绝开发人员...
相关推荐
调用 servlet 并完成生成高速缓存的输出之后,会创建包含 servlet 的输出和副作用的高速缓存条目。这些副作用可能包含对其他 servlet 或 Java Server Pages(JSP)文件的调用,或有关条目的元数据,包括超时和条目...
Redis Servlet 缓存 该项目为以下问题提供了一个实现: 缓存由 Java Servlet 处理的自定义 HTTP GET 请求的内容。 缓存机制基于 Redis 键值存储 ( )。 缓存机制是通过 Servlet 过滤器实现的,因此可以轻松地从任何...
1、始终使用 MVC 框架。 2、在每一层都应用自动单元... 11、在 WebSphere 中,启动动态缓存,并使用 WebSphere servlet 缓存机制。 12、为了提高程序员的工作效率,将 CMP 实体 bean 作为 O/R 映射的首选解决方案。
它具有内存和磁盘存储,缓存加载器,缓存扩展,缓存异常处理程序,一个 gzip 缓存 servlet 过滤器,支持 REST 和 SOAP api 等特点。 优点: 1)快速 2)简单 3)多种缓存策略 4)缓存数据有两级:内存和磁盘...
servlet使用MVC设计模式,实现cookie缓存和分页显示数据。
IE页面缓存问题,html,jsp及servlet中的设置
JSP 开发之Servlet解决网页缓存问题 (1)我们为什么要防止游览器页面缓存的问题: 所以在不需要缓存的页面中需要实现不缓存页面; 代码如下: package com.lc.HttpTest; import java.io.IOException; import ...
servlet四个有用的过滤器,包括中文转码,缓存过滤等等
使用java中的jsp及servlet开发的有趣项目——趣味人生...主要技术:jsp+servlet将表单数据提交到后台,,用java修改图片,将表单数据添加到图片上,创建图片缓存对象。在利用jsp+servlet将修改后的图片返回到浏览器。
NULL 博文链接:https://1601844782.iteye.com/blog/2273999
NULL 博文链接:https://bushyou.iteye.com/blog/1187666
本Demo是Servlet 拿过去既可以导入运行,主要知识点是缓存管理,通过反射机制获取对象,有一种工厂设计模式在里面,缓存工具类采用的是单例模式.
缓存清单 Servlet介绍HTML5 提供了很棒的功能此功能基于cache.manifest文件,浏览器使用该文件来确定应在离线模式下访问哪些资源。 每次打开页面浏览器时,都使用页面和资源的缓存版本,但是在后台检查cache....
探讨了使用Java Servlet模式实现WebGIS的优势与方法,采用GeoServer与OpenLayers结合的方式设计并实现了一种Java Servlet模式的WebGIS系统。由于服务器端性能的优劣直接影响到客户端用户的使用和体验效果,因此对...
通常JavaWeb项目启动时我们需要... 下面代码是模拟初始化的一个示例,可以在控制台看到程序的输出,和Listener、Filter、Servlet的启动先后顺序,强烈建议跟我一样喜欢动手的Coder操作一下,废话不多说,直接上代码了。
下面只列出了功能大纲;...类别菜单(使用Redis做缓存) 商品详情页 浏览记录实现 抽取BaseServlet 购物车的实现 我的订单 第三方支付功能 使用工厂模式+反射+配置文件的方式来解耦(解Web层和Service层的耦合)
处理视图模板文件的servlet基类; 继承:HttpServlet类 重写了init()方法: 1.获取ServletContext对象 2.创建Thymeleaf解析器对象 3.给解析器对象设置参数(前缀、后缀、缓存过期时间、是否缓存、编码方式) 4....
jsp获取当前URL绝对路径.ziw JSP页面跳转的五种方法.ziw servlet 获取客户端请求的路径 得到站点的绝对地址.ziw 强制页面刷新,防止被服务器缓存.ziw
webDemo Mybits和Servlet学习Mybaits和Hibernate比较: Hibernate:杜绝开发人员亲自试用JDBC,杜绝亲自试用sql命令Hibernate无法进行SQL优化Hibernate缓存依赖过大,一级缓存如何同步二级缓存Mybatis:杜绝开发人员...