(一)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后打开两个浏览器。先运行第一个浏览器,再运行第二个
然后控制台会出现这些玩意儿
标签:resp,req,获取,session,void,HttpSession From: https://www.cnblogs.com/imreW/p/17438572.html