• 毕设准备---Cookie,Session


    Cookie

    从请求中拿到cookie信息,服务器响应给客户端cookie

    CookieServlet

    1. package com.wyh.servlet;
    2. import javax.servlet.ServletException;
    3. import javax.servlet.http.Cookie;
    4. import javax.servlet.http.HttpServlet;
    5. import javax.servlet.http.HttpServletRequest;
    6. import javax.servlet.http.HttpServletResponse;
    7. import java.io.IOException;
    8. import java.io.PrintWriter;
    9. import java.util.Date;
    10. /**
    11. * @author WuYongheng
    12. * @date 2022/9/1
    13. * @description
    14. */
    15. public class CookieDemo1 extends HttpServlet {
    16. @Override
    17. protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    18. req.setCharacterEncoding("gbk");
    19. resp.setCharacterEncoding("gbk");
    20. PrintWriter out = resp.getWriter();
    21. Cookie[] cookies = req.getCookies();
    22. if (cookies != null) {
    23. out.write("你上一次的访问时间是:");
    24. for (int i = 0; i < cookies.length; i++) {
    25. Cookie cookie = cookies[i];
    26. // 获取cookie的名字
    27. if (cookie.getName().equals("lastLoginTime")) {
    28. // 获取cookie的值
    29. Long lastLoginTime = Long.parseLong(cookie.getValue());
    30. Date date = new Date(lastLoginTime);
    31. out.write(date.toLocaleString());
    32. }
    33. }
    34. } else {
    35. out.write("这是第一次访问网站");
    36. }
    37. // 服务器给客户端响应一个cookie
    38. Cookie cookie = new Cookie("lastLoginTime", System.currentTimeMillis() + "");
    39. // 设置超时时间,为1天
    40. cookie.setMaxAge(24 * 60 * 60);
    41. resp.addCookie(cookie);
    42. }
    43. @Override
    44. protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    45. doGet(req, resp);
    46. }
    47. }

    注册

    1. <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
    2. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    3. xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
    4. http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
    5. version="4.0"
    6. metadata-complete="true">
    7. <servlet>
    8. <servlet-name>CookieDemo1servlet-name>
    9. <servlet-class>com.wyh.servlet.CookieDemo1servlet-class>
    10. servlet>
    11. <servlet-mapping>
    12. <servlet-name>CookieDemo1servlet-name>
    13. <url-pattern>/cookieurl-pattern>
    14. servlet-mapping>
    15. web-app>

    访问效果

    Session

    启动浏览器的一瞬间,session就生成了

    SessionServlet

    1. package com.wyh.servlet;
    2. import javax.servlet.ServletException;
    3. import javax.servlet.http.HttpServlet;
    4. import javax.servlet.http.HttpServletRequest;
    5. import javax.servlet.http.HttpServletResponse;
    6. import javax.servlet.http.HttpSession;
    7. import java.io.IOException;
    8. /**
    9. * @author WuYongheng
    10. * @date 2022/9/1
    11. * @description
    12. */
    13. public class SessionDemo1 extends HttpServlet {
    14. @Override
    15. protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    16. // 解决乱码问题
    17. req.setCharacterEncoding("gbk");
    18. resp.setCharacterEncoding("gbk");
    19. resp.setContentType("text/html;charset=gbk");
    20. // 得到Session
    21. HttpSession session = req.getSession();
    22. // 给Session里面存东西
    23. session.setAttribute("name", "巫永恒");
    24. System.out.println(session.getAttribute("name"));
    25. // 获取Session的id
    26. String sessionId = session.getId();
    27. //判断Session是不是新的
    28. if (session.isNew()) {
    29. resp.getWriter().write("session创建成功,ID+" + sessionId);
    30. } else {
    31. resp.getWriter().write("session已经在服务器存在了,id:" + sessionId);
    32. }
    33. }
    34. @Override
    35. protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    36. doGet(req, resp);
    37. }
    38. }

    注册。。。

    访问效果


    面试题

    关于cookie的细节

    • 一个Cookie只能保存一个信息
    • 一个web 站点可以给浏览器发送多个Cookie,最多存放20个Cookie
    • Cookie大小有限制,4kb
    • 浏览器上限,300个Cookie

    删除Cookie

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

    Cookie和Session的区别

    • Cookie是把用户的数据写给用户的浏览器,浏览器保存(可以保存多个)
    • Session把用户的数据写到用户独占的Session中,服务器端保存
    • Session对象一般由服务器创建

    Session使用场景

    • 保存一个用户信息
    • 购物车信息
    • 在整个网站中经常会使用的数据,我们将它保存在Session中

    流程

  • 相关阅读:
    钢结构设计软件:IDEA StatiCa 21.1.4.X Crack-new
    CSDN每日一练 |『合并序列』『计数问题』『《教父》家族关系维护』2023-09-07
    AtCoder abc 133
    Matplotlib的使用方法
    dubbo+zookeeper环境配置及搭建
    翁凯C语言之结构体复习
    【ACM学习】【STL】顺序容器的基本功能
    java计算机毕业设计高校设备采购审批管理系统源码+系统+lw文档+mysql数据库+部署
    ubuntu部署gitblit
    Redis事务、pub/sub、PipeLine-管道、benchmark性能测试详解
  • 原文地址:https://blog.csdn.net/Ipkiss_Yongheng/article/details/126644198