cookie、session、application和pagecontext

一、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的Cookie
for(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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值