JavaWeb基础5—Cookie和Session会话控制

会话机制【Cookie 和 Session】,登陆页面的模拟实现 阅读详情

JavaWeb的技术体系
在这里插入图片描述

Cookie与Session作用:用于浏览器与服务器之间的会话控制

关于会话的基本概念:

  • 会话:从浏览器开启到浏览器关闭;
  • 会话技术:用来保存在会话期间 浏览器和服务器所产生的数据;
  • 会话技术分类:
    • 客户端的会话技术:把会话数据保存在客户端 【cookie】
    • 服务端的会话技术:把会话数据保存在服务端 【session】

一.Cookie

1.Cookie概述

1.Cookie的起源:

1)现实存在的问题

由于HTTP是无状态协议,服务器不能记录浏览器的访问状态,也就是说服务器不能区分两次请求是否由一个客户端发出。

这样的设计严重阻碍的Web程序的设计。如:在我们进行网购时,买了一条裤子,又买了一个手机。由于http协议是无状态的,如果不通过其他手段,服务器是不能知道用户到底买了什么。而Cookie就是解决方案之一。

2)问题的解决方案:Cookie

Cookie实际上就是服务器保存在浏览器上的一段信息。

浏览器有了Cookie之后,每次向服务器发送请求时都会同时将该信息发送给服务器,服务器收到请求后,就可以根据该信息处理请求。

2.Cookie的用途

  • 用户登录状态的保持
  • 广告推荐

3.Cookie的运行原理:

  • 1.第一次向服务器发送请求时在服务器端创建一个Cookie对象
  • 2.将Cookie对象发送给浏览器
  • 3.以后浏览器再发请求就会携带着该Coolie对象
  • 4.服务器通过不同的Cookie来区别不同的用户

4.Cookie的限制性
① Cookie作为请求或响应报文发送,无形中增加了网络流量。
② Cookie是明文传送的安全性差。
③ 各个浏览器对Cookie有限制,使用上有局限
④ Cookie的值只能是String类型,不能保存对象

2 cookie的基本使用

2.1 cookie常用的方法介绍

API介绍

Cookie:

方法返回值描述
Cookie(String name, String value)Cookie构造方法,创建cookie对象
getName()String获取cookie的名称
getValue()String获取cookie的值
setPath(String uri)void设置cookie的路径——浏览器根据这个路径判断哪些cookie要发送给服务器

HttpServletResponse:

方法返回值描述
addCookie(Cookie cookie)void将cookie发送给浏览器

HttpServletRequest:

方法返回值描述
getCookies()Cookie[]获取浏览器发送的cookie
演示代码

CookieServlet1:

@WebServlet(name = "CookieServlet1",urlPatterns = "/cookie1")
public class CookieServlet1 extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //创建cookie
        Cookie cookie = new Cookie("username","tom");
        //设置cookie的路径——浏览器根据这个路径判断那些cookie要发送给服务器
        cookie.setPath("/day04");
        //将cookie发送给浏览器
        response.addCookie(cookie);
    }
}

CookieServlet2:

@WebServlet(name = "CookieServlet2",urlPatterns = "/cookie2")
public class CookieServlet2 extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //获取浏览器发送的cookie
        Cookie[] cookies = request.getCookies();
        if(cookies != null){
            for (Cookie coo : cookies) {
                if("username".equals(coo.getName())){
                    //打印cookie的名称和值
                    System.out.println(coo.getName()+":"+coo.getValue());
                }
            }
        }
    }
}
cookie技术原理分析

在这里插入图片描述

2.2 删除cookie

API介绍
方法返回值描述
setMaxAge(int expiry)void设置cookie的最大生存时间(单位:秒)
setPath(String uri)void设置cookie的路径——浏览器根据这个路径判断那些cookie要发送给服务器
注意事项
  1. cookie的生存时间单位为:秒
  2. 要删除已经存在的cookie,后一个用来覆盖cookie必须名称与路径与原来的cookie一致
演示代码
@WebServlet(name = "MaxAgeServlet",urlPatterns = "/maxage")
public class MaxAgeServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //创建cookie
       /* Cookie cookie = new Cookie("name","tom");
        //设置cookie的生存时间
        cookie.setMaxAge(60*60*24*7);
        //设置cookie的路径
        cookie.setPath("/day04");
        //发送cookie给浏览器
        response.addCookie(cookie);*/
        
        //=====如果需要立刻删除cookie======
        //创建空数据的cookie,名称保持一致
        Cookie cookie = new Cookie("name","");
        //设置cookie的生存时间为0立刻死亡
        cookie.setMaxAge(0);
        //设置cookie的路径,与原来的cookie路径保持一致
        cookie.setPath("/day04");
        //发送cookie给浏览器
        response.addCookie(cookie);
    }
}

