Java Cookie、Session

tech2026-01-19  4

会话

会话:打开浏览器,进行许多操作,访问了多个web资源,关闭浏览器,这个过程就是一次会话

服务端给客户端一个信件,客户端下次访问服务端时带上信件即可—Cookie服务端登记客户端来过,下次客户端来的时候进行匹配–Session

保存会话的两种技术

Cookie

客户端技术(响应、请求)

Session

服务端技术,可以保存会话信息,保在Session中

Cookie

从客户端请求中拿到Cookie信息服务端通过拿到的Cookie信息给客户端响应Cookie信息 Cookie[] cookies = req.getCookies();//获得Cookie cookie.getName()//获得Cookie中的key cookie.getValue()//获得Cookie中的value new Cookie("lastLoginTime", System.currentTimeMillis()+"");//新建一个Cookie cookie.setMaxAge(24*60*60);//设置Cookie的有效期 resp.addCookie(cookie);//响应给客户端一个Cookie

cookie :一般会保存在本地的用户目录下appdata

一个网站cookie是否存在上限

一个cookie只能保存一个信息一个web站点可以给浏览器发送多个cookie,最多保存20个cookieCookie大小有限制4kb300个cookie浏览器上限

删除cookie

不设置有效期,关闭浏览器,自动失效设置有效期为0

Session(重点)

什么是Session:

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

Session和cookie的区别:

Cookie是把用户的数据写给用户的浏览器,浏览器保存(可以保存多个)Session把用户的数据写到用户独占的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.setAttribute("name","张金辉"); //获取Session的ID String id = session.getId(); //判断session是不是新创建的 if (session.isNew()){ resp.getWriter().write("session创建成功,ID:"+id); }else { resp.getWriter().write("session已经在服务器中存在了,ID:"+id); } //Session创建的时候做了什么 // Cookie cookie = new Cookie("JSESSIONID",id); // resp.addCookie(cookie); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doGet(req, resp); } } //获取Session HttpSession session = req.getSession(); //收到注销Session session.invalidate();

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

<!--设置Session默认的失效时间--> <session-config> <!--15分钟后Session自动失效,以分组为单位--> <session-timeout>15</session-timeout> </session-config>
最新回复(0)