如果请求发生重定向,而又想要传输数据,这时可以使用Session会话来保存数据,一般就是用setAttribute和getAttribute方法了。但就算是这样,只要浏览器关闭了,Session里面的数据也会消失。如果想要保存会话中的数据,以下方法可以做到:
调用HttpServletResponse对象的void addCookie(Cookie cookie)方法
而且调用addCookie方法的时候,如果这个cookie已经存在了,就会删除原有的cookie,然后再末尾添加新的cookie。这个功能在显示查询记录的时候非常有用,因为记录中不会出现重复记录,且记录都是按照时间顺序拍好了(旧记录都删了,新纪录添加到末尾,因此就有了时间顺序),可以参考编程思想里面写cookie的例子(如果写了例子我就删了这个括号,没删等于还没写这个cookie例子)
获取cookie数据:
调用HttpServletRequest对象的Cookie[] getCookies()方法
该方法返回的一个cookie类型数组,包含此浏览器中的所有cookie数据,所以如果要找到想要找的数据,需要在new cookie的时候设置一些特殊符号来作为寻找的判断标识。
关于cookie的介绍
-
Cookie
Cookie是客户端技术,程序把每个用户的数据以cookie的形式写给用户各自的浏览器。当用户使用浏览器再去访问服务器中的web资源时,就会带着各自的数据去。这样,web资源处理的就是用户各自的数据了。注意:真的是保存在浏览器中,不同浏览器保存的cookie不共享。
-
HttpSession
Session是服务器端技术,利用这个技术,服务器在运行时可以为每一个用户的浏览器创建一个其独享的HttpSession对象,由于session为用户浏览器独享,所以用户在访问服务器的web资源时,可以把各自的数据放在各自的session中,当用户再去访问服务器中的其它web资源时,其它web资源再从用户各自的session中取出数据为用户服务。
首先看Cookie
- public void setMaxAge(int expiry)
设置cookie数据的有效时间
默认值是关闭浏览器就失效
设置为0是删除该cookie数据,非常有用,因为没有remove方法来删除cookie
- public Cookie(java.lang.String name, java.lang.String value) 构造函数
参数:两个都为String,可理解为键值对,即如果第一个参数name重复了,那么后面的值就会覆盖前面的值
- public void setPath(java.lang.String uri)
每次添加cookie的时候,都会将数据按照servlet所在的路径来定义存储目录,而访问的时候只能访问该路径下的数据,不能访问上级目录的cookie数据,如图所示,test2中如果添加了cookie数据,test1如果想要获取该数据,是不能做到的。此时我们可以在添加或者获取cookie之前,先设定目录路径,这样就可以按照路径来找到对应的cookie数据了
本文介绍了如何使用Session和Cookie来管理会话数据。探讨了Session数据的生命周期,并详细讲解了通过HttpServletResponse添加Cookie的方法,以及如何通过HttpServletRequest获取Cookie数据。
996

被折叠的 条评论
为什么被折叠?