2.3 案例:记录用户上一次访问时间

案例需求

展示用户上一次访问服务器的时间

案例分析

在这里插入图片描述

实现代码
@WebServlet(name = "TimeServlet",urlPatterns = "/time")
public class TimeServlet extends HttpServlet {

	public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//第一次访问操作
		// 1 获取用户当前访问的时间
		 Date date = new Date();
		 //格式化时间数据(注意:在cookie值中不能使用分号(;)、逗号(,)、等号(=)以及空格,否则会出现异常)
		 SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd/hh:mm:ss");
		 String format1 = format.format(date);
		 System.out.println(format1);
		// 2 将数据存入cookie
		 Cookie cookie = new Cookie("time", format1);
		 cookie.setMaxAge(60*60*24);
		// 3 将数据发送给浏览器
		 response.addCookie(cookie);
		
		//第二次访问操作
		 //获取cookie数组
		 Cookie[] cookies = request.getCookies();
		if(cookies != null) {
			for (Cookie cookie2 : cookies) {
				//选择获取名称为time的cookie
				if("time".equals(cookie2.getName())) {
					//将数据发送页面
					response.getWriter().write(cookie2.getValue());
				}
			}
		}
	}

	public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doGet(request, response);
	}

}

二.Session

1.为什么需要Session

  1. 使用Cookie有一个非常大的局限,就是如果Cookie很多,则无形的增加了客户端与服务端的数据传输量。而且由于浏览器对Cookie数量的限制,注定我们不能再Cookie中保存过多的信息,于是Session出现。

  2. Session的作用就是在服务器端保存一些用户的数据,然后传递给用户一个名字为JSESSIONID的Cookie,这个JESSIONID对应这个服务器中的一个Session对象,通过它就可以获取到保存用户信息的Session。

2.Session概述:

Session技术就好比医院发放给病人的就医卡和医院为每个病人保留病例档案的过程。当浏览器访问Web服务器时,Servlet容器就会创建一个Session对象和ID属性,其中,Session对象就相当于病历档案,ID就相当于就诊卡号。当客户端后续访问服务器时,只要将标识号传递给服务器,服务器就能判断出该请求是哪个客户端发送的,从而选择与之对应的Session对象为其服务。

需要注意的是,由于客户端需要接收、记录和回送Session对象的ID,因此,通常情况下,Session是借助Cookie技术来传递ID属性的。

3.Session的运行原理:

  • 1.第一次向服务器发送请求时在服务器端创建一个Session对象,该对象有一个全球唯一的ID
  • 2.在创建Session对象的同时会创建一个特殊的Cookie对象,该Cookie对象的名字是一个固定值:JSESSIONID,该Cookie对象的值就是Session对象的ID值,并且将该Cookie对象发送给浏览器
  • 3.以后浏览器再发送请求就会携带着这个特殊的Cookie对象
  • 4.服务器获取Cookie对象的值之后寻找与之对应的Session对象,以此来区分不同的用户

2. session的与cookie的区别

cookiesession
会话数据保存的位置浏览器服务器
数据的安全性不安全安全
存储数是否有限制有无

3. session的应用场景

  1. 保存购物车数据
  2. 保存用户浏览器记录数据
  3. 保存用户登录信息数据
  4. 保存验证码

4. session作为域对象使用

4.1 session存储数据与获取数据

API介绍

HttpServletRequest:

方法返回值描述
getSession()HttpSession获取session对象

HttpSession:

方法返回值描述
setAttribute(String name, Object value)void在session中保存数据
etAttribute(String name)Object从session中获取数据
removeAttribute(String name)void从session中移除数据
注意事项

getAttribute方法返回值是Object,因此需要将返回值强制转换才能方便使用。

演示代码

SessionServlet1:

@WebServlet(name = "SessionServlet1",urlPatterns = "/session1")
public class SessionServlet1 extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //获取session对象
        HttpSession session = request.getSession();
        //添加数据
        session.setAttribute("addr","广州");
        
    }
}

