• 微信公众号:美女很有趣。 工作之余,放松一下,关注即送10G+美女照片!

Java Web 学习Day04 Session

开发技术 开发技术 7小时前 3次浏览

Java Web 学习Day04 Session

1、什么是Session

  • 服务器会给每个用户(浏览器)创建一个Session对象;
  • 一个Session独占一个浏览器,只要浏览器没有关闭,这个Session就存在;
  • 用户登录之后,整个网站他都可以访问 —>保存用户的信息;保存购物车信息…..

Java Web 学习Day04 Session

2、Session与Cookie的区别

  • Cookie是把用户的数据写给用户的浏览器,浏览器保存(可以保存多个)
  • Session把用户的数据写到用户独占Session中,服务器端保存 (保存重要的信息,减少服务器资源的浪费)
  • Session由服务器创建。

使用场景

  • 保存一个登录用户的信息;
  • 购物车信息;
  • 在整个网站中经常会使用的数据,保存在Session中

简单尝试

import javax.servlet.ServletException;
import javax.servlet.http.*;
import java.io.IOException;

public class SessionDemo01 extends HttpServlet {
    @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","LanTian");

//        获取Session ID
        String sessionId = session.getId();

//        判断Session是不是新创建
        if (session.isNew()){
            resp.getWriter().write("Session创建成功,ID:"+sessionId);
        }else {
            resp.getWriter().write("Session已经在服务器中存在了,ID:"+sessionId);
        }

/*       //        Session创建的时候做了什么事情:
        Cookie cookie = new Cookie("JSESSIONID", sessionId);
        resp.addCookie(cookie);
        */
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req, resp);
    }
}


public class SessionDemo03 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        HttpSession session = req.getSession();
        session.removeAttribute("name");    //removeAttribute 方法移除属性;删除
//        手动移除Session
        session.invalidate();
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req, resp);
    }
}

设置自动注销Session(web.xml)

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

回顾Cooike中问题,怎么想网站证明你来过。

Java Web 学习Day04 Session

简单理解:

  • 浏览器向服务器发出请求,在服务器登记Session,得到唯一的SessionId,服务器使用cookie向浏览器传送SessionId,浏览器下此访问的时候带上打包了SessionId的Cookie,服务器识别Id后,可以匹配服务器中存储的用户信息,便知道是谁在访问。

程序员灯塔
转载请注明原文链接:Java Web 学习Day04 Session
喜欢 (0)