会话管理

 1.会话:打开浏览器 -> 访问一些服务器内容 -> 关闭浏览器,整个过程称之为一个会话。
     因为http是无状态的连接协议,为了使会话产生的数据能够在下一次请求中使用,需要解决http无状态连接
     解决方案会话跟踪技术。
     会话跟踪技术是一种在客户端与服务器间保持HTTP状态的解决方案,
     所谓管理,管理浏览器客户端和服务器端之间会话过程中产生的会话数据。
      技术:
            Cookie技术
            Session技术
            URL重写技术
            隐藏表单域技术
  (1) Cookie技术:
        在客户端保持会话数据。
        Cookie在用户第一次访问服务器时,由服务器通过响应头的方式发送给客户端浏览器;
        当用户再次向服务器发送请求时会附带上这些文本信息。
        //SetCookieServlet设置cookie
        response.setContentType("text/html;charset=utf-8");
        //1.创建cookie对象
           Cookie c1=new Cookie("username","chenxx");
           Cookie c2=new Cookie("age","18");
        //2.设置cookie(过期时间)
           
           c1.setMaxAge(60*60);//秒
           c2.setMaxAge(60*60);//秒
        //3.添加cookie响应给客户端
           response.addCookie(c1);
           response.addCookie(c2);
           
        //GetCookieServlet获取cookie
        Cookie cookies[]= request.getCookies();
        for (Cookie obj : cookies) {
            System.out.println("属性名"+obj.getName());
            System.out.println("属性值"+obj.getValue());
        }

        2)cookie应用:记住密码
        
        3)cookie缺点:浏览器可以禁用cookie,删除cookie,在响应中设置不安全
  2)session技术
     HttpSession对象完成,每一个会话,服务器会分配唯一标识会话的JSESSIONID,JSESSIONID存在cookie中
  Session和Cookie的主要区别在于:
    Cookie是把用户的数据保存在用户的浏览器中。
    Session把用户的数据保存在服务器中中。
    
    
    SessionServlet.java
        //1.获取session对象
        HttpSession session=request.getSession();
        String sid=session.getId();//获取sessionid
        response.getWriter().print(request.getHeader("Host")+":"+sid);
        System.out.println(request.getRemoteAddr()+":"+sid);
        //2.设置session
        session.setAttribute("user", "你好,tom");
        session.setAttribute("pass", "1234");
        //3.重定向
        response.sendRedirect("index.jsp");


    index.jsp
      <%=session.getAttribute("user") %>
      <%=session.getAttribute("pass") %>
      <a href="LogOutServlet">退出</a>
      
    LogOutServlet.java
    //清除session
        HttpSession session=request.getSession();
        session.removeAttribute("user");
        session.removeAttribute("pass");
        response.sendRedirect("index.jsp");
        
3)其他会话管理技术
   1.URL重写技术  
     response.encodeURL("UserServlet")
     response.sendRedirect(response.encodeRedirectURL("EncodeURLServlet"));

  2. form表单隐藏域

利用Form表单的隐藏表单域,在用户无法从页面显示看到隐藏标识的情况下,将标识随请求一起传送给服务器处理,从而实现会话的跟踪。

在Form表单中定义隐藏域   

 <input type="hidden" name="userID" value="10010">

在服务器端通过HttpServletRequest对象获取隐藏域的值

String flag = request.getParameter("userID");

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值