【Software testing Homework1】 An error occurs...

 
 
  当我初次接触JavaWeb编程时,在编程实验课上,验证码刷新的问题困扰了我好久,对我印象也是很深刻,下面我就描述一下出现这Error。
  关于验证码刷新的问题,我事先在后台准备好了一个动态随机生成验证码图片的接口,所以在jsp页面中需要进行的操作就是访问这个网址,然后获得url返回的图片并显示在页面中,在用户输入验证码点击验证之后,通过在Session中存储的验证码序列进行比对验证来完成这项工作即可。
  当我初次点击页面访问的时候,验证码工作非常正确,也成功的完成了验证,没有出现任何问题,但是当我想要通过刷新页面来测试验证码是否是动态生成的时候,我发现无论我如何刷新页面,验证码始终不会变化,而是保持在原来的样子。这就使我非常纳闷,并一力寻找解决的方法。
  起初,我在jsp页面中设置的获取图片的URL为:
http://localhost/img
  这样的设置下,无论我如何刷新页面,验证码也不会动态的改变,但是如果我重启浏览器,清除缓存之后重启浏览器再次访问上述网址,发现可以有不同于之前的验证码出现,但是一旦我想要通过刷新页面来实现刷新验证码,那么就会失败。因此我怀疑是浏览器请求的问题,所以我查阅了相关资料,发现浏览器在处理同一个url时,是不会向服务器多次发送同一个请求,而是从缓存中调取页面的,这是造成我页面刷新失效的原因。
  在知道了错误出现的原因之后,我就尝试进行修改,根本原因在于每次请求的URL都是一样的,想要修复这个错误,就要从URL下手。因为要添加一个随机数,并且保证随机数不会和之前出现过的有重复的地方,我们很容易就想到了时间这一属性,想要在URL中增加时间戳并不难实现,需要将jsp页面中的URL改为动态生成即可,具体代码如下:
String url = "http://localhost/img?"+ new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date());
  这样保证了在刷新页面时,请求的url会随着时间变化,这样就可以保证每次都是访问的不同的页面,获取到的就是不同的验证码了,错误解决。

你可能感兴趣的:(【Software testing Homework1】 An error occurs...)