美文网首页
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