2008.12.18进度

今天完成了注册以及登陆的功能。

首先,设置了GeneralFilter,使任何访问的请求都经过它,目前只查询是否带有含登陆ID的cookie以识别登陆用户。未来这里必然还有其他应用;

然后,被cookie的问题所困扰了好一会儿。设置了cookie,并且将setMaxAge(6000),按理说应该能够在客户端保留100分钟啊,为什么关闭并重开一个页面后,GeneralFilter无法找到cookie呢?经过Fiddler跟踪HTTP状态,发现压根就没cookie被写入客户端!这才发现原来在登陆页面的servlet判断字符相等时用了个"==",大汗。。。

在研究session的时候,发现<c:url>的作用原来还有加上JSessionID。

好了,难点来了。
需要保留进入注册或者登陆页面前的最后一个页面,以便登陆或者注册成功后返回这个页面。
前两天用了这样的方式,在最后那个页面上通往登陆或者注册页面的链接上带上本页面的URL。进而发现这样整个original URL就出现在地址栏了,颇为不爽。因此改成了用filter去读取任何到登陆或者注册页面的请求Http头中的Referer,并将其作为request的attribute传递给jsp,jsp中用一个hidden元素保存,以便提交时重定位到original页面。

这时又出现一个问题,如果是从登陆页面再次回到登陆页面呢?完全有可能,例如,当登录信息不正确时,重新回到登录页面提示用户。这里就做了一个小技巧,在LoginServlet和RegisterServlet处理登陆或者注册form提交请求时,如果失败,需要返回原页面,就将original URL作为session的一个attribute保存,那么在jsp中为hidden元素赋值时,就进行判断:优先考虑session中original URL。一切OK。

在写上面这段文字时,忽然发现Taobao也是将original URL加在地址栏的后面,难道我想的太多了,洁癖?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值