java Session 与Cookie

Session : 

             HttpServletRequest  request;

             HttpSession session = request.getSession();

               Session作用域
 

 HttpSession:会话作用域。

     会话:浏览器与服务端建立通讯之后与通讯结束这段期间就叫做会话期间。

     A:存放在会话作用域之中的数据与页面没有关系
          请求转发和重写向都不会影响Session中数据的作用域。只跟会话
         有关系。

     B:Session的原理:
 
          当客户端请求到服务端时,服务端为客户端分配一个SessionID。

              (request.getSession()时,sessionId才会产生)。

         然后就sessionID响应给客户端。

          客户端下次请求时,重新将sessionID提交给服务端。服务端就会
         以Map的方式(key_value)存放session作用域中的数据。

     C:Session是基于用户进程创建的。不是基于用户线程。

     D:Session在服务端显示调用request.getSession()时才会显示创建。
            同样,Session也只有在服务端显示调用session.inValidate()是才
           会被销毁。跟浏览器的开启与关闭没有任何关系。

           浏览器关闭之后,并不会关Session。服务端会用Session的超时时间 来判定Session是否过期。

 

   常用途:  保存用户数据,保存在服务端,分配给客户ID

                    SessionID  被隐式的藏于客户端,以cookie 的方式存储的,要获取sessionid,要获取requset的头部信息,里面     包含了所有的隐式数据

                Enumeration enumeration =  request.getHeaderNames();
          while(enumeration.hasMoreElements()){
           Object name = enumeration.nextElement();
           Object value = request.getHeader(String.valueOf(name));
           System.out.println(name + "/t" + value);
      }

 

Session 的常用方法:

             Session.setAttribute("String", Obj);   字符串和对象的邦定

             session.getAttribute("String");  通过字符串来得到对象

             session.remove("String");   移去某个名

             session.invalidate(); 注销session

            注解:Session底层是以Cookie实现的。将session的ID号放在客户端的Cookie中。

Cookie

    Cookie是服务器端或javascript用于维护客户端的一种方式;
       Cookie是驻留在客户端的一个文本文件;

     作用:
    在客户端保存用户相关信息

      通过HttpServletRequest对象获取客户端的Cookie信息 :   getCookies()
      通过HttpServletResponse对象往客户端添加Cookie信息 : addCookie(Cookie)


     常用Cookie:

               CSDN 登陆列子,几天内不用登陆.....即用cookie实现

  

    写入COOKie

                    public void doGet(HttpServletRequest request, HttpServletResponse response)
     throws ServletException, IOException {

      Cookie cookie1=new Cookie("login_name","admin");
      cookie1.setMaxAge(60*60*24*360);
      Cookie cookie2=new Cookie("login_pwd","123456");
      cookie2.setMaxAge(60*60*24*360); 
      Cookie cookie3=new Cookie(“login_sex”,
                          java.net.URLEncoder.encode(“男”,“gb2312”)); //中文要转编码.
      cookie3.setMaxAge(60*60*24*360); 
      response.addCookie(cookie1);
      response.addCookie(cookie2);
      response.addCookie(cookie3);
    }

    读出Cookie

 

               public void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {

      Cookie[] cookies = request.getCookies();
      response.setContentType("text/html");
      PrintWriter out = response.getWriter();
      out.println("<HTML>");
      out.println("  <HEAD><TITLE>get cookies</TITLE></HEAD>");
      out.println("  <BODY>");

      for (int i = 0; i < cookies.length; i++) {
        out.println(cookies[i].getName() + " = ");
        out.println(cookies[i].getValue());
        // 如果值为中文
        // out.println(java.net.URLDecoder.decode(cookies[i].getValue(),”GBK”);
        out.println("<br>");
      }
          out.println("  </BODY>");
          out.println("</HTML>");
          out.flush();
          out.close();
    }

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值