HttpSession

(一)HttpSession介绍

HttpSession:服务器端会话管理技术

  • 本质也是采用客户端会话管理技术。
  • 只不过在客户端保存的是一个特殊标识,而共享的数据保存到了服务器端的内存对象中。
  • 每次请求时,会将特殊标识带到服务器端,根据这个标识来找到对应的内存空间,从而实现数据共享!
  • 是Servlet规范中四大域对象之一的会话域对象。

作用:可以实现数据共享

域对象功能作用
ServletContext 应用域 在整个应用之间实现数据共享
ServletRequest 请求域 在当前的请求或请求转发之间实现数据共享
HttpSession 会话域 在当前会话范围之间实现数据共享

HttpSession常用方法

返回值方法名说明
void setAttribute(String name,Object value) 设置共享数据
Object getAttribute(String name) 获取共享数据
void removeAttribute(String name) 移除共享数据
String getId() 获取唯一标识名称
void Invalidate() 让session立即失效

(二)HttpSession获取

HttpSession实现类对象是通过HttpServletRequest对象来获取。

返回值方法名说明
HttpSession getSession 获取HttpSession对象
HttpSession getSession(boolean create) 获取HttpSession对象,未获取到是否自动创建

(三)HttpSession的使用

需求说明

  • 通过第一个Servlet设置共享数据用户名,并在第二个Servlet获取到。

最终目的

  • 掌握HttpSession的基本使用,如何获取和使用。

实现步骤

  1. 在第一个Servlet中获取请求的用户名。
  2. 获取HttpSession对象。
  3. 将用户名设置到共享数据中。
  4. 在第二个Servlet中获取HttpSession对象。
  5. 获取共享数据用户名。
  6. 将获取到的用户名响应给客户端浏览器。

下面是代码实例

前置条件:虚拟路径是session

第一个Java代码

/*
    Session的基本使用
 */
@WebServlet("/servletDemo01")
public class ServletDemo01 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //1,获取请求的用户名
        String username = req.getParameter("username");

        //2,获取HttpSession的对象
        HttpSession session = req.getSession();
        System.out.println(session);
        System.out.println(session.getId());

        //3,将用户名信息添加到共享数据中
        session.setAttribute("username",username);

    }

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

第二个Java代码

/*
    Session的基本使用
 */
@WebServlet("/servletDemo02")
public class ServletDemo02 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //1,获取HttpSession对象
        HttpSession session = req.getSession();
        System.out.println(session);
        System.out.println(session.getId());

        //2,获取共享数据
        Object username = session.getAttribute("username");

        //3,将数据响应给浏览器
        resp.getWriter().write(username + "");
    }

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

启动Tomcat后打开两个浏览器。先运行第一个浏览器,再运行第二个

然后控制台会出现这些玩意儿

 

posted @ 2023-05-30 21:58  ImreW  阅读(18)  评论(0编辑  收藏  举报