编程开发 > JAVA > 文章内容

java基础知识总结(161)

2016-9-26编辑:ljnbset

cookie技术

                   a, cookie是什么?

                            浏览器访问服务器时,服务器发送给浏览器

                   少量的数据,这些数据以set-cookie消息头的

                   方式发送给浏览器。浏览器会将set-cookie消

                   息头设置的内容保存下来(内存或者是硬盘)。

                   当浏览器再次访问服务器时,会将之前保存的数

                   据以cookie消息头的方式发送给服务器,通过这

                   种机制,可以将浏览器与服务器之间交互的数据

                   保存下来。

                   b, 创建cookie

                            Cookie cookie = new Cookie(String name,

                            String value);

                            cookie.setMaxAge(int seconds);

                            response.addCookie(cookie);

                   c,查询cookie

                            //如果没有cookie,会返回null

                            Cookie[] request.getCookies();

                            String cookie.getName();

                            String cookie.getValue();

                   d,编码问题

                            cookie的值只能是ascii字符,如果出现了非

                            ascii字符(比如中文),需要将中文转换成

                            对应的ascii字符表示。

                                     可以使用URLEncoder.encode方法或者

                                     BASE64Encoder.encode方法来实现转换。

                            要注意:

                                     在查询时,要使用对应的方法来解码。

                   e, 生存时间

                                     cookie.setMaxAge(int seconds)

                            单位是秒。

                                     seconds <0: 保存在内存里(默认值),只有

                            当浏览器关闭,cookie才会删除。

                               seconds > 0: 以文件的方式保存在硬盘上,

                              超过这个时间,浏览器会删除cookie。

                              seconds = 0: 立即删除cookie。

                              如果要删除一个名叫"username"的cookie:

                                            Cookie cookie = new Cookie("username","");

                                            cookie.setMaxAge(0);

                                            response.addCookie(cookie);

                            f,       路径问题

                                     浏览器在访问服务器的某个路径时,会

                            先比较cookie的路径与服务器的路径,只有

                            符合条件的cookie才会发送给服务器。

                                     cookie如果没有调用setPath方法,则会

                            有一个默认的路径,这个默认的路径是

                            创建该cookie的组件的路径。

                                     比如: /web06_3/jsp01/addCookie.jsp

                            创建了某个cookie,则该cookie的路径是:

                            /web06_3/jsp01

                                     浏览器会比较cookie的路径与要访问的组件

                            的路径,只有当要访问的组件的路径是cookie

                            的路径或者及子路径时,浏览器才会发送该

                            cookie组服务器。

                                     //设置cookie的路径

                                     cookie.setPath(String str);

                            比如:

                                     cookie.setPath("/web06_3");这样设置的

                            作用是,该组件生成的cookie,可以被这个应用

                            下所有的其它组件访问到。

         练习:

                   写一个Find_AddCookieServlet,该servlet

         先查询有没有一个名叫 userProfile的cookie,如果有,则

         显示该cookie的值,如果没有,则创建该cookie。

                   new Cookie("userProfile","abc")

                   g, cookie的限制

                            cookie可以被禁止。

                            cookie的大小有限制(大约4k左右,跟

                            浏览器有关系),数量也有限制,浏览器

                            在本地大约能保存300个左右的cookie。

                            cookie不安全

                            cookie的值只能是字符串

java基础知识总结(160)

热点推荐

登录注册
触屏版电脑版网站地图