JavaWeb学习总结——会话跟踪技术

本文总结了JavaWeb中的会话跟踪技术,主要讨论了Cookie和Session两种方法。Cookie将数据存储在浏览器端,而Session则在服务器端保存数据,浏览器关闭后Session数据失效。文章详细介绍了Cookie的作用、应用场景、查看及设置方法,以及Session的工作原理和创建Session的实例流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

会话跟踪技术:就是让当前访问的网址一直保持当前会话的数据。

实现会话跟踪的两种方法:Cookie和Session

  • Cookie方法:是将状态保持的数据保存在浏览器中,只要浏览器不清楚Cookie数据以及Cookie数据的失效时间还没到,Cookie数据会一直保存在浏览器中!
  • Session方法:是将状态保持的数据保存在服务器中,浏览器关闭后会话数据就失效!
  1. Cookie的实现

(1)Cookie的作用

  • Cookie保存在浏览器中(请求用户端),主要用于保存请求状态的数据,这些数据是开发人员自定义,可以任意设置。
  • 只要请求连接服务器的那一刻起,Cookie就会随着请求一起发送到服务器,服务器再根据Cookie数据进行业务逻辑处理。

(2)Cookie的应用场景

  • 用户登录状态保持
  • 购物车在未登录状态保存,登录后再保存到用户订单里面。

(3)在浏览器中查看当前状态的Cookie数据
在浏览页面按F2
在这里插入图片描述(4)Cookie入门案例步骤

  • 在登录逻辑代码中写入Cookie的值
/*servlet是用于处理http的请求*/
public class RegisterServlet extends HttpServlet {
       protected void service(HttpServletRequest req, HttpServletResponse resp)throws ServletException,IOException {
         //创建Cookie,设置cookie的值
         Cookie usernamecookie = new Cookie("username", "amdin");
         Cookie passwordcookie = new Cookie("password", "123");
         //设置cookie的失效时间,单位为毫秒
         usernamecookie.setMaxAge(1000*60*60);
         passwordcookie.setMaxAge(1000*60*60);
         //响应写入Cookie
         resp.addCookie(usernamecookie);
         resp.addCookie(passwordcookie);
                     }
}
  • 在动态页面获得Cookie
public class LoginUL extends HttpServlet{
	protected void service(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {
		resp.setCharacterEncoding("UTF-8");
		req.setCharacterEncoding("UTF-8");
	     String username=null;
		 String password=null;
		 //获得请求的Cookie
		 Cookie[] cookies = req.getCookies();
		 if(cookies!=null){
			 for(Cookie cookie:cookies)
			 {
				 if("username".equals(cookie.getName())){
					 username=cookie.getValue();
				 }
				 if("password".equals(cookie.getName())){
					 password=cookie.getValue();
				 }	 
			 }
		 }
  • 验证Cookie是否成功写入,看浏览器的Cookie值,并关闭浏览器再打开看Cookie值是否还保存。

(5)Cookie入门案例流程图
在这里插入图片描述
2. Session的实现
(1)Session是什么:Session是在有效时间内一个处理请求状态数据的对象。当服务器在创建Session对象时会产生一个唯一标识符JsessionID,JsessionID会写入到响应路径的Cookie里面,因为此时的没有设置Cookie的有效时间,所以浏览器关闭后存在Session内存的数据会失效。

(2)创建Session后在浏览器查看Cookie存在JsessionID唯一标识符
在这里插入图片描述(3)Session入门案例实现

  • 在登录逻辑代码中创建Session对象
public class RegisterServlet extends HttpServlet {
	
	/*HttpServletRequest:请求对象,用于让程序获得各请求的参数*/
	/*HttpServletResponse:响应对象,用于处理响应后请求处理,如返回某个页面*/
	protected void service(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {
		//判断用户账户密码是否正确
		if("amdin".equals(username)&&"123".equals(password))
		{
			//通过请求获得session
			HttpSession session = req.getSession();
			//设置session的值,值存入sessio内存
			session.setAttribute("username", "amdin");
			session.setAttribute("password", "123");
		}

  • 在动态页面通过请求获得Session的值
public class LoginUL extends HttpServlet{
	protected void service(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
	     String username=null;
		 String password=null;
		 //请求获得session参数
		HttpSession session = req.getSession();
		if(session.getAttribute("username")!=null){
			 username = (String)session.getAttribute("username");
		}
		if(session.getAttribute("password")!=null){
			 password = (String)session.getAttribute("password");
		}

(4)Session入门案例的流程图
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值