设为首页 加入收藏

TOP

Java基础之会话技术-Cookie及Session(一)
2019-08-04 00:09:02 】 浏览:108
Tags:Java 基础 会话 技术 -Cookie Session

  至此,学习Servlet三个域对象:ServletContext(web项目)、request(一次请求)、Session(一个客户端)!均有相同的方法!


  从用户开始打开浏览器进行操作,便开始了一次会话,直至关闭浏览器为止结束。在此过程中,每次产生请求时均会产生一次cookie,同时会产生一个JESSIONID进入到客户端进行创建内存空间,下次调用直接寻找此唯一的ID值。数据存储在两个地方均有利弊!需要注意的是,浏览器关闭,session并没有销毁!


一、会话技术简介:


1、存储客户端的状态:


  因为Http协议是无状态的,也就是说每个客户访问服务器端资源时,服务器并不知道该客户端是谁,所以需要会话技术识别客户端的状态。


会话技术是帮助服务器记住客户端状态(区分客户端)


2、会话技术:


①、从打开一个浏览器访问某个站点,到关闭这个浏览器的整个过程,成为一次会话。会话技术就是记录这次会话中客户端的状态与数据的。


②、会话技术分为Cookie 和Session:


Cookie:数据存储在客户端本地,减少服务器端的存储的压力,安全性不好,客户端可以清楚cookie.


Session:将数据存储到服务器端,安全性相对好,增加服务器的压力。


二、Cookie技术:


1、服务器向客户端发送一个Cookie(不能存中文)


Cookie cookie=new Cookie(String name,String value)


2、设置cookie在客户端的持久化时间:


cookie.setMaxAge(int seconds)


如果不设置持久化时间,cookie会存储到浏览器的内存中,浏览器关闭时cookie信息销毁。设置了的话,会在规定的时间内存在。


3、设置cookie的携带路径:


cookie.setPath(String path)


如果不设置携带路径,cookie信息在访问 产生 该cookie的web资源所在的路径 都携带cookie信息。


4、向客户端发送cookie


response.addCookie(Cookie cookie)


5、删除客户端的cookie


使用同名同路径的持久化时间为0的cookie进行覆盖


 


public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //创建Cookie对象
        Cookie cookie= new Cookie("godds","naiping");
        //设置持久化时间(从请求Servlet开始)
        cookie.setMaxAge(60*2);
        //设置cookie携带路径(只有访问此路径才携带)
        //cookie.setPath("/WEB07/SendCookieServlet");
        /*cookie.setPath("/WEB07");
        cookie.setPath("/");*/
        //发送
        response.addCookie(cookie);
    }


 


 


public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //删除Cookie
        Cookie cookie = new Cookie("goods","naiping");
        cookie.setMaxAge(0);
        response.addCookie(cookie);
    }


 


6、服务器接收客户端携带cookie的方式:


以请求头的方式发送到服务器端的


 


public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //获取cookie数组
        Cookie[] cookies = request.getCookies();
        //遍历cookie数组通过cookie名获取cookie值
        for(Cookie c:cookies){
            if(c.getName().equals("goods")){
                System.out.println(c.getValue());
            }
        }


 


 


public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //获取当前的时间对象
        Date date = new Date();
        //创建日期转换类对象
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH-mm-ss");
        //将日期对象转为字符串
        String time = sdf.format(date);
        //创建cookie对象,记录当前访问时间
        Cookie cookie = new Cookie("lastTime",time)

首页 上一页 1 2 3 下一页 尾页 1/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Java基础之正则表达式 下一篇归并排序C语言实现

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目