什么是session
- 服务器会给每一个用户(服务器)创建一个session对象
- 一个session独占一个浏览器 只要这个浏览器没有关闭 这个session一直存在
- 示例:用户登录之后 整个网站都可以访问 (保存用户的信息)
Session和Cookie的区别
- Cookie是把用户的数据写给用户的浏览器,浏览器保存(可以保存多个)
- session把用户的数据写到用户独占的session中,在服务器端保存(保存重要的信息)
- session对象由服务器端创建
使用场景
- 保存一个登录用户信息
- 购物车信息
- 在整个网站中经常会使用的数据
使用session
//获取session的ID 传如信息
public class SessionDemo1 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doPost(req, resp);
}
@Override
protected void doPost(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("user",new Person("翠花", 18));
String id = session.getId();
//判断是不是新创建的
if(session.isNew()){
resp.getWriter().write("session创建成功,session的ID为:"+id);
}else {
resp.getWriter().write("session已经在服务器中存在了,ID为:"+id);
}
//session创建的时候做了什么事情
//Cookie cookie = new Cookie("JSESSIONID", id);
//resp.addCookie(cookie);
}
}
//获取session中的值
public class SessionDemo02 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doPost(req, resp);
}
@Override
protected void doPost(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();
resp.getWriter().write(session.getAttribute("user").toString());
}
}
//手动删除session的信息 和注销session
public class SessionDemo03 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doPost(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
HttpSession session = req.getSession();
//删除session的属性
session.removeAttribute("user");
//注销session
session.invalidate();
resp.getWriter().write("操作成功");
}
}
web.xml中配置
<!--配置session信息-->
<!--session-timeout 设置session的过期时间-->
<session-config>
<!--15分钟后session自动过期 单位:分钟-->
<session-timeout>1</session-timeout>
</session-config>
Cookie和Session 像是箱子和钥匙的关系
- Cookie的信息保存在客户端
- Session的信息保存在服务器端 用户只能获得Session的ID 通过唯一的ID 访问session中的数据