美文网首页
cookie,session的Java实现

cookie,session的Java实现

作者: IT职业与自媒体思考 | 来源:发表于2020-06-16 05:53 被阅读0次

一、cookie理解

1.特点

Cookie技术:会话数据保存在浏览器客户端。

2.Cookie技术核心,Cookie类:用于存储会话数据

2.1.构造Cookie对象

new Cookie(java.lang.String name, java.lang.String value)

2.2.设置cookie

void setPath(java.lang.String uri)   :设置cookie的有效访问路径

void setMaxAge(int expiry) : 设置cookie的有效时间

void setValue(java.lang.String newValue) :设置cookie的值

2.3.发送cookie到浏览器端保存

void response.addCookie(Cookie cookie)  : 发送cookie

2.4.服务器接收cookie

Cookie[] request.getCookies()  : 接收cookie

3.Cookie原理(cookie不能跨浏览器查询)

3.1.服务器创建cookie对象,把会话数据存储到cookie对象中。

new Cookie("name","value");

3.2. 服务器发送cookie信息到浏览器

response.addCookie(cookie);

3.3.浏览器得到服务器发送的cookie,然后保存在浏览器端。

3.4.浏览器在下次访问服务器时,会带着cookie信息

3.5.服务器接收到浏览器带来的cookie信息

request.getCookies();

二、代码例子

1.项目结构

2.添加cookie代码

/**

* Created by ChenMingXu on 2019/5/28.

*/

//添加cookie

@WebServlet("/AddCookieServlet")

public class AddCookieServlet extends HttpServlet{

    @Override

    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        Cookie cookie = new Cookie("xingming", "chenmingxu");

        //为什么这么写,因为在服务器端写好,返回客户端

        resp.addCookie(cookie);

        System.out.println("添加cookie");

    }

}

3.测试结果

4.获取cookie的代码

/**

* Created by ChenMingXu on 2019/5/28.

*/

@WebServlet("/GetCookieServlet")

public class GetCookieServlet extends HttpServlet{

    @Override

    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        Cookie[] cookies = req.getCookies();

        for (Cookie cookie:cookies){

            System.out.println(cookie.getName()+"....."+cookie.getValue());

        }

    }

}

5.测试获取cookie的结果

6.后台打印结果

三、session理解

1.session技术核心,HttpSession类:用于保存会话数据

1.1.创建或得到session对象

HttpSession getSession()  

HttpSession getSession(boolean create)  

1.2.设置session对象

void setMaxInactiveInterval(int interval)  : 设置session的有效时间

void invalidate()     : 销毁session对象

java.lang.String getId()  : 得到session编号

1.3.保存会话数据到session对象

void setAttribute(java.lang.String name, java.lang.Object value)  : 保存数据

java.lang.Object getAttribute(java.lang.String name)  : 获取数据

void removeAttribute(java.lang.String name) : 清除数据

2.session原理

2.1.原理图解

3.添加session代码

/**

* Created by ChenMingXu on 2019/5/28.

*/

@WebServlet("/AddSessionServlet")

public class AddSessionServlet extends HttpServlet {

    @Override

    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        // 默认不传为true,没有sessionid 我会创建session 否则

        HttpSession httpSession = req.getSession(true);

        httpSession.setAttribute("userName", "chenmingxu");

        System.out.println("添加session成功。。。。。");

    }

}

4.测试添加session的结果

5.获取session代码

/**

* Created by ChenMingXu on 2019/5/28.

*/

@WebServlet("/GetSessionServlet")

public class GetSessionServlet extends HttpServlet{

    @Override

    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        HttpSession session = req.getSession(false);

        String userName = (String)session.getAttribute("userName");

        System.out.println("userName"+userName);

    }

}

6.测试获取session的结果

7.后台打印结果

四、总结

1.cookie是保存在客户端的,session是保存在服务器端的,但是sessionid是保存在客户端的,底层调用还是cookie把sessionid返回到客户端的。

2.cookie是保存在客户端的,session是保存在服务器端的,如果session重启的时候,数据就会丢失,这时候你该怎么办,放进redis中。

五、结束

Always keep the faith!!!

相关文章

网友评论

      本文标题:cookie,session的Java实现

      本文链接:https://www.haomeiwen.com/subject/rkakxktx.html