最近在做一个21点游戏时,发现经常会引起503错误,经过不段设计,终于发现了问题的所在.
在要调试的页面game21.jsp头部加上一条输出语句,用于调试System.out.PRintln("调试信息--------------");
继续要牌
一.进入游戏后
url地址:http://localhost:8080/wap/fee/game21.jsp?uId=13312345678&t=0&ante=1
控制台输入出信息:调试信息-------------- 页面正常
二,点击继续要牌
url地址:http://localhost:8080/wap/fee/game21.jsp?uId=13312345678&t=0&ante=1&p=2
p=2为表示继续要牌
控制台输入出信息:调试信息-------------- 页面正常
三,点击继续要牌
url地址:http://localhost:8080/wap/fee/game21.jsp?uId=13312345678&t=0&ante=1&p=2
控制台输入出信息:
调试信息--------------
调试信息--------------
调试信息--------------
调试信息--------------
调试信息--------------
调试信息--------------
调试信息--------------
页面出现错误
分析:
为什么第一次点继续要牌的时候,页面能正常,第二次就会出现不停的刷新页面?通过url地址的观察,
发现第一步进来 的时候与第一次点继续要牌,url的内容不同,而两次重新要牌的时候,url内容相同,
所以造成这个问题的原因当url相同时,页面从浏览器的缓冲中读取信息,但如果把页面的缓冲时间设置过长,用户再要牌的时候会要不到,要等过了缓冲时间,因此不能通过缓冲时间来实现。应该让浏览器识别这个页面是一个新页面,从而从服务器重新取。通过在页面参数中参加一个随时变化的参数,浏览器识别为未请求过的页面,所以重新从服务器得到,问题得解决。
在页面中加一条得到时间的变量 String time = Long.toString(System.currentTimeMillis());
同样的操作
继续要牌
一.进入游戏后
url地址:http://localhost:8080/wap/fee/game21.jsp?uId=13312345678&t=0&ante=1
控制台输入出信息:调试信息-------------- 页面正常
二,点击继续要牌
url地址:http://localhost:8080/wap/fee/game21.jspuId=13312345678&t=0&ante=1&p=2&time=1116213947531
控制台输入出信息:调试信息-------------- 页面正常
三,点击继续要牌
url地址:http://localhost:8080/wap/fee/game21.jspuId=13312345678&t=0&ante=1&p=2&time=1116214023421
控制台输入出信息:调试信息-------------- 页面正常
以上是上Openwave SDK 5.1调试出现问题我解决的
(出处:http://www.knowsky.com)