神秘问题,高手请进!高分!

gameboy999 2003-07-30 09:02:07
谈谈我们系统的一个怪问题。

我们开发使用tomcat4.0
客户端表现为IE6

我们使用的方法是记录session,然后通过在session设置username=xxx的方式来标记该用户是否已经登录了。
因此,我们在任何一个需要判定是否已经登录的地方放置了一个函数,取session里面的username,并看其是否存在来指示用户的登录情况。

如果username = null则表示用户未登录,需要导向出错页。 (相信很多系统也是这样做的)



怪异现象表现有两点:
1。 我们开发中的10台机器,有个别机器偶尔会出现需要登录两次才能进入系统的现象。 (即第一次登录后,直接导向到用户未登录的错误提示页),而绝大部分机器则从来没有出现此问题!

2。 我们开发机器中的部分机器,在登录系统后(正常登录,不需登2次),点击并弹出新的页面(该页面也需要验证用户是否已经登录)时,该新的页面也会直接导向用户未登录的错误提示页!
问题是,该页是应该会继承它的父页面的session呀,而它的父窗体继续切换别的页面,是不会提示未登录的!!

也就是说父窗体session验证一切正常,而弹出的页面却验证失败??!!

这个问题在大多数机器上也永远不会出现,但是在某些机器上会偶尔出现!十分奇怪!





我想和大家一同分析一下可能的出错原因,解决问题后给千分不是问题!我说到做到!
...全文
26 42 打赏 收藏 转发到动态 举报
写回复
用AI写文章
42 条回复
切换为时间正序
请发表友善的回复…
发表回复
wllmmm 2003-08-08
  • 打赏
  • 举报
回复
问题还没解决呢
不过有分还是欢喜噢,到哪领分啊?
gameboy999 2003-08-08
  • 打赏
  • 举报
回复
现在已经解决了一半的问题,虽然是我们自己先找到第一个问题的答案,不过为了表示对大家的感谢,先付500分答谢!

请wllmmm(断剑) remanwang(玩玩儿) georgeqp(菜就一个字) starfeng(feng) makepage79(JAVA一旧饭,JAVA入侵者) 到我的新贴来领分

此贴参与者全部给于10分
yyn911 2003-08-05
  • 打赏
  • 举报
回复
能不能帮我解决下我的问题!!
我分给你分!
gameboy999 2003-08-05
  • 打赏
  • 举报
回复
准备结贴了,第二个问题不好测了,比较难出现。。。
gameboy999 2003-08-01
  • 打赏
  • 举报
回复
to 玩玩儿:
你们使用javabean来保存信息,那你们怎么维护? 使用了TTL(Time To Live)方式吗?

而且使用javabean的方式恐怕需要客户端回写用户名或验证id吧 (rewrite)
formywish 2003-08-01
  • 打赏
  • 举报
回复
这个贴子俺要收藏!!
remanwang 2003-08-01
  • 打赏
  • 举报
回复
我没有使用session,而是使用一个javabean,scope=session来处理这个问题,到目前位置还没有出现你所说的问题。
microsofthh 2003-08-01
  • 打赏
  • 举报
回复
我能想到的错误都被大家说遍了 ,真不知道该怎么帮你了
那就祝愿你明天测试一举通过吧
Good Luck!
gameboy999 2003-08-01
  • 打赏
  • 举报
回复
to starfeng(feng):
流程基本如你所说

登陆页 --> 填充必须的session --> 成功后Redirect到 index.jsp/index servlet

---> index servlet验证session是否存在 ---存在---> 正常登陆
|
|--不存在---> 到统一错误处理页面 --> 用户点击返回到登陆页
georgeqp 2003-08-01
  • 打赏
  • 举报
回复
第二个问题
是因为你用文件浏览器打开的原因,如果用IE就不会有问题了
可以考虑将系统入口做成快捷方式,用IE打开
可以防止用户用文件浏览器访问系统
starfeng 2003-08-01
  • 打赏
  • 举报
