【Java】JavaWEB核心要点总结:63

news2024/11/25 14:48:55

文章目录

  • 1. JSP 和 Servlet 有什么区别
  • 2. JSP有哪些内置对象 分别是什么
  • 3. 详细讲解cookie session token
  • 4. 如果客户端禁止 了cookie ,session 还能用吗
  • 5. session 的工作原理


在这里插入图片描述

1. JSP 和 Servlet 有什么区别


JSP(Java Server Pages)和Servlet 是 Java Web 开发中常用的两种技术。

Servlet 是一种基于 Java编写的服务器端程序,其主要作用是处理HTTP请求、响应、业务逻辑等操作。通过 Servlet,可以在服务器端生成动态内容,并将其传输到客户端浏览器。

JSP 可以看作是 Servlet 的一种简化形式,它允许在 HTML 页面中嵌入 Java 代码来实现动态网页的功能。相比于 Servlet,JSP 更加易于维护和开发,特别是对于前端工程师而言。

因此,Servlet 主要用于处理底层的协议通信、数据库访问等逻辑,而 JSP 则更多地专注于呈现数据、与用户交互等方面。两者并不是对立的关系,而是可以互相配合使用的。


2. JSP有哪些内置对象 分别是什么


JSP(Java Server Pages)中有多个内置对象,包括:

request 对象:代表 HTTP 请求,并提供了访问客户端提交的数据的方法。

response 对象:代表服务器对客户端请求的响应,并提供了向客户端发送数据的方法。

out 对象:代表输出流,并提供了向客户端输出内容的方法。

session 对象:代表用户会话,在同一会话中可以共享数据。

application 对象:代表 ServletContext 对象,代表整个 Web 应用程序,并提供了在应用程序范围内共享数据的方法。

pageContext 对象:代表 JSP 页面本身的上下文,并提供了获取其他内置对象的方法。

config 对象:代表 ServletConfig 对象,提供了获取 Web 应用程序配置信息的方法。

exception 对象:代表异常信息,可以获取最近一次抛出的异常。


3. 详细讲解cookie session token


在 Web 应用程序中,经常需要对用户进行身份认证和权限控制。Cookie、Session 和 Token 是常用的三种方式。

Cookie
Cookie 是一种客户端存储机制,服务器通过设置 Cookie 将数据保存在客户端浏览器中。之后,在每个请求中都会自动发送 Cookie 到服务器,以便服务器验证用户的身份信息。Cookie 可以包含任何信息,如用户名、密码、喜好设置等。

Cookie 的优点在于易于实现和管理,可以在不同站点间共享信息。缺点是存在 Cookie 被窃取或篡改的风险。为了减小这种风险,应使用 HTTPS 协议,并保证 Cookie 仅在受信赖的域名下使用。

Session
Session 是一种服务器端存储机制,服务器通过创建唯一的 Session ID(会话标识符)来维护与客户端之间的会话。服务器将 Session ID 存储在 Cookie 中或者 URL 参数中发送给客户端,客户端收到之后再发送回服务器,服务器通过 Session ID 来查询客户端的相关会话信息。

Session 的优点在于安全性高,因为所有的数据都保存在服务器端,客户端只接收和发送 Session ID,而无法获取具体的信息内容。缺点是需要在服务器上保存大量的会话数据,会占用服务器的内存和存储空间。

Token
Token 是一种轻量级的身份认证机制,客户端在登录成功后由服务器生成一个 JSON Web Token (JWT),并将其保存在客户端本地。之后,在每个请求中都会发送该 Token 信息,以便服务器验证用户的身份和权限信息。

Token 的优点在于灵活性高,可以用于不同类型的客户端和服务器端架构,无需依赖 Cookie。缺点是存在某些安全风险,如果 Token 被泄露,则有可能被恶意利用篡改或伪造 Token。为了减少这种风险,应使用 JWT 签名和加密、设置过期时间等措施。

Cookie、Session 和 Token 都是常见的身份认证和权限控制机制,各有优缺点,应根据具体的业务场景选择合适的方式。


4. 如果客户端禁止 了cookie ,session 还能用吗


如果客户端禁止了 Cookie,则 Session 可能无法正常工作,因为 Session ID 通常是通过 Cookie 在客户端和服务器之间传递的。此时,需要使用其他机制来实现身份认证和会话管理,例如:

URL 重写:将 Session ID 写入 URL 中的查询参数中,在后续的请求中通过 URL 中的参数来识别用户的会话。但是这种方式可能会泄露用户的信息,同样存在安全风险。

隐藏表单域:将 Session ID 写入 HTML 页面的隐藏表单域中,在后续的请求中将 Session ID 一同提交到服务器端。但是这种方式需要特殊的处理,且对前端页面设计有要求。

