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个,分别是session、application和pagecontext。这3个隐式对象就可以理解为容器。它们都有setAttribute(String name,Obuect value) 和getAttribute(String name)这两个方法来设置属性和获取属性值。就是说,你可以把你需要的数据用setAttribute方法添加到上面的任意一个对象中(根据需要选择的对象不同),当你要使用该数据时,就用getAttribute方法再获取出来。至于选择哪个对象来存放数据,就要看你的使用情况了。
因为这3个隐式对象的作用域不同。
session:用于在应用程序的存储有关会话的信息;
application:作用范围比session大,它作用于整个应用程序。所有的客户端窗口都可以共享该对象;
pagecontext:它的范围只有当前的页面。其他的页面是无法获得其属性的。
- cookie、session、application和pagecontext
- session、application 和 pageContext
- pageContext、request、session和application区别
- session、application和pagecontext作用域
- pageContext、request、session和application区别
- APPlication,Session和Cookie
- pageContext,request,session,application
- pageContext,request,session,application
- session cookie servletcontext pageContext
- Application、Cookie、Session和Cache
- Application, Cookie, Session和Cache
- Application、Cookie、Session和Cache
- Session,Cookie,Application和ViewState
- Application、Cookie、Session和Cache
- request、response 、pageContext 、session 和application的区别
- pageContext,request,session,application生命周期
- pageContext,request,session,application生命周期
- pageContext,request,session,application生命周期
- solr配置要点
- LCD驱动原理
- linux下socket收IP数据包
- ios-发布app至App Store(视频地址)
- 【jquery】jQuery.extend 函数详解
- cookie、session、application和pagecontext
- 插入数据报错
- tomcat如何解析resource数据源
- 在考虑如何做微信营销之前,你必须思考下面几个问题。
- Hadoop 报异常“could only be replicated to 0 nodes, instead of 1”
- c++11学习笔记之function函数
- iOS设备在iTues和Xcode中都找不到
- ctrcmp strcpy源代码
- 空tomcat无调优,访问8080口,10000并发