【Java学习-J.160611.0.21】Servlet基础四 cookie部分

来源:互联网 发布:郭敬明 陈学冬 知乎 编辑:程序博客网 时间:2024/05/20 15:10

一、状态管理

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




0 0
原创粉丝点击