【Java学习-J.160611.0.21】Servlet基础四 cookie部分
2016-06-11 11:48
639 查看
一、状态管理
1)什么是状态管理将客户端与服务器之间的多次交互当作一个整体来看待,将多次操作产生的数据记录下来。
2)怎样进行状态管理
1、cookie(在客户端管理用户的状态)
2、session(在服务器端管理用户的状态)
二、cookie
1) 什么是cookie浏览器在访问服务器时,服务器将一些数据以set-cookie消息头的形式发给浏览器,浏览器会将这些数据保存下来,当再次访问服务器时,会将这些数据以cookie消息头的形式发送给服务器,通过这种方式可以管理用户的状态。
2)创建cookie
Cookie cookie=new Cookie("username","aa");
response.addCookie(cookie);
3)查找cookie
request.getCookie();
三、保存cookie时的编码问题
cookie的值只能以ascii字符,如果是中文,需要将中文转换成ascii字符形式URLEncoder.encode();//将中文转换成字符编码集
URLDecoder.decode();//将字符编码集转换成对应编码的中文
四、cookie的生成时间
cookie.sexMaxAge(int secondes);secondes>0 :浏览器将cookie以文件形式保存在硬盘上,超过指定时间后,将会删除该文件
secondes<0:默认cookie存放在内存当中,当浏览器关闭时自动删除
secondes=0:立即删除cookie
五、cookie路径问题
浏览器在向服务器上的某个地址发送请求时,会先比较cookie的路径与访问的路径地址是否匹配,只有匹配的cookie才会发送cookie.setPath(String url);
如果没有设置,则有一个缺省的路径,缺省的路径是生成该cookie的组件的路径。注意:cookie的发送包含生成该cookie的子路径,不包含父路径 。
六、cookie的工具类(添加、删除、查找cookie)
//需要导包 public class CookieUtil{ private static int default_age=365*24*3600;//默认时间一年 private static String default_path="/textdemo"; //添加cookie public static void addCookie(String name, String value, int age,HttpServletResponse response) throws Exception{ Cookie cookie=new Cookie(name,URLEncoder.encode(value,"utf-8")); cookie setMaxAge(age); cookie setPath(default_path); response.addCookie(cookie); } //设置默认时间的coookie public static void addCookie(String name,String value,HttpServletResponse response)throws Exception{ addCookie(name,value,default_age,response); } //查找cookie public static String findcookie(String name,HttpServletRequst request)throws Exception{ Cookie[] cookies=request.getCookie(); String value=""; for(int i=0;i<cookies.length;i++){ Cookie cookie=cookies[i]; if(cookie.getName()==name){ value=URLDcoder.decode(cookie.getVlaue(),"utf-8"); } } return value; } //删除cookie public static void deletCookie(String name,HttpServletResponse response){ Cookie cookie=new Cookie(name,""); cookie.sexMaxAge(0); cookie.setPath(default_path); response.addCookie(cookie); } }
相关文章推荐
- Linux C函数参考手册(PDF版)
- C# partial关键字说明
- Lua教程(十七):C API简介
- 简单谈谈lua和c的交互
- C#用链式方法表达循环嵌套
- C#中的委托数据类型简介
- C#编写的艺术字类实例代码
- C#实现打造气泡屏幕保护效果
- 举例讲解C#编程中委托的实例化使用
- 使用C#代码获取存储过程返回值
- C++中explict关键字用法
- C/C++数据对齐详细解析
- 利用C语言来求最大连续子序列乘积的方法
- 字符串的组合算法问题的C语言实现攻略
- C 语言基础教程(我的C之旅开始了)[三]
- 学习C和C++的9点经验总结
- C++中的extern “C”用法详解
- C 语言基础教程(我的C之旅开始了)[七]
- 最大子矩阵问题实例解析