这段时间在用三层做Web项目时,出现了一个很奇怪的问题,我在用户登录的servlet(Login)中通过session.setAttribute设置对象参数,理论上用户登录成功后参数传递成功,在其他servlet中便可通过session.getAttribute获取对象参数的值,但是怎么都是null值,测试了很多次都不行,搜了很多资料也没找到问题的所在。什么session过期时间,什么ttomcat配置文件的修改啊,什么重定向会导致session失效呀,就去查看tomcat的源码,看看是不是使用重定向就把session销毁了,到头来也不是,,搞得头都要爆炸了。
实在没办法,自己新建一个叫test同样的代码在这个项目下跑起来就没问题,,于是猜想是项目命名出了问题。之前为了区分项目类型便于识别,将项目名由code_20150407(shopping)改为了code_20150407_shopping。然后我将项目名重新还原为原来的后问题又出现了。这个命名的问题我想可能是关键,项目命名不应该含有“(”、“+”等这些符号,否则会出现问题。
这个问题花太长时间,昨晚两三天没解决,今天仔细想了下,验证了下自己的猜想就解决了。这提醒我以后项目命名要规范,果然也验证了,程序故障三大永恒定律:重启电脑+重启IDE+检查命名。
时间: 2024-10-22 08:44:24