session & cookie

本文详细介绍了JavaWeb中的会话技术,包括Cookie和Session的使用。讲解了Cookie的对象创建、基本使用、获取信息、携带路径、生存时间和清理方法。同时,文章深入探讨了Session对象、其原理、与Cookie的区别以及基本使用、持久化和销毁方法。通过案例展示了如何实现记住登录信息的功能。
摘要由CSDN通过智能技术生成

会话技术

概述:服务器与浏览器进行数据交互的时候往往会产生一些数据、将这些数据保存起来、就需要使用到javaWeb中提供的会话技术。产生的数据如果保存在浏览器端我们使用cookie、如果保存在服务器端我们使用session。

一次会话
  阶段一:打开了京东网站 会话开始
  阶段二:我们在京东网站中点击了多个超链接资源这个过程称为会话中
  阶段三:我们关闭浏览器这个过程称为 会话结束

Cookie

Cookie对象

概述:服务器与浏览器通讯过程中产生的重要数据保存在浏览器端、这个技术就是cookie

应用场景:
 记录用户信息
 购物车

Cookie的基本使用

API:
Cookie
  new Cookie(str,str) 创建cookie
Response
  addCookie(cookie) 将cookie写回浏览器
在这里插入图片描述

获取cookie信息

Request
Cookie[] request.getCookies(); 获取当前项目下所有的cookie
Cookie
  getName() 获取cookie键
  getValue() 获取cookie值在这里插入图片描述

Cookie的携带路径

浏览器存储着大量的cookie我们在访问项目都会将所有的cookie带入服务器?
不会。
如果我想让day14工程下的cookie在day15中也获取获取可以不可以呢?
可行 需要设置cookie有效访问路径
Cookie
  setPath( )默认情况下 值是当前项目表示当前项目有效 / 表示当前服务器下所有的项目都会携带
在这里插入图片描述

Cookie的生存时间

setMaxAge(秒)
cookie默认在浏览器关闭的时候销毁、我们可以设置cookie最大存活时间达到浏览器关闭的时候不销毁cookie
在这里插入图片描述

如何清空Cookie

步骤
 1、创建一个一模一样的cookie 键必须一样 值为空字符串
 2、设置cookie存活为0
 3、设置相同的有效路径(创建的时候没设置就可以省略这步)
 4、将cookie重新写回浏览器
在这里插入图片描述

案例-记住登录信息

1、在webContent目录下创建一个jsp文件 里面创建了一个login.html页面

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<form action="${pageContext.request.contextPath }/login" method="post">
		<p style="color:red;"> ${msg }</p>
		用户名:<input type="text" name="username" value="${cookie.username.value }"><br>
	         密码:<input type="password" name="password" value="${cookie.password.value }"><br>
	     <input type="checkbox" name="remember" value="yes"  
	     <c:if test="${cookie.remember.value=='yes' }">checked</c:if>
	     >记住我
	      <input type="submit" value="登录"> 
	</form>
</body>
</html>

2、开发LoginServlet

@WebServlet("/login")
public class LoginServlet extends HttpServlet {
	
	UserService service =new UserService();
	
	@Override
	protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		//用户名和密码
		String username = req.getParameter("username");
		String password = req.getParameter("password");
		//调用业务 根据用户名和密码查询用户信息
		User user =service.login(username,password);
		if(user==null) {
			//登录失败
			req.setAttribute("msg", "用户名或密码错误");
			req.getRequestDispatcher("/jsp/login.jsp").forward(req, resp);
		}else {
			//获取用户是否勾选了记住我
			String remember = req.getParameter("remember");
			//记住是否勾选的状态
			Cookie c3 = new Cookie("remember", "yes");
			resp.addCookie(c3);
			
			//勾选了
			if(remember!=null && remember.equals("yes")) {
				//创建cookie
				Cookie c1 = new Cookie("username", username);
				Cookie c2 = new Cookie("password", password);
				//设置存活时间
				c1.setMaxAge(60*60);
				c2.setMaxAge(60*60);
				//写回浏览器
				resp.addCookie(c1);
				resp.addCookie(c2);
				
			}else {
				//清空cookie
				Cookie c1 = new Cookie("username", "");
				Cookie c2 = new Cookie("password", "");
				Cookie c4 = new Cookie("remember", "");
				//设置存活时间
				c1.setMaxAge(0);
				c2.setMaxAge(0);
				c4.setMaxAge(0);
				//写回浏览器
				resp.addCookie(c1);
				resp.addCookie(c2);
				resp.addCookie(c4);
			}
			
			//登录成功将用户信息放入session中   
			req.getSession().setAttribute("user", user);
			//重定向到首页面
			resp.sendRedirect(req.getContextPath()+"/index.jsp");
		}
		
	}
}

Session

Session对象

概述:浏览器与服务器进行数据交互将产生的重要信息放在服务器端这种技术就是session

应用场景
 记住用户信息
 购物车

使用session满足条件以及session和cookie的联系

必须满足
  1、浏览器没有禁用cookie
  2、浏览器支持cookie

session原理:

每一个用户访问我们系统、我们都会给他创建一个session对象、为了区分不同的session每一个session都有唯一的JESSIONID。当用户第一次访问服务器获取session的时候、我们会给这个用户创建一个session 对象其中JESSIONID会交给Cookie进行存储,将cookie保持在用户的浏览器中,当用户第二次访问服务器的时候、就会携带这个cookie中的信息JESSIONID访问服务器找到用户的session对象。

session 和 cookie 区别:

安全性: cookie信息存放在浏览器不安全、session将信息存放服务器安全
数据量: 大小:cookie有大小限制最大4kb、session没有大小限制
位置上: cookie存在浏览器、session存在服务器

session的基本使用

API
request.getSession() 创建session
Session
  setAttribute(str,object) 添加内容
  removeAttribute(str) 移除内容
  getAttribute(str)获取内容
  invalidate()销毁session

持久化session对象

步骤
 1、新建一个session
 2、创建一个cookie 其中key必须叫JSESSIONID 值是新建的session的id
 3、将这个cookie设置存活时长
 4、将cookie重新写回浏览器
 5、往session中存一个内容
在这里插入图片描述

销毁session

在这里插入图片描述

session生命周期

1、在使用request.getSession()这个对象时候创建
2、 1-1在调用invalidate()sesion销毁 主动
  1-2 ssesion在默认存活30后消失
tomcat的conf目录中的web.xml中
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值