【cookie&&session】

cookie
 
         Cookie的实现原理:

    Cookie定义了一些HTTP请求头和HTTP响应头,通过这些HTTP头信息使服务器可以与客户端进行状态交互。
    客户端请求服务器后,如果服务器需要记录用户状态,服务器会在响应信息中包含一个Set-cookie 的响应头,客户端会根据这个响应头存储Cookie信息。
    再次请求服务器时,客户端会在请求信息中包含一个Cookie请求头,而服务器会根据这个请求头进行用户身份、状态等校验。

    快速入门
        1.创建cookie对象
        Cookie c=new Cookie("msg","hello");

        2.发送cookie
        response.addCookie(c);                                                                                         

        3.获取cookie
Cookie[]cs=request.getCookies();
       4.获取数据,遍历
        for (Cookie c : cs) {
            String name = c.getName();
            String value  = c.getValue();
            System.out.println(name+":"+value);

        }

         cookie概念:

    Cookie是一段文本信息,客户端请求服务器时,如果服务器需要记录用户状态,就在响应用户请求时发送一段Cookie信息。
    客户端浏览器保存该Cookie信息,当用户再次访问该网站时,浏览器会把Cookie作为请求信息的一部分提交给服务器
    服务器检查 Cookie 内容,以此来判断用户状态,服务器还会对Cookie信息进行维护,必要时会对Cookie内容进行修改

    Cookie的特点:

    存储在浏览器中,浏览器记录上次请求的数据,下一次请求发给后台,并记录这次返回的信息,也可以记录一些不重要的信息,为后台减轻存储压力。
    存储容量较小,cookie由于每次请求都要向后台发送数据,所以容量要有限制,否则会大大降低网络传输效率。
    安全性低(可以修改或者伪造),由于数据在浏览器中存储,任何人都可以随意进行更改,达到欺骗后台的目的,所以cookie存储一些不太重要的信息,对于一些重要信息要进行防篡改和加密处理。

    cookie细节:
        ①可以创建多个cookie对象,使用response多次调用addCookie方法发送即可
        ②默认情况下,cookie保存在浏览器内存,浏览器关闭cookie数据被销毁  
持久化存储:  

setMaxAge(int second);                                                                                               

正数:将cookie数据保存在硬盘文件里持久化存储。
负数:默认
零:删除cookie数据信息


        ③Tomcat8以前不支持中文,之后支持中文。不能支持的版本中文需要转码,一般采用URL编码(%E3),有多少个字节就有多少个%


        ④默认情况下不能共享,不停项目通过设置setPath("/");可以共享,不同服务器设置设置一级域名相同例如setdomain(".baidu.com");才可以共享


    session(实现依赖于cookie)


        在一次会话中多次请求并共享数据,保存在服务器对象中
        session可以存储任意类型、任意大小的数据。


        获取httpsession对象:httpsession session=request.getsession( );


        使用httpsession对象
            Object getAttribute(String name);
            void setAttribute(String name,Object value);
            void removeAttribute(String name );


        细节:
            ①当客户端关闭,服务器不关闭,两次获取的session默认不是同一个,除非设置好cookie的存活时间键为JSESSIONID
            ②客户端不关闭,服务器关闭,两次获得的session不是同一个但是为了确保数据不丢失Tomcat得自动完成以下工作:                                                                             

session的钝化:在服务器正常关闭之前,将session系列化到硬盘上;                         

session的活化:在服务器开启之前,将文件中的session转化为内存中的session对象。


            ③:session销毁时间:1.服务器关闭;2.session对象调用invalidate( );3.达到默认失效时间。
        session和cookie的区别:                                                                

①session存储在服务端、cookie爱在客户端;                                                                

②session没有存储大小限制、cookie有存储大小限制;                                                                         

③session相对于cookie比较安全;  


    JSP
        java server page(java服务端页面,既可以指定html标签又可以定义java代码(用于简化书写)
        本质上是servlet
            servlet中方法定义什么,脚本就定义什么,java输出语句定义什么,脚本就定义什么。


        内置对像:
            request
            response
            out


                字符输出流对象(他和response.getwrite( )类似。)


                二者的区别:                                

Tomcat服务器真正给客户端做响应之前会先去response缓冲区找数据之后再去out缓冲区找数据。response输出永远在out之前。                                                       

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值