SessionServlet2:

@WebServlet(name = "SessionServlet2",urlPatterns = "/session2")
public class SessionServlet2 extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //获取session对象
        HttpSession session = request.getSession();
      	//获取数据
        String addr = (String) session.getAttribute("addr");
        System.out.println(addr);
        //移除数据
        session.removeAttribute("addr");
        //再次获取,查看效果
        String addr1 = (String) session.getAttribute("addr");
        System.out.println(addr1);
    }
}

4.2 session的原理分析

在这里插入图片描述

4.3 session实现关闭浏览器继续可以访问数据

通过上面的原理图,我们发现记录sessionid的cookie在关闭浏览器之后就到期了,那么如果我们希望——关闭浏览器继续可以访问session数据,该怎么做呢?

案例需求

关闭浏览器继续可以访问session数据

实现:访问一次服务器,然后关闭浏览器,再访问一次:两次session对象一致

案例分析
  1. 创建一个servlet

  2. 通过request对象获取session的id

  3. 自定义一个cookie对象,保存session的id,注意cookie名称为"JSESSIONID",设置一个比较长的生存时间

  4. 发送给浏览器

代码实现
@WebServlet(name = "SessionServlet3",urlPatterns = "/session3")
public class SessionServlet3 extends HttpServlet {

	public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//获取session对象
		HttpSession session = request.getSession();
		System.out.println(session);
		//自己创建一个cookie,要求被浏览器持久化保存起来(setMaxAge(10000))放便后期使用
		Cookie cookie = new Cookie("JSESSIONID", session.getId());
		//活的久一点
		cookie.setMaxAge(10000);
		response.addCookie(cookie);
	}

	public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doGet(request, response);
	}

}

5. 案例:使用session存储验证码完成登录功能

5.1 案例需求

  1. 在登录页面用户登录的时候要查看到验证码,如图所示:

在这里插入图片描述

  1. 在生成页面验证码图片的同时,使用session存储验证码

  2. 在处理用户登录请求的时候,首先校验验证码

  3. 校验通过才能执行登录操作

5.2 案例分析

在这里插入图片描述

5.3 代码实现

1.页面

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
            <title>login</title>
            <script type="text/javascript">

                function changeCode(){
                    document.getElementById("img").src = "/day04/checkcode?r="+new Date().getTime();
                }
            </script>
        </head>
        <body>
            <form action="/day04/login" method="post">
                <table>
                    <tr><td>用户名:</td><td><input type="text" name="username"></td></tr>
                    <tr><td>密码:</td><td><input type="password" name="password"></td></tr>
                    <tr><td>验证码:</td><td><input type="text" name="code"></td></tr>
                    <!-- 通过向服务器发送请求,从服务器获取验证码数据 -->
                    <tr><td></td><td><img id="img" src="/day04/checkcode" onclick="changeCode();"/><a href="javascript:;" onclick="changeCode();">换一换</a><span><% if(request.getAttribute("msg")!=null){out.write(request.getAttribute("msg").toString());}%></span></td></tr>
                    <tr><td></td><td><input type="submit" value="登陆"></td></tr>
                </table>
            </form>
        </body>
    </html>

2.配置验证码servlet

@WebServlet(name = "CheckcodeServlet",urlPatterns = "/checkcode")
public class CheckcodeServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//  创建画布
		int width = 120;
		int height = 40;
		BufferedImage bufferedImage = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
		//  获得画笔
		Graphics g = bufferedImage.getGraphics();
		//  填充背景颜色
		g.setColor(Color.white);
		g.fillRect(0, 0, width, height);
		//  绘制边框
		g.setColor(Color.red);
		g.drawRect(0, 0, width - 1, height - 1);
		//  生成随机字符
		//  准备数据
		String data = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890";
		//  准备随机对象
		Random r = new Random();
		//  声明一个变量 保存验证码
		String code = "";
		//  书写4个随机字符
		for (int i = 0; i < 4; i++) {
			//  设置字体
			g.setFont(new Font("宋体", Font.BOLD, 28));
			//  设置随机颜色
			g.setColor(new Color(r.nextInt(255), r.nextInt(255), r.nextInt(255)));

			String str = data.charAt(r.nextInt(data.length())) + "";
			g.drawString(str, 10 + i * 28, 30);

			//  将新的字符 保存到验证码中
			code = code + str;
		}
		//  绘制干扰线
		for (int i = 0; i < 6; i++) {
			//  设置随机颜色
			g.setColor(new Color(r.nextInt(255), r.nextInt(255), r.nextInt(255)));

			g.drawLine(r.nextInt(width), r.nextInt(height), r.nextInt(width), r.nextInt(height));
		}

		//  将验证码 打印到控制台
		System.out.println(code);

		//  将验证码放到session中
		request.getSession().setAttribute("code_session", code);

		//  将画布显示在浏览器中
		ImageIO.write(bufferedImage, "jpg", response.getOutputStream());
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doGet(request, response);
	}

}

