JSP小结-Cookie与Session

来源:互联网 发布:js输入框 input span 编辑:程序博客网 时间:2024/04/24 18:45

1.Cookie

Cookie是指存储在客户浏览器 目录下的文本文件,文件信息由web服务器发送到客户浏览器并存储。下次该客户再次访问该web服务器时,可从该浏览器读回该信息。
Cookie也可存储在客户计算机的磁盘上。
|————————————————————–|
默认生命周期为浏览器关闭,cookie销毁。
|————————————————————–|

JSP/Servlet中操作Cookie:

Cookie cookie = new Cookie("username","tom");//设置有效期,单位是秒cookie.setMaxAge(1000);//将cookie对象添加到response对象中,这样服务器在输出response对象中的内容时就会把cookie也输出到客户端浏览器response.addCookie(cookie); //读取cookieCookie[] cookies =request.getCookies();for(Cookie cookie:cookies){    System.out.println(cookie.getName+",+cookie.getValue());}客户端的cookie文件可以存储若干个cookie对象的信息,在读取时,reques.getCookies()返回一个Cookie的数组,可在该数组中遍历寻找指定的Cookie对象。

2.Session

它是HttpSession类型的实例。

session对象储存在服务器内存中,用于跟踪用户信息。

默认有效期一般在30分钟左右。

session代表客户端与服务器的会话,从客户连到服务器开始,直到客户端与服务器断开连接为止。session对象主要用于保存用户信息,实现用户信息在系统各页面之间的传递。

生命周期:当用户首次访问时,产生一个新的会话,以后服务器就可以记住这个会话状态。会话超时或者服务器强制使session失效

在JSP页面可以通过session内建对象直接使用,【请看JSP内建九个对象】,而在Servlet中,可以通过如下代码:

HttpSession session = request.getSession();//设置属性session.setAttribute("username","tom");//读取属性session.getAttribute("username");//移除属性session.setAttribute("username");//设置有效期,单位为秒,-1代表永不过期session.setMaxInactiveInterval(1000);//使其失效session.invalidate();
isNew()是指是否一个新创的session,当用户访问一个支持session的jsp网页时,session被创建,尽管有时session里面并没有任何东西。  invalidate()是指清空session对象里的东西,并不指清除这个session对象本身。  所以,要判断一个session里面是否存在自己想要的东西(这个session是否有效),是不能用isNew()的,应该用  UserInfo userInfo=(UserInfo)session.getAttribute(”USERINFO”);  if (userInfo!=null)  之类的来判断。

3.Cookie与Session的关联

Cookie信息是以文本文件的方式存储在客户端,而Session信息却存储在服务器的内存中。

当客户发送请求时,Cookie信息会随请求一起发往服务器,服务器会根据Cookie中的SessionId寻找客户对应的Session对象。

如果客户端禁用了Cookie,可以使用URL重写,将SessionId添加到URL中,利用URL传递给服务器。

HttpServletResponse提供了重写URL的方法:

public java.lang.string.encodeurl(java.lang.string.url url);<a href="<%=response.encodeurl(url)%>"></a>

encodeurl()方法在使用时,会首先判断Session是否启用,如果未启用,直接返回url。
然后判断客户端是否启用Cookie,如果未启用,则将参数url中加入SessionID信息,然后返回修改的URL;如果启用,直接返回参数url。

Session的正常使用依赖于Cookie,若Cookie禁用,则应该采用URL重写。

0 0
原创粉丝点击