LocalStorage 或 IndexedDB:在客户端使用浏览器本地存储来保存 Session 相关数据,而不是依赖于 Cookie。但是这种方式需要浏览器支持,同时需要注意清理浏览器本地存储中过期的 Session 数据,以免造成安全隐患。

Token 认证:使用 Token 认证机制,客户端在每次请求时都必须发送 Token,服务器通过验证 Token 来判断用户身份。Token 可以通过 HTTP 头部、URL 参数等方式传递,不依赖于 Cookie。

所以 虽然禁止 Cookie 的情况下可能会影响 Session 的使用,但仍然有多种手段可以实现身份认证和会话管理。根据具体的业务场景,选择合适的解决方案是非常重要的。


5. session 的工作原理


Session 是一种服务器端的状态管理机制,它在服务端保存客户端会话的相关数据,并为每个客户端分配一个 Session ID。客户端通过向服务器发送 Session ID 来获取该客户端的会话数据。

Session 的工作原理如下:

  1. 客户端请求网页:当客户端访问网站时,服务器会自动创建一个唯一的 Session ID,并将它存储在 Cookie 中,然后返回该 Cookie 到客户端浏览器。如果客户端禁用了 Cookie,Session ID 可能会存在于 URL 的查询参数中。

  2. 服务器创建 Session 数据:服务器根据 Session ID 创建一个包含会话数据的空 Session 对象,并把 Session ID 保存到 Session 存储机制(通常是内存或数据库)中,以便后续能够根据 Session ID 获取到该客户端对应的 Session 对象。

  3. 客户端与服务器交互:接下来,客户端与服务器之间进行一系列的交互。例如,客户端可能提交表单、点击链接等操作,服务器会根据请求中的 Session ID 查找对应的 Session 对象,并通过 Session 对象来处理相应的请求,更新 Session 数据。此时,通常会修改用户的登录状态、记录用户的浏览信息、保存购物车等相关信息。

  4. 服务器关闭 Session:通常情况下,Session 会随着客户端访问网站的结束而关闭。服务器判断客户端是否长时间没有活动,或关闭浏览器等行为,会把该客户端对应的 Session 数据从存储机制中删除,并在下次访问时重新创建一个新的 Session 对象。

通过以上步骤,Session 可以实现跨请求和跨页面的状态保存,在 Web 应用程序中扮演着重要的角色。同时,也需要注意 Session 的安全性,避免泄露 Session ID 和 Session 数据。




在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/621864.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

读改变未来的九大算法笔记06_图形识别

1. 人工智能研究人员在过去几十年中学到的最重要的教训之一 1.1. 看似智能的行为有可能从看似随机的系统中浮现出来 1.2. 如果我们有能力进入人脑,研究神经元之间连接的强度,其中绝大部分连接都会表现得很随机 1.3. 当作为集合体行动时,这…

javaScript蓝桥杯-----全球新冠疫情数据统计

目录 一、介绍二、准备三、⽬标四、代码五、完成 一、介绍 新冠疫情席卷全球,在此期间有很多免费的 API 和⽹站为⼈们提供了各个国家疫情数据的查询功能,这些免费公开的数据体现出了互联⽹作为信息媒介的优越性,帮助全球⼈⺠更好的了解⼀线疫…

电路模型和电路定律(3)——“电路分析”

小雅兰期末加油冲冲冲!!! 复习之前的内容: 这样的连接方式是不可以的: 两个电压源,电压值不相同,是不能并联的 两个电流源,电流值不相同,是不能串联的 电流源也不能开…

浅谈Zuul、Gateway

一、Zuul Zuul是通过Servlet来实现的,Zuul通过自定义的ZuulServlet(类似于Spring MVC的DispatcherServlet)来对请求进行控制(一系列过滤器处理Http请求)。 所有的Request都要经过ZuulServlet的处理,三个核心的方法preRoute(),rou…

时钟频率的配置-DG32

时钟频率的配置-DG32 HXTAL:高速外部时钟,4到32MHz的外部振荡器,可为系统提供精确的主时钟。带有特定频率的晶体必须靠近两个HXTAL的引脚。和晶体连接的外部电阻和电容必须根据所选择的振荡器来调整; LXTAL:低速外部…

chatgpt赋能python:Python开发桌面应用全面介绍

Python开发桌面应用全面介绍 Python是一种非常万能的编程语言,也逐步发展成为一种适用于开发各种桌面应用程序的语言。Python开发桌面应用的优点是它可以快速开发,易于阅读和使用,同时具有很高的可扩展性和可维护性,因此越来越多…

chatgpt赋能python:Python开立方:简单快捷的计算方法