3.登录servlet

@WebServlet(name = "LoginServlet",urlPatterns = "/login")
public class LoginServlet extends HttpServlet {

	public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//用户请求中的验证码获取
		String code = request.getParameter("code");
		//获取session中保存的验证码
		String code_session = (String)request.getSession().getAttribute("code_session");

		//与session中保存的验证码进行校验
		if(!code_session.equalsIgnoreCase(code)){
			//验证码错误,告诉用户,页面提示
			request.setAttribute("msg","验证码错误");
			request.getRequestDispatcher("/login.jsp").forward(request,response);
			return;
		}
		//验证码正确,登录逻辑执行
		//获取用户名和密码
		String username = request.getParameter("username");
		String password = request.getParameter("password");
		//调用Service方法,登录用户
		UserDao userDao = new UserDao();

		User loginUser = userDao.login(username,password);
		if(loginUser == null){
			request.setAttribute("msg","用户名或则密码错误");
			request.getRequestDispatcher("/login.jsp").forward(request,response);
			return;
		}else{
			//登陆成功,跳转主页
			response.sendRedirect(request.getContextPath());
			return;
		}
	}

	public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doGet(request, response);
	}

}

4.service:

public class UserService {
    private UserDao userDao = new UserDao();

    public User login(String username, String password) {

        return userDao.login(username, password);
    }
}

5.dao:

public class UserDao {
    private QueryRunner queryRunner = queryRunner = new QueryRunner(JdbcUtils.getDataSource());

    /**
     * 查询用户名和密码是否匹配的方法
     */
    public User login(String username, String password) {
        try {
            String sql = "select * from user where username = ? and password = ?";

            //查询并封装
            User user = queryRunner.query(sql, new BeanHandler<User>(User.class), username, password);
            return user;
        } catch (SQLException e) {
            e.printStackTrace();
            return null;
        }
    }
}

相关jar包、jdbc工具类、c3p0配置文件、User类、数据库user表,请自行编写

6. 案例:模拟简易session购物车

6.1 案例需求

在这里插入图片描述

完成session购物车案例

  • 保证中文的正常显示

  • 购物车数据通过Session保存,窗口关闭以后数据消失。

6.2 案例分析

  1. 在第一个购物界面选择商品添加到购物车,手动回退到购物界面

  2. 在购物车选好物品后,可以选择“买点别的”,跳转到第二个购物页面选购

  3. 在第二个购物界面选择商品添加到购物车,手动回退到购物界面

  4. 查看购物车页面

6.3 代码实现

  • shopping cart1.jsp:购物车一页面球类
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>购物球类</title>
</head>
<body>

<h4>各种球大甩卖,一律八块</h4>
<form action="/day04/data" method="post" name="Ball" id="ball">
    <input type="checkbox" name="data" value="篮球">篮球<br>
    <input type="checkbox" name="data" value="足球">足球<br>
    <input type="checkbox" name="data" value="排球">排球<br><br>
    <input type="submit" value="提交">
    <input type="reset" value="全部重写"><br><br>
    <a href="ShoppingCart2.jsp">买点别的</a>&nbsp;&nbsp;<a href="display.jsp">查看购物车</a>
</form>

</body>
</html>

  • shopping cart2.jsp:购物车二页面肉类
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>肉类购物车</title>
</head>
<body>
<h4>各种肉大甩卖,一律十块:</h4>
<form name="Meet" id="Meet" action="/day04/data" method="post">
    <input type="checkbox" name="data" value="猪肉">猪肉<br>
    <input type="checkbox" name="data" value="牛肉">牛肉<br>
    <input type="checkbox" name="data" value="羊肉">羊肉<br><br>
    <input type="submit" value="提交">
    <input type="reset" value="全部重写"><br><br>
    <a href="ShoppingCart1.jsp">买点别的</a>&nbsp;&nbsp;<a href="display.jsp">查看购物车</a>
