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的基本使用,如何获取和使用。 - 实现步骤
- 在第一个Servlet中获取请求的用户名。
- 获取HttpSession对象。
- 将用户名设置到共享数据中。
- 在第二个Servlet中获取HttpSession对象。
- 获取共享数据用户名。
- 将获取到的用户名响应给客户端浏览器。
下面是代码实例
前置条件:虚拟路径是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后打开两个浏览器。先运行第一个浏览器,再运行第二个
然后控制台会出现这些玩意儿