Cookie

㈠ 什么是cookie?

    浏览器访问web服务器时,服务器会将少量的数据以"set-cookie"消息头的方式发送给浏览器,浏览器会将这些数据保存下来;当浏览器再次访问服务器时,浏览器会将之前保存下来的数据以"cookie"消息头的方式发送给服务器。

 

㈡ 创建一个cookie

    Cookie c = new Cookie(String name,String value);

    response.addCookie(c);

    name: cookie名称

    value: cookie保存的值

 

㈢ 查询cookie

    Cookie[] request.getCookies();

    注意:该方法有可能返回null。

    String cookie.getName();

    String cookie.getValue();

 

㈣ cookie的编码问题

    cookie只能保存合法的ascii字符,如果是中文,需要将其转换成合法的ascii字符。

    保存时:

        String URLEncoder.encode(String str,String code);

    查询时:

        String URLDecoder.decode(String str,String code);

 

㈤ Cookie生存时间

    cookie.setMaxAge(int seconds):

    ① 单位是秒

    ② seconds的值可以:

    >0     浏览器会将cookie保存在硬盘上,当超过设置的时间,浏览器会删除这个cookie。

    <0     缺省值,浏览器会将cookie保存在内存,浏览器只要不关闭,cookie就一直存在;浏览器关闭,cookie就会被销毁。

    =0     立即删除cookie。

 

㈥ 删除Cookie

    比如,要删除一个名叫"ename"的cookie:

    Cookie c = new Cookie("ename","");

    c.setMaxAge(0);

    response.addCookie(c);

 

㈦ cookie的路径问题

    ① 什么是cookie的路径问题?

    浏览器在向服务器上的某个地址发请求时,会先比较cookie的路径是否与这个地址匹配,只有匹配的cookie才会发送。

 

    ② cookie的默认的路径

    cookie的默认路径等于创建这个cookie的组件的路径。

    比如:/web07/app01/addCookie.jsp创建了一个cookie,则该cookie的路径等于"/web07/app01"。

 

    ③ Cookie路径的匹配规则

    要访问的服务器的地址必须是cookie的路径或者其子路径,浏览器才会发送该cookie。

    http://localhost:8080/web07/findCookie1.jsp ---- error

    http://localhost:8080/web07/app01/findCookie2.jsp ------ ok

    http://localhost:8080/web07/app01/sub/findCookie3.jsp -------- ok

 

    ④ 修改cookie的路径

    cookie.setPath(String path);        

    比如:cookie.setPath("/web07");

    在开发中,经常将cookie的路径设置为应用名。

 

㈧ 要添加一个cookie

    Cookie c = new Cookie("username",URLEncoder.encode("李白","utf-8"));

    c.setMaxAge(3600);

    c.setPath("/web07");

    response.addCookie(c);

 

㈨ cookie的限制

    ① 不安全:因为cookie存放在浏览器端,可以很容易被查看到,所以,如果有敏感数据,一定需要加密。

    ② 可以被禁止:

    ③ cookie的大小有限制(大约只能存放4k左右的数据)

    ④ cookie的个数也有限制(浏览器大约只能保存300个左右的cookie)。

    ⑤ cookie只能保存字符串,并且,需要考虑编码问题。

你可能感兴趣的:(cookie)