</form>
</body>
</html>

  • DataServlet:数据处理
@WebServlet(name = "DataServlet",urlPatterns = "/data")
public class DataServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setCharacterEncoding("UTF-8");
        String goods[] = request.getParameterValues("data");

        HttpSession session = request.getSession();
        //获取表单传过来的数据存入字符串数组中
        Set<String> now= (Set <String>)session.getAttribute("list");

        //当前session内的东西
        //新建集合将数据存入
        Set <String> set = new HashSet<String>();
        if(goods!=null){
            //将货物添加到集合中
            Collections.addAll(set,goods);
        }
        if(now!=null){
            //将session内当前的东西添加到集合中
            set.addAll(now);
        }
        //将集合存入session中,命名为list
        session.setAttribute("list",set);

        //浏览器输出添加成功
        response.setContentType("text/html;charset=UTF-8");
        response.getWriter().write("<h1>添加到购物车成功</h1>");

    }
}

  • display.jsp:显示数据页面
<%@ page contentType="text/html;charset=UTF-8" language="java" import="java.util.*" %>
<html>
<head>
    <title>显示购物车内容</title>
</head>
<body>
    <h3>你选择的结果是:</h3>
    <%
        Set <String> goods = (Set<String>)session.getAttribute("list");
        if (goods!= null){
            for (String good : goods){
                out.print(good + "<br/>");
            }
        }
    %>
</body>
</html>

7.Session的钝化与活化

1.钝化

  • 关闭服务器时,服务器中的session会被序列化,并保存到本地
  • Session对象中的成员需要实现序列化接口

2.活化

  • 服务器启动时,会将服务器本地的Session序列化文件加载到服务器中,之前的session还可以用
java中使用session模拟用户登陆 立即下载

相关推荐

JavaWeb使用Session和Cookie实现登录认证

本篇文章主要介绍了JavaWeb使用Session和Cookie实现登录认证,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。

JavaWeb~利用会话管理(基于Session+Cookie)来模拟实现用户登录以及敏感资源的访问

利用会话管理来模拟实现登录功能与敏感资源的访问,其中用户登录时,验证账号密码是否通过,如果通过,创建session并保存用户信息,对于敏感资源的访问,则通过验证session来实现.

qq_58284486的博客 2190

Win10安装Nek5000

1 安装wsl 2 2 安装Nek5000 3 安装依赖项 4 安装openmpi 5 配置Nek5000 6 编译Nek5000 7 运行Nek5000算例 8 安装paraview并查看结果

weixin_43176703的博客 3448

Cookie和Session的各自作用、使用场景、java操作代码(创建、获取等操作)

Cookie和Session的各自作用、使用场景、java操作代码(创建、获取等操作)

每天八杯水的博客 578

【安全加固】应对Sweet32攻击:TLS/SSL协议3DES漏洞深度解析与修复指南

本文深度解析了CVE-2016-2183(Sweet32攻击)漏洞,该漏洞利用TLS/SSL协议中3DES加密算法的64位块大小缺陷,通过大量数据流量实施“生日攻击”导致信息泄露。文章提供了从原理分析、系统排查到跨平台修复的完整指南,重点指导如何在Windows、Linux服务器及网络设备中禁用不安全的3DES密码套件,并采用AES-GCM等更安全的加密方式,以彻底修复此TLS/SSL漏洞。

weixin_29230649的博客 585

TCGA之GDC-client工具下载安装与使用

文章主要是对GDC-client工具下载TCGA数据库数据整个过程的一个记录 1.下载GDC-client工具 GDC-client工具网址:GDC Data Transfer Tool | NCI Genomic Data Commons (cancer.gov) 我这里下的是上图中红圈中的版本, 2.解压安装 从网上了解的是不能解压到带中文的路径里,解压后是一个.exe文件,为了能直接在cmd命令行下使用,将其加入系统环境: 点击新建之后,输入将文件解压到的路径,然后...

better_strong的博客 1万+

session 和 Cookie 详解

当用户第一次访问Servlet时,服务器端会给用户创建一个独立的Session。 并且生成一个SessionID,这个SessionID在响应浏览器的时候会被装进cookie中,从而被保存到浏览器中。 当用户再一次访问Servlet时,请求中会携带着cookie中的SessionID去访问。 服务器会根据这个SessionID去查看是否有对应的Session对象。 有就拿出来使用;没有就创建一个Session(相当于用户第一次访问)。

