您的位置:首页 > 编程语言 > Java开发

【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);
}

 }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息