cookie、session、application和pagecontext

来源:互联网 发布:淘宝店铺发布宝贝要钱 编辑:程序博客网 时间:2024/05/16 19:23

一、cookie使用

1.java中把Cookie封装成了javax.servlet.http.Cookie类 ,每个Cookie都是该Cookie类的对象。

2.服务器通过request.getCookie()获取客户端提交的所有Cookie(以Cookie[]数组形式返回)
   服务器通过response.addCookie(Cookie cookie)向客户端设置Cookie。
3.Cookie中保存中文
  中文属于Unicode字符在内存中占4个字符,而英文属于ASCII字符内存中占2个字节。
   Cookie中使用Unicode字符时需要对Unicode字符进行编码,否则会乱码。
   编码可以使用 java.net.URLEncoder类的encode(String str,String enciding)方法,
   解码可以使用 java.net.URLDecoder类的decode(String str,String enciding)方法。
4.Cookie不仅可以使用ASCII字符与Unicode字符,还可以使用二进制数据。
  使用二进制数据时也需要进行编码,用BASE64编码在Cookie中保存二进制文件。
  String str=BASE64Encoder.class.newInstance().encode(byte[] b)//将二进制数组编码成字符串。

  byte[] b=BASE64Decoder.class.newInstance().decodeBuffer(cookie.getValue().replace(" ",""));//将字符串解码为二进制数组

Cookie name=new Cookie("myname",u);//定义名为name的Cookie属性为myname属性值为u  Cookie pass=new Cookie("mypasswd",p);/  name.setMaxAge(14*24*3600); //设置Cookie保存时间按秒算  pass.setMaxAge(14*24*3600);  res.addCookie(name); //将名为name的Cookie保存到客户端res.addCookie(pass);Cookie[] allCookie=req.getCookies();//从客户端得到所有Cookie保存到数组allCookie[]中判断allCookie[]中是否存在属性名为myname和 mypasswd的Cookiefor(i=0;i<allCookie.length;i++){          Cookie temp=allCookie[i];          if(temp.getName().equals("myname")){              name=temp.getValue();            }else if(temp.getName().equals("mypasswd")){             passwd=temp.getValue();                        }          }


二、context

1.Session用来追踪每个用户的会话,使用服务器生成的SessionID进行标识,用以区分用户。Session存放在服务器的内存中,SessionID存放在服务器内存和客户机的Cookie里面。这样,当用户发出请求时,服务器将用户Cookie里面记录的SessionID和服务器内存中的SessionID进行比对,从而找到这个用户对应的Session进行操作。所以,如果客户机禁止Cookie的话,Session也不能使用,但是对于JSP来说(.NET不熟悉),会使用URL重写的技术,在URL里面附加上SessionID,从而实现用户身份的标识

HttpSession hs=req.getSession(true);hs.setMaxInactiveInterval(20);  //设置Session的时间按秒算hs.setAttribute("name",u);hs.removeAttribute(name);//删除属性//下一页面可取得Session的属性值HttpSession hs=req.getSession(true);String val=(String)hs.getAttribute("name"); // session传递的是对象需要转换回来Jsp中Session的用法request.getsession().setAttribute(“name”,”韩顺平”)//在session中添加属性String name=(String)session.getAttribute(”name”);获得属性值

 2.JSP中与之相关的隐式对象有3个,分别是sessionapplicationpagecontext3个隐式对象就可以理解为容器。它们都有setAttribute(String name,Obuect value) 和getAttribute(String name)这两个方法来设置属性和获取属性值。就是说,你可以把你需要的数据用setAttribute方法添加到上面的任意一个对象中(根据需要选择的对象不同),当你要使用该数据时,就用getAttribute方法再获取出来。至于选择哪个对象来存放数据,就要看你的使用情况了。
    因为这3个隐式对象的作用域不同。
    session
:用于在应用程序的存储有关会话的信息;
    application
:作用范围比session大,它作用于整个应用程序。所有的客户端窗口都可以共享该对象;
    pagecontext
:它的范围只有当前的页面。其他的页面是无法获得其属性的。

 

0 0
原创粉丝点击