Cookie详细用法

相对路径与绝对路径
    相对路径:
链接地址  <a href="list.do"></a>
    表单提交地址 <form action="add.do">
    重定向 response.sendRedirect("list.jsp");
    转发  request.getRequestDispatcher("listEmp.jsp");
    (1)什么是相对路径?
        不以"/"开头的路径。
    (2)什么是绝对路径?
        以"/"开头的路径。
    (3)怎样写绝对路径?
        链接地址、表单提交地址、重定向绝对路径应该从应用名开始写,而转发应该从应用名之后开始。
        获得appname:String request.getContextPath()
    如:  
        重定向——response.sendRedirect(/*重定向从应用名开始写*/
                request.getContextPath() 
                + "/app3/sub/some.jsp");
                                      /*转发从应用名之后写*/
        转发——request.getRequestDispatcher("/app3/sub/some.jsp")
        .forward(request, response);*/  

状态管理
    (1)什么是状态管理
        将客户端(浏览器)与服务器之间多次交互当作一个整体来看,并且将多次交互所涉及的数据(状态)保存下来。
    (2)如何进行状态管理
        第一类方式:将状态保存在客户端(Cookie)
        第二类方式: 将状态保存在服务器端(Session)


    (3)cookie技术:
        1) 什么是cookie?
        a,cookie是一种客户端的状态管理技术
        b,当浏览器向服务器发送请求的时候,服务器会将少量的数据以set-cookie消息头的方式发送给浏览器,
    浏览器会将这些数据保存下来。当浏览器再次访问服务器时,会将这些数据以cookie消息头的方式发送给服务器。
        2)如何创建一个cookie?
            Cookie c = new Cookie(String name,String value);    
            response.addCookie(c);
        3)cookie的查询
            Cookie[] request.getCookies();
            注意,该方法有可能返回nullString cookie.getName();
            String cookie.getValue();
        4)cookie的生存时间
            cookie.setMaxAge(int seconds);
            注意:单位是秒
            seconds >0 : 浏览器会将cookie保存在硬盘上,超过
            指定的时间,会删除该cookie。
            seconds < 0 : 缺省值,浏览器会将cookie保存在内存
            里,只要浏览器不关闭,cookie一直保存,当浏览器
            关闭,cookie会被清空。
            seconds = 0 : 删除cookie
                    比如,要删除一个名叫userId的cookie:
                    Cookie c = new Cookie("userId","");
                    c.setMaxAge(0);
                    response.addCookie(c);
        5)cookie的编码问题
        cookie只能保存ascii字符,对于不合法的字符(比如中文)需要进行编码,即转换成合法的ascii字符。
        可以使用URLEncoder.encode()方法和URLDecoder.decode()方法来进行这种转换。

        6)cookie的路径问题
            a,什么是cookie的路径问题?
            浏览器在向服务器发送请求时,会比较cookie的路径与要访问的服务器的路径是否匹配,只有
            匹配的cookie才会发送给服务器。
            b, cookie的默认路径
                默认路径等于创建该cookie的组件的路径。
            c,匹配规则
                浏览器要访问的路径必须是cookie的路径或者
            其子路径时,才会发送对应的cookie。
            d,  设置cookie的路径cookie.setPath(String path);
                比如  cookie.setPath("/web07");
                将cookie的路径一般设置为应用名,这样可以保证
            该cookie可以被该应用的其它组件都能访问到。
        7) cookie的限制
            a, cookie可以被用户禁止。
            b, cookie不安全,敏感数据,比如密码,帐号等等需要加密。
            c, cookie的大小有限制,大约是4k左右(具体大小跟浏览器有关系)。
            d, cookie的个数也有限制,大约是300个(具体个数跟浏览器有关系)。
            e, cookie只能够保存字符串。

        8)保存和查询Cookie流程
            a. 浏览器向服务器发送addCookie请求
            服务器中的AddCookieServlet创建了两个Cookie:cookie和cookie2
            b. 服务器端执行语句response.addCookie(cookie);生成消息头“set-cookie”,
            并将两个Cookie以键值对的方式(“name=aaa”、“passwd=123”)存放在消息头中发 送给浏览器
            c. 浏览器将Cookie信息保存到本地内存中
            d. 浏览器继续向服务器发送请求(带着消息头cookie)
            服务器端的FindCookieServlet找到Cookie信息,并显示给浏览器
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

战神丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值