Java Web 学习Day04 Session
Java Web 学习Day04 Session
1、什么是Session
- 服务器会给每个用户(浏览器)创建一个Session对象;
- 一个Session独占一个浏览器,只要浏览器没有关闭,这个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中问题,怎么想网站证明你来过。
简单理解:
- 浏览器向服务器发出请求,在服务器登记Session,得到唯一的SessionId,服务器使用cookie向浏览器传送SessionId,浏览器下此访问的时候带上打包了SessionId的Cookie,服务器识别Id后,可以匹配服务器中存储的用户信息,便知道是谁在访问。

浙公网安备 33010602011771号