GoodManS的优快云 803

Buck电路中自举电容串联小电阻的作用

在Buck电路中,自举电容(Cboot)驱动高边MOSFET时,因寄生电感和电容会形成LC谐振回路,导致SW节点高频振铃,引发EMI问题。串联小电阻(Rboot)可引入阻尼效应,抑制振铃、改善波形和EMI性能,但会略微增加开关损耗。设计时建议预留可调电阻位(2Ω~20Ω),根据实测结果平衡效率与系统稳定性,提升电源可靠性。这一措施是优化开关电源EMC的常见实践。

硬核科技 624

第5章 会话及其会话技术

当用户通过浏览器访问Web应用时,通常情况下,服务器需要对用户的状态进行跟踪。例如,用户在网站结算商品时,Web服务器必须根据请求用户的身份,找到该用户所购买的商品。在Web开发中,服务器跟踪用户信息的技术成为会话技术。接下来,本章将针对会话及其会话技术进行详细的讲解。 5.1 会话概述 在日常生活中,从拨通电话到挂断电话之间的一连串的你问我答的过程就是一个会话。Web应用中的会话过程类似于生活中的打电话过程,它指的是一个客户端(浏览器)与Web服务器之间连续发生的一系列请求和响应过程,例如,一个用户在

weixin_43723935的博客 2977

语言大模型之Tokenization的深入理解

Tokenization(分词)是自然语言处理(NLP)中一个非常重要的步骤,它的目标是将文本转换为模型可以理解的格式。对于像GPT、BERT等大型预训练模型来说,tokenization决定了文本如何转化为数字表示,从而影响模型在不同任务中的表现。接下来我会深入介绍tokenization的过程、不同的tokenization方法,以及它与模型微调(fine-tuning)之间的关系。

JustinMars的博客 338

Trae 保姆级使用指南,零基础小白也能实现编程。

Trae 使用指南 Trae AI 使用 零基础编程 满血版 DeepSeek-R1&V3 AI IDE 深度理解中文开发场景 傻瓜式编程 编程入门 开发入门

Mr.L-OAM的博客 5813

java开发就业方向_从事Java开发主要就业方向有哪些?

该楼层疑似违规已被系统折叠隐藏此楼查看此楼第二阶段:Javaweb掌握数据库(MySQL)、前端(Html5、CSS3、JS、BootStrap、jQuery)、后端技术(Servlet、Filter、Listener、JSP)、会话跟踪技术(Cookie、Session)、版本控制器(SVN)、在线支付等技能。可胜任工作(工作方向):能根据产品需求和组长设计的方案独立完成代码编写,熟悉高并发、...

weixin_36028243的博客 196

计算机实战分享3:森林火灾预测分析可视化机器学习预测-完整数据代码-可直接运行

计算机实战分享3:森林火灾预测分析可视化机器学习预测-完整数据代码-可直接运行

603

【JavaWeb】会话跟踪技术Cookie与Session原始真解

会话是什么?Cookie与Session技术的作用是什么,又该如何理解?为什么说Session是基于Cookie实现的?本文由会话入手,层层刨析Cookie与Session的用途,并就基本使用进行了讲解,其中,Cookie与Session的生命周期理解上有些不同,需要特别注意。

黄小黄的博客 1955

手把手教你学PCIE-- 热插拔电路设计与实现方案

PCIe热插拔(Hot-Plug)技术允许用户在系统运行时安全地插入或移除设备,而无需重启系统。本文将深入讲解热插拔电路的设计要点、关键器件选型及信号协议规范,涵盖机械结构、电气保护和电源管理三大核心模块。​。

MHD0815的博客 440

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

【JavaWeb从零到一】会话技术Cookie&Session&JSP

会话技术在我们JavaEE服务器开发过程中是一项非常重要的技术,他可以解决非常重要的问题。本文中讲到的会话技术主要涉及到Cookie和Session,以及以JSP来展示页面。

Hhzzy99的博客 3993

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

【JavaWeb】之Cookie & Session

JavaWeb基础Session与Cookie相关知识详细介绍~

小新要变强的博客 2438

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

JavaWeb『会话控制、Cookie、Session』

