• session


    什么是Session:

      `服务器会给每一个用户(浏览器)创建一个Seesion对象;

      `一个Seesion独占一个浏览器,只要浏览器没有关闭,这个Session就存在;

      `用户登录之后,整个网站它都可以访问   -->保存用户的信息;保存购物车的信息......

    session是进网站的时候就有了

    代码练习:

     @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //解决乱码问题
        req.setCharacterEncoding("utf-8");
        resp.setCharacterEncoding("utf-8");
        resp.setContentType("text/html;charset=utf-8");
        //得到session
            HttpSession session = req.getSession();
        // 给session存东西
        session.setAttribute("name","西xixi");
       //获取session的id
            String sessionId = session.getId();
            //判断session是不是新创建的
            if(session.isNew()){
                resp.getWriter().write("session创建成功,id为:"+sessionId);
            }else{
                resp.getWriter().write("session已经在服务器中存在了,id为:"+sessionId);
            }
    
        }

        @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            //解决乱码问题
            req.setCharacterEncoding("utf-8");
            resp.setCharacterEncoding("utf-8");
            resp.setContentType("text/html;charset=utf-8");
            //得到session
            HttpSession session = req.getSession();
            //获取存在session中的内容
            String name = (String) session.getAttribute("name");
            System.out.println(name);
        }

    运行测试

     

     Session和cookie的区别:

       Cookie是把用户的数据写给用户的浏览器,浏览器保存(可以保存多个)

         Session把用户的数据写到用户独占Session中,服务器端保存`(保存重要的信息,减少服务器资源的浪费)

       Session对象由服务创建;

    使用场景:

      保存一个登录用户的信息;

      购物车信息;

      在整个网站中经常会使用的数据,我们将它保存在Session中;

    代码练习

       @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //解决乱码问题
        req.setCharacterEncoding("utf-8");
        resp.setCharacterEncoding("utf-8");
        resp.setContentType("text/html;charset=utf-8");
        //得到session
            HttpSession session = req.getSession();
        // 给session存东西
        session.setAttribute("name",new Person("洗",2));
       //获取session的id
            String sessionId = session.getId();
            //判断session是不是新创建的
            if(session.isNew()){
                resp.getWriter().write("session创建成功,id为:"+sessionId);
            }else{
                resp.getWriter().write("session已经在服务器中存在了,id为:"+sessionId);
            }
    
        }
       @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            //解决乱码问题
            req.setCharacterEncoding("utf-8");
            resp.setCharacterEncoding("utf-8");
            resp.setContentType("text/html;charset=utf-8");
            //得到session
            HttpSession session = req.getSession();
            //获取存在session中的内容
            Person person = (Person) session.getAttribute("name");
    
            System.out.println(person.toString());
        }
       @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
             //得到session
         HttpSession session
    = req.getSession(); session.removeAttribute("name");//移除 session.invalidate();//手动注销(但是浏览器会立马生成一个新的) }

    会话自动过期: web.xml配置

    <!--设置session默认的失效时间-->
        <session-config>
            <!--1分钟后session自动失效,以分钟为单位-->
            <session-timeout>1</session-timeout>
        </session-config>

  • 相关阅读:
    [模板] 循环数组的最大子段和
    [最短路][几何][牛客] [国庆集训派对1]-L-New Game
    [洛谷] P1866 编号
    1115 Counting Nodes in a BST (30 分)
    1106 Lowest Price in Supply Chain (25 分)
    1094 The Largest Generation (25 分)
    1090 Highest Price in Supply Chain (25 分)
    树的遍历
    1086 Tree Traversals Again (25 分)
    1079 Total Sales of Supply Chain (25 分 树
  • 原文地址:https://www.cnblogs.com/nuliyao123/p/14433540.html
Copyright © 2020-2023  润新知