【servelt原理_14_Session对象】

Session对象(重点)

1.Session概述

  • Session用于记录用户的状态。Session是指在一段时间之内,单个客户端与Web服务端的一连串的交互过程。
  • 在一个Session中,客户可能会多次请求访问各种不同的服务器资源

2.Session原理

  • 服务器会为每一次会话分配一个Session对象
  • 同一浏览器发起的多次请求,同属于一次会话(Session)
  • 首次使用Session时,服务器会自动创建session,并创建Cookie存储SessionId发送回客户端
    在这里插入图片描述
    3.Session的使用
    ①:获取session
@WebServlet("/ss")
public class CookieServlet extends HttpServlet{
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		// 1. 通过request对象获取Session对象
		HttpSession session = req.getSession();
		// 获取sessionid
		System.out.println(session.getId());
	}
}
 

我们使用浏览器对网站进行访问,我们会发现打印
在这里插入图片描述
在浏览器当中会有
在这里插入图片描述
当我们关闭浏览器,重新打开访问项目我们会发现session变了
在这里插入图片描述
②:Session保存数据
setAttribute(“key”, value)保存数据到session中

session.setAttribute("key", value); //以键值对的形式存储在session当中

③:Session获取数据
getAttribute(“key”)获取session中的数据

session.getAttribute("key");  // 通过String类型的key访问Object类型的value

④:Session移除数据
removeAttribute(“key”)从session中删除数据

session.removeAttribute("key"); // 通过key值删除session中的值

4.Session的生命周期
开始:第一次使用到session的请求产生则创建session
结束

  • *浏览器关闭
  • *session超时失效
  • session.setMaxInactiveInterval(interval)
  • *手动销毁失效
  • session.invalidate();

5.浏览器禁用Cookie后使用Session解决方案
浏览器在默认情况下,会使用cookie的方式将sessionID发送给浏览器,如果用户禁用Cookie,则sessionID不会被浏览器保存,此时浏览器可以使用URL重写这样的方式发送sessionID

①:URL重写
浏览器在访问服务器上的某个地址时,不在使用原来的地址,而是使用经过该写的地址(在原来的地址上边加上sessionID)

②:实现URL重写
response.encodeRedirectURL(url)

@WebServlet("/ss")
public class SetSession extends HttpServlet{
	
	@Override
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		HttpSession session = request.getSession();
		// 重写 URL 追加 SessionID
		String newUrl = response.encodeRedirectURL("/SecondServlet/gs");
		System.out.println(newUrl);
		response.sendRedirect(newUrl);  //重定向到我们要跳转页servlet
	}

}

@WebServlet("/gs")
public class GetSession extends HttpServlet{
	
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		// TODO Auto-generated method stub
		// 1. 通过request对象获取Session对象
		HttpSession session = req.getSession();
		// 获取sessionid
		System.out.println(session.getId());
	}

}

输出
在这里插入图片描述
实际情况是我们在url上边加上了sessionID
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值