Python开立方:简单快捷的计算方法 如果你是一位程序员或者是一个正在学习编程的初学者,那么你一定会用到Python这个编程语言。Python作为一门多用途的编程语言,它有着简单易学、高效快捷、优雅简洁等优点。同时,在数据分析、人工…

Keras-3-实例2-多分类问题

1. 多分类问题: 1.1 路透社数据集加载 路透社数据集由路透社在1986年发布,包含46个不同的主题:某些主题样本较多,某些较少,但是训练集中每个主题都至少含有10个样本。 from keras.datasets import reuters(train_da…

ViewOverlay-加蒙层真的一种实现方式

一、ViewOverlay能实现什么? 在Android中,ViewOverlay是一个特殊的视图层,可以在一个视图的上方添加和管理附加的视图层,而不会干扰原始视图的布局和交互。它提供了一种方便的方式来在运行时添加、移除或修改视图层,而…

chatgpt赋能python:Python嵌入SEO

Python嵌入SEO Python是一种高级编程语言,由于其简单易学和广泛应用的特点,已经成为了许多工程师的首选语言。随着互联网发展的趋势,现代的SEO已经不再是简单的关键词填充和链接堆积,而是需要更复杂的优化方式,这时候…

Sentinel在k8s部署

一、Sentinel Dashboard在k8s部署 官方jar包下载 由于sentinel dashboard官方没有提供镜像下载,需从sentinel官方下载sentinel dashboard的jar包,这里选择1.8.0进行下载。注意与springboot版本的兼容性。 打镜像并上传自己镜像仓库 在自己项目中添加…

mac(M1)芯片安装Stable-diffusion-webui

背景:听同事说这个都是在GPU上跑的,cpu跑这个比较费劲。我本地mac跑这个,也是为了调试一些相关的插件和api。为了开发方便点。当然确实提吃内存的。 目录 一、Stable-diffusion-webui 项目地址和官方安装方式 二、自己的安装方式 2.1、更…

自定义注解,基于redis实现分布式锁

一、如何实现自定义注解 1.1、注解的基础知识 实现自定义注解其实很简单,格式基本都差不多。也就参数可能变一变。 Retention:取值决定了注解在什么时候生效,一般都是取运行时,也就是RetentionPolicy.RUNTIME。 Target&#xff…

Unreal5 第三人称射击游戏 射击功能实现2

上一篇我们实现了角色射击相关的动画以及切换逻辑,并将武器相关的模型添加到角色身上。 这一篇开始制作武器相关的功能。 制作子弹父类 首先创建一个actor类,命名为BP_Bullet,这个作为子弹的通用父类,在里面创建子弹通用的功能实…

测试相关知识

测试基础知识 1. 测试基本理念2. 软件测试的分类2.1 程序是否运行2.2 测试时间段划分2.3 是否涉及实现2.4 其它测试2.5 当前流程的测试概念 3. 测试设计方法4. 参考书籍 1. 测试基本理念 软件测试的定义:软件测试是使用人工或自动的手段来运行或测定某个软件系统的…

chatgpt赋能python:Python年龄换算:如何根据Python版本算出“年龄”?

Python年龄换算:如何根据Python版本算出“年龄”? Python是一种高级编程语言,享有强大、易读、易用和可扩展性等各种优点。它是许多开发者使用的首选语言,尤其在数据科学和机器学习领域中备受推崇。 但是,Python几乎…

网络安全工具合集

首先,恭喜你发现了宝藏。 本文章集成了全网优秀的开源攻防武器项目,包含: 信息收集工具(自动化利用工具、资产发现工具、目录扫描工具、子域名收集工具、指纹识别工具、端口扫描工具、各种插件....etc...) 漏洞利用…

轮廓检测及功能

目录 一、实验介绍二、实验步骤三、实验任务任务一:轮廓特征练习一: 找到每个轮廓的方向任务二:边界矩形练习二: 围绕轮廓裁剪图像 一、实验介绍 1. 实验内容 本实验将学习轮廓检测及功能。 2. 实验要点 生成二进制图像来查找轮廓找到并画出轮廓轮廓…

面试题--12

1.MySQL 的内连接、左连接、右连接有什么区别? 2.MySQL 索引是怎么实现的? 3.索引的优点和缺点—查询频率高的字段 4.B树的特点和作用----必须先看 下面的网址 5.什么是聚集索引和非聚集索引 6.索引的分类 7.什么是最左前缀法则以及如何设计最左法则 8.怎…

图论基础和表示

一、概念及其介绍 图论(Graph Theory)是离散数学的一个分支,是一门研究图(Graph)的学问。 图是用来对对象之间的成对关系建模的数学结构,由"节点"或"顶点"(Vertex)以及连接这些顶点的"边"(Edge&a…