JSP验证码刷新图片不变

songjun1018 2010-08-24 02:22:49
验证码是以流的形式将随机生成的数字些到图片里,然后JSP页面再加载此图片。
可是每次点击刷新后,图片内容重写了,但页面显示的图片却不变。
起初认为是页面的缓存,所有在页面的头加了
<meta http-equiv="Pragma" content="no-cache"/>
<meta http-equiv="Cache-Control" content="no-cache, must-revalidate"/>
<meta http-equiv="Expires" content="0"/>
可还是不起作用,重启服务也一样,请各位帮忙。
实在崩溃。
...全文
775 23 打赏 收藏 转发到动态 举报
写回复
用AI写文章
23 条回复
切换为时间正序
请发表友善的回复…
发表回复
li_yang_fei 2010-08-24
  • 打赏
  • 举报
回复
只需要加载图片就行了,没必要刷新整个页面!
e9876 2010-08-24
  • 打赏
  • 举报
回复
这个是CSDN登陆时生成验证码的内容,你参考一下吧。
<img id="MzImgExpPwd" src="http://c.csdn.net/bbs/f/i/blank.gif" alt="" />

document.getElementById('MzImgExpPwd').src = 'ShowExPwd.aspx?temp=' + (new Date().getTime().toString(36));

不是刷新整个页面,只是刷新图片
superdcj 2010-08-24
  • 打赏
  • 举报
回复
你这代码,每次刷新图片都得刷新网页?为什么不用DOM中Image的load方法加载图片
Inhibitory 2010-08-24
  • 打赏
  • 举报
回复
你这代码,每次刷新图片都得刷新网页?为什么不用DOM中Image的load方法加载图片?
function reloadImage(){  
location.href="./index.jsp?fresh=<%=new Date().getTime()%>"; document.form1.identify.value="";
document.form1.identify.focus();
}
songjun1018 2010-08-24
  • 打赏
  • 举报
回复
JSP引用代码:
<a href="JavaScript:reloadImage();" title="点击刷新图片"><img src="../images/ValidateCode/ValidateCode.jpg" width="50" height="17" /></a>

JS代码:
function reloadImage(){
location.href="./index.jsp?fresh=<%=new Date().getTime()%>"; document.form1.identify.value="";
document.form1.identify.focus();
}
Inhibitory 2010-08-24
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 songjun1018 的回复:]

引用 14 楼 inhibitory 的回复:
引用 8 楼 songjun1018 的回复:

引用 5 楼 inhibitory 的回复:
应该是图片地址被缓存了,每次生成新的图片,换一下图片地址。
不过JSP中生成的图片,不知道有没有地址。

每次重写图片时,图片名称不变

怪不得,在图片后缀名前加上生成图片的时间就好了,如
abc_123423546.jpg,
这样……
[/Quote]
用完就删除,把最后一次图片的地址放在cookie里,还有就是要定时清除图片的临时文件夹。
否则浏览器是一定会缓存的,你的目的不可能达到。即使这样,你生成的那些图片,一样得自己去删除掉。
lip009 2010-08-24
  • 打赏
  • 举报
回复
把你引用图片的地方代码贴出来看看
songjun1018 2010-08-24
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 inhibitory 的回复:]
引用 8 楼 songjun1018 的回复:

引用 5 楼 inhibitory 的回复:
应该是图片地址被缓存了,每次生成新的图片,换一下图片地址。
不过JSP中生成的图片,不知道有没有地址。

每次重写图片时,图片名称不变

怪不得,在图片后缀名前加上生成图片的时间就好了,如
abc_123423546.jpg,
这样每次的图片地址都不一样,就不会受缓存的影响了。
[/Quote]
这样的话,每刷新一次就生成一个图片,图片看不清楚,刷新一次很正常,长此以往,得生成多少垃圾图片啊。
songjun1018 2010-08-24
  • 打赏
  • 举报
回复
location.href="./index.jsp?fresh=<%=new Date().getTime()%>";
我是这样加的,之前就加了。
不好使。
Inhibitory 2010-08-24
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 songjun1018 的回复:]

引用 5 楼 inhibitory 的回复:
应该是图片地址被缓存了,每次生成新的图片,换一下图片地址。
不过JSP中生成的图片,不知道有没有地址。

每次重写图片时,图片名称不变
[/Quote]
怪不得,在图片后缀名前加上生成图片的时间就好了,如
abc_123423546.jpg,
这样每次的图片地址都不一样,就不会受缓存的影响了。
tonyzzp 2010-08-24
  • 打赏
  • 举报
回复

$("#validatecode").attr("src","/servlet/validatecode.jpg?time="+new Date());
lip009 2010-08-24
  • 打赏
  • 举报
回复
IE缓存是很恶心的,可以使用js或java代码在引用验证码的jsp后面加上一个随机参数即可。
<img src="validate.jsp" onclick="reloadImg(this);">
function reloadImg(obj){
obj.src="validate.jsp?param="+Math.random();
}
tonyzzp 2010-08-24
  • 打赏
  • 举报
回复
<img id="validatecode" src="/servlet/validatecode.jpg" onclick="change();"/>
<script>
function(){
$("#validatecode").attr("src","/servlet/validatecode.jpg"+new Date());
}
</script>
songjun1018 2010-08-24
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 e9876 的回复:]
LZ可以尝试在生成图片的地址后面加上一个无用的参数,值为随机数。
[/Quote]
兄弟如果不太忙的话能否举个例子或者发个类似的链接?
songjun1018 2010-08-24
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 cooljia 的回复:]
可以考虑看一下你生成图片的那个servlet是否出错了。
[/Quote]
servlet正确。
刷新之后,查看此图片是正确的。
songjun1018 2010-08-24
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 inhibitory 的回复:]
应该是图片地址被缓存了,每次生成新的图片,换一下图片地址。
不过JSP中生成的图片,不知道有没有地址。
[/Quote]
每次重写图片时,图片名称不变
e9876 2010-08-24
  • 打赏
  • 举报
回复
工具-INTERNET选项-INTERNET临时文件-删除文件

不过火狐都不行的话。。
那就不好说了。

LZ可以尝试在生成图片的地址后面加上一个无用的参数,值为随机数。
cooljia 2010-08-24
  • 打赏
  • 举报
回复
可以考虑看一下你生成图片的那个servlet是否出错了。
Inhibitory 2010-08-24
  • 打赏
  • 举报
回复
应该是图片地址被缓存了,每次生成新的图片,换一下图片地址。
不过JSP中生成的图片,不知道有没有地址。
songjun1018 2010-08-24
  • 打赏
  • 举报
回复
我用的是IE7,IE8也试过,包括360和火狐,都不行。
IE的保存文件指的的什么?
加载更多回复(3)

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