会话控制第一节 Cookie的工作机1、HTTP协议和会话控制2、Cookie介绍①本质②Cookie在浏览器和服务器之间的传递[1]没有Cookie的状态[2]创建Cookie对象并返回[3]服务器端返回Cookie的响应消息头[4]浏览器拿到Cookie之后[5]服务器端读取Cookie的信息③Cookie时效性[1]理论[2]代码[3]会话和持久化Cookie对比④Cookie的domain和path第二节 Session的工作机1、文字描述2、流程图描述3、代码验证4、时效性①为什么Session要

不会敲代码的z的博客 249

【JavaWeb】Cookie和Session的学习

一、cookie cookie是服务器通知客户端保存键值对的一种技术; 客户端有了cookie以后,每次请求都将cookie发送给服务器 每个cookie的大小不超过4kb cookie的创建: //1、创建Cookie对象 Cookie cookie =new Cookie("key1","value.

weixin_47418550的博客 832

Javaweb——会话技术(Cookie、Session)讲解

Response 对象 一、Response 对象的概述 B/S 结构的软件,可以通过浏览器访问服务器; 二、Response 对象的 API 1. 关于响应行的方法 setStatus(int sc) 设置响应的状态码; 2. 关于响应头的方法 setHeader(String name, String value) set 开头的方法:一个 key 对应一个 value情况; addHeader(String name, String value) Add 开头的方法:一个 key 对应多个

Zzz5270的博客 1058

JavaWeb基础(3)-会话技术(cookie和session),过滤器(Filter),监听器(Listener)

JavaWeb基础(3)-会话技术(cookie和session),过滤器(Filter),监听器(Listener)

qq_55626883的博客 698

JavaWeb_第6章_会话技术_Cookie+Session

JavaWeb_第5章_会话技术_Cookie+Session 1,会话跟踪技术的概述 2,Cookie 2.1 Cookie的基本使用 2.2 Cookie的原理分析 2.3 Cookie的使用细节 2.3.1 Cookie的存活时间 2.3.2 Cookie存储中文 3,Session 3.1 Session的基本使用 3.2 Session的原理分析 3.3 Session的使用细节 3.3.1 Session钝化与活化 3.3.2 Session销毁 4,用户登录注册案例 4.1 需求分析 4.2

无 470

【JavaWeb】Cookie和Session解析

目录 一、Cookie解析: 1.Cookie概述: 2.创建Cookie: 3.服务器获取Cookie: 4.Cookie值的修改: 方案一: 方案二: 5.Cookie的分类: 6.Cookie生命控制: 7.Cookie有效路径Path设置: 8.免用户名密码登录实现: 二、Session解析: 1.Session概述: 2.Session的创建和获取: 3.Session域数据存取: 4.Session生命周期控制: 5.服务器和Session之间的关联: 一..

范同学的学习历程 1723

JavaWeb-03Cookie_Session

JSP是JavaWeb服务器端的动态资源。它与HTML页面的作用是相同的,显示数据和获取数据。Cookie翻译成中文是小甜点,小饼干的意思。在HTTP中它表示服务器送给客户端浏览器的小甜点。Cookie是在浏览器访问Web服务器的某个资源时,由Web服务器在HTTP响应消息头中附带传送给浏览器的一小段数据。一旦Web浏览器保存了某个Cookie,那么它在以后每次访问该Web服务器时,都应在HTTP请求头中将这个Cookie回传给Web服务器。一个Cookie主要由标识该信息的名称(name)和值(

ysy1648067239的博客 803

JavaWeb笔记整理04——登录-cookie、session

Cookie 和 Session 是协同工作用来在无状态的HTTP协议下保持用户状态的技术。通常,Session ID 存储在 Cookie 中,客户端浏览器通过 Cookie 自动将 Session ID 发送到服务器,服务器根据 Session ID 检索对应的 Session 数据来识别和管理用户的会话状态。简而言之,Cookie 用于在客户端存储 Session ID,而 Session 本身存储在服务器端,两者共同维护了用户会话的连续性。

hello77的blogggg 祝你得偿所愿 1212

Javaweb Cookie和Session

cookie和session的区别,为什么要使用cookie和session,cookie和session如何解决跨域问题

暴力扬 2227
上一篇: Java虚拟机运行时数据区概述
下一篇: JavaWeb基础3—JSP、EL与JSTL
PassionZheng
博客等级 码龄11年 110粉丝 110原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值