回复
to gameboy999(-'_'-)
问题二的原因:
在windows folder是会出现第二个问题的.原因是由于弹出页面是explorer,explorer和windows folder是不可能存在继承它的父页面的session的情况.

问题1:
要进行几个方面的判断
1.在出错时,如果你不管他,点其它要登陆的页面,然后再点刚才出错的这个页面,如果依然错误,那么就可以确定是缓存的问题.

2.一般的流程是这样的:
验证页面
if (request.getParameter("username")== null)
{
request.setParameter("lastURL") == 当前页面的URL;
PageContext.forward("login.jsp");
}
登陆页面
...
if (验证成功)
{
String slastURL = request.getParameter("lastURL");
if (slastURL == null) slastURL = "success.jsp";
PageContext.forward(slastURL);
}

从你的介绍看,你们的与上面有些不同,有一个"用户未登录的错误提示页"
我猜测你们的流程是这样走的,
用户进入保护页--->安全检查发现未登陆--->转入"用户未登录的错误提示页"--->转入登陆页
如果是这样的话,在登陆面进行合法检查通过后,它将会将页面导向"用户未登录的错误提示页",于是就出现了你的问题1
而如果走正常的流程,一开始先登陆--->登出成功的提示页--->点击其它页面,就不会出任何问题.

如果还是有问题,我建议你将你们的登陆流程大致写出来一下,也好帮你查原因些
vcvj 2003-08-01
  • 打赏
  • 举报
回复
用IP,不要用名字
makepage79 2003-08-01
  • 打赏
  • 举报
回复
TO:gameboy999 (-'_'-)
SORRY~偶没看清你的问题就回答你了~两次登录问题曾经遇过那时候系统登录包含SESSION+COOKIE,后来不用COOKIE后基本没问题(<==可能偶的程序有问题).另一个是一个用户登录进去之后有时候显示前一个用户的信息(<==当然这是缓存的问题),还有其他一些小问题如果真是windows folder和explorer访问的问题,那也没什么办法,只好要求用户用合适的explorer.
wllmmm 2003-08-01
  • 打赏
  • 举报
回复
to gameboy999(-'_'-)
你的第二个问题出现的原因确实是windows folder和explorer访问的问题。我们这边也碰到过。这两个东西确实不是共享一个session.可大家都不清楚为什么会这样,现在还没找到一个权威的解释。关注大家。
guoxuezheng 2003-08-01
  • 打赏
  • 举报
回复
你把你的SQL语句生成出来之后拿到数据库里试一下生成出来的语名是否正确,如果直接在数据库上能用再找其它的原因。
gameboy999 2003-08-01
  • 打赏
  • 举报
回复
to zhangking:这个我们正准备测,但是第二个问题很大可能就是windows folder和explorer访问的问题。
ashes 2003-08-01
  • 打赏
  • 举报
回复
mark
chisun 2003-08-01
  • 打赏
  • 举报
回复
在这里学到很多东西
收藏
yyn911 2003-07-31
  • 打赏
  • 举报
回复
to gameboy999(-'_'-)
比如: insert sdr(1,2,3,4,5,6,7,8) values (?,?,?,?,?,?,?,?)
当有8个参数时是成功的!!(包括<8)
insert sdr(1,2,3,4,5,6,7,8,9) values (?,?,?,?,?,?,?,?,?)
只要再加一个就错了!!
我试过只要是8个参数,不论是什么格式的,都对,SQL语句出错的可能没有!!




yyn911 2003-07-31
  • 打赏
  • 举报
回复
to gameboy999(-'_'-)
比如: insert sdr(1,2,3,4,5,6,7,8) values (?,?,?,?,?,?,?,?)
当有8个参数时是成功的!!(包括<8)
insert sdr(1,2,3,4,5,6,7,8,9) values (?,?,?,?,?,?,?,?,?)
只要再加一个就错了!!
我试过只要是8个参数,不论是什么格式的,都对,SQL语句出错的可能没有!!




加载更多回复(22)

81,092

社区成员

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

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