赶紧收藏!2024 年最常见 100道 Java 基础面试题(三十三)

上一篇地址:赶紧收藏!2024 年最常见 100道 Java 基础面试题(三十二)-CSDN博客

六十五、说一下JSP的4种作用域?

在JSP(JavaServer Pages)中,作用域(Scope)是指页面中的变量可以在哪些地方被访问和修改。JSP定义了四种不同的作用域,它们分别是:

  1. 页面作用域(Page Scope)

    • 页面作用域的变量只在创建它们的JSP页面内有效。它们从页面初始化时创建,并在页面执行完毕后销毁。
    • 变量可以是脚本片段(scriptlet)中定义的变量,或者是JSP标签中定义的变量。
  2. 请求作用域(Request Scope)

    • 请求作用域的变量在整个HTTP请求过程中都是可见的,它们从请求开始时创建,并在请求结束时销毁。
    • 这些变量可以跨越多个页面,只要它们都属于同一个HTTP请求。可以使用request对象来存储和获取这些变量。
  3. 会话作用域(Session Scope)

    • 会话作用域的变量与特定的用户会话(Session)关联,它们在用户与服务器的整个会话期间都是可见的。
    • 从用户第一次访问某个页面开始创建,并在用户会话结束时销毁。可以使用session对象来存储和获取会话级别的变量。
  4. 应用作用域(Application Scope)

    • 应用作用域的变量与整个Web应用程序关联,它们在应用程序的生命周期内都是可见的。
    • 这些变量对所有用户和所有会话都是可见的,通常用于存储全局信息,如配置参数、计数器等。可以使用application对象来访问这些变量。

示例代码:

<%-- 页面作用域 --%>
<%
    String pageScopedVar = "This is page scoped";
%>

<%-- 请求作用域 --%>
<%
    request.setAttribute("requestScopedVar", "This is request scoped");
%>

<%-- 会话作用域 --%>
<%
    session.setAttribute("sessionScopedVar", "This is session scoped");
%>

<%-- 应用作用域 --%>
<%
    application.setAttribute("appScopedVar", "This is application scoped");
%>

在JSP页面中,可以通过内置对象来获取和操作这些作用域的变量:

<%-- 获取请求作用域的变量 --%>
<%
    String requestScopedVar = (String) request.getAttribute("requestScopedVar");
%>

<%-- 获取会话作用域的变量 --%>
<%
    String sessionScopedVar = (String) session.getAttribute("sessionScopedVar");
%>

<%-- 获取应用作用域的变量 --%>
<%
    String appScopedVar = (String) application.getAttribute("appScopedVar");
%>

注意事项:

  • 作用域的使用应根据变量的生命周期和可见性需求来确定。
  • 过度使用会话作用域或应用作用域可能导致内存泄漏,因为这些作用域的变量生命周期较长。
  • 在设计JSP页面时,应该尽量使用最小必要作用域的变量,以提高应用程序的性能和可维护性。

总结

  • JSP的四种作用域允许变量在不同的上下文中被访问和修改。
  • 页面作用域适用于单个页面,请求作用域适用于单个HTTP请求,会话作用域适用于用户会话,应用作用域适用于整个Web应用程序。
  • 每种作用域都有其特定的使用场景和生命周期,合理使用作用域可以提高Web应用程序的效率和安全性。

六十六、sessioncookie有什么区别?

sessioncookie都是客户端与服务器之间维持状态的机制,但它们在实现方式、存储位置、安全性和用途等方面存在显著差异:

1. 存储位置

  • Cookie

    • 存储在客户端浏览器中。服务器发送一个cookie给客户端浏览器,浏览器将其存储在cookie存储区。
  • Session

    • 存储在服务器端。服务器为每个会话创建一个唯一的session对象,并将其存储在服务器的内存或持久化存储中。

2. 存储容量

  • Cookie

    • 存储容量较小,一般不超过4KB。浏览器对单个cookie的大小和总的cookie数量都有限制。
  • Session

    • 存储容量较大,受限于服务器的存储能力。可以存储更多、更大的数据。

3. 安全性

  • Cookie

    • 由于存储在客户端,更容易受到恶意攻击,如cookie盗窃。敏感信息不宜存储在cookie中。
  • Session

    • 存储在服务器端,相对更安全。但session ID(用于识别session的标识)通常通过cookie存储,因此仍然需要保护好session ID。

4. 生命周期

  • Cookie

    • 生命周期可以设置为浏览器会话期间,也可以设置为特定的过期时间。一旦过期,cookie将被浏览器删除。
  • Session

    • 生命周期通常由服务器设置的超时时间决定。当用户一段时间内没有任何操作时,session可能会被服务器自动销毁。

5. 跨域问题

  • Cookie

    • 受同源策略限制,浏览器只能发送属于当前域的cookie。
  • Session

    • 不受同源策略影响,因为session存储在服务器端,与客户端的域无关。

6. 使用方式

  • Cookie

    • 主要用于存储一些不太敏感的数据,如用户偏好设置、会话标识(session ID)等。
  • Session

    • 用于存储用户的状态信息,如用户登录信息、购物车内容等。

7. 服务器压力

  • Cookie

    • 由于存储在客户端,不会增加服务器的存储压力。
  • Session

    • 存储在服务器端,如果大量用户使用session,会增加服务器的存储压力。

示例代码:

使用Cookie

// 设置cookie
Cookie cookie = new Cookie("username", "Kimi");
cookie.setMaxAge(60 * 60); // 设置cookie存活时间
cookie.setPath("/"); // 设置cookie的路径
response.addCookie(cookie);

// 读取cookie
Cookie[] cookies = request.getCookies();
if (cookies != null) {
    for (Cookie cookie : cookies) {
        if ("username".equals(cookie.getName())) {
            String username = cookie.getValue();
            // 使用username
        }
    }
}

使用Session

// 设置session
HttpSession session = request.getSession();
session.setAttribute("username", "Kimi");

// 读取session
String username = (String) session.getAttribute("username");

总结

  • Cookie和Session都是为了解决HTTP协议无状态的问题而设计的。
  • Cookie更适合存储非敏感、少量的数据,而Session更适合存储用户状态信息。
  • 使用Session时,需要注意保护好session ID,避免session被盗用。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

无线通信基础

这里写目录标题 通信概述什么是无线通信无线通信电磁波 通信概述 什么是无线通信 无线通信 : 是指利用电磁波信号可以在自由空间中传播的特性进行信息交换的一种通信方式 无线通信的关键技术包括调制技术、解调技术、信道编码技术、信号处理技术、天线技术等。这些技术的不断…

【mobx-入门与思考】

介绍 mobx 是 nodejs生态中的框架&#xff0c; 主要用于做状态管理&#xff0c;可以监控变量状态的变化。 nodejs中除了mobx&#xff0c;还有个redux&#xff0c;也是做状态管理的&#xff0c;都是比较成熟的框架&#xff0c;二者的选择可以参考 【nodejs状态管理: Redux VS M…

太原理工大学Python数据分析原理与应用(课外考题:8~11章)

这部分大概只考10分&#xff0c;且大部分出在选择题&#xff0c;填空最多一两个 (仅供参考) 第十章 (理解概念为主&#xff0c;无需看推导过程) 第十一章

1-1ARM开发环境搭建(GD32)

1:安装MDK最好是5.27以及以上版本&#xff0c;避免后续学习中出现相关错误 2&#xff1a;安装芯片支持包 双击安装即可&#xff0c;也可以是默认路径&#xff0c;也可以自己更改路径 3&#xff1a;安装jlink下载器驱动&#xff08;下载调试器&#xff09; 具体安装步骤如下所示…

Java 线程池 ( Thread Pool )的简单介绍

想象一下&#xff0c;你正指挥着一支超级英雄团队&#xff0c;面对蜂拥而至的敌人&#xff08;任务&#xff09;&#xff0c;不是每次都召唤新英雄&#xff08;创建线程&#xff09;&#xff0c;而是精心调配现有成员&#xff0c;高效应对。这就是Java线程池的魔力&#xff0c;…

重装win11系统后找不到WiFi

由于电脑崩溃重装了系统&#xff0c;win11,装完之后WiFi图标不见了且网络适配器根本没有无线网络选项。 右键电脑》管理》网络适配器。 在刚装好系统时候并没有前两项&#xff0c;查了很多资料&#xff0c;比如 关机14s 重启&#xff0c;还有通过服务配置 WLAN AutoConfig 都…

从0到1提审苹果商店(appstore)上线一款新APP

本篇主要复盘和介绍一款APP如何从0到1上线到苹果商店,将我自己项目遇到的坑跟大家分享,希望能为同样做开发或者运营的你提供经验,少走弯路。 如果你是24年1月1日之后开始首次提审APP,还需要先将自己的APP在工信部备案,苹果后台增加了工信部备案号的填写,备案方法和经验如…

如何去官网下载windows10操作系统iso镜像

文章目录 一、先从微软中国官网https://www.microsoft.com/zh-cn/进去二、然后按图示一步步点进去三、点击下载工具这个工具会帮你生成windows操作系统iso文件四、下载好后一步步按图示要求成功操作一、先从微软中国官网https://www.microsoft.com/zh-cn/进去 二、然后按图示一…

JAVA面向对象高级部分

内部类 内部类的四种形式 内部类概述、成员内部类 代码示例 创建对象的格式 通过对象名访问内部类方法 若内外部类的成员变量名冲突&#xff0c;如何在内部类分别访问外部成员变量。 总结 静态内部类 代码示例 访问静态内部类的方法 不能在静态内部类中访问实例成员变量 …

视频素材库在哪里找免费手机版?8个可以用手机浏览的素材网

在视觉内容占据主导地位的今天&#xff0c;合适的视频素材可以大大提升项目的吸引力和效果。以下列出的视频素材网站为广告制作者、社交媒体策略师及电影制作人提供了从传统到现代风格的各种视频素材选择&#xff0c;满足不同的创作需求。 1. 蛙学府&#xff08;中国&#xff…

展开说说:Android线程池解析

何谓线程池&#xff1f;本人理解是存放和管理线程的一个容器。 线程池存在的意义是什么&#xff1f; 第一&#xff1a;前面博客提到过创建和销毁线程的操作本身是有性能开销的&#xff0c;如果把使用的线程对象存起来下次用的时候直接取出来用就省去了一次创建和销毁的成本&a…

Scroll生态项目Penpad,再获Presto Labs的投资

Penpad是Scroll生态的LaunchPad平台&#xff0c;其整计划像收益聚合器以及RWA等功能于一体的综合性Web3平台拓展&#xff0c;该平台在近期频获资本市场关注&#xff0c;并获得了多个知名投资者/投资机构的支持。 截止到本文发布前&#xff0c;Penpad已经获得了包括Scroll联合创…

基于vue.js+thymeleaf模板引擎+ajax的注册登陆简洁模板(含从零到一详细介绍)

文章目录 前言1、数据库准备2、工具类与相关基类使用2.1、工具类2.2、相关基类 3、web包目录说明4、注册功能设计&#xff08;本文核心部分&#xff09;4.1、注册页面设计4.2、注册逻辑设计 5、登陆功能设计5.1、登陆页面设计5.2、登陆逻辑设计 6、运行效果图 前言 大多数的网…

(MATLAB)安装指南

参考链接&#xff1a;MATLAB2019a安装教程&#xff08;避坑版&#xff09;

智能健康管理系统的一次新体验

智能健康管理系统是一个集成了多方面数据资源&#xff0c;并配合人工智能算法的健康管理系统。该系统的应用涉及多个领域&#xff0c;包括医学、科学、生态和医疗保健等。其服务对象包括健康人群、亚健康人群和疾病人群&#xff0c;旨在通过病因预防、临床前期预防和临床预防三…

Autosar PNC网络管理配置-UserData的使用

文章目录 前言ComComSignalComIPdu CanNmSignal Mapping总结 前言 之前配置的网络管理报文中的data都由ComM管理&#xff0c;后面客户新增了需求&#xff0c;最后两个byte需要发送Wakeup Reason&#xff0c;本文记录一下相关配置的修改 Com ComSignal 之前配置的PN_TX&…

后仿真中的关于延时问题(物理特性角度)

大家都知道&#xff0c;后仿真讲究仿真时序。那么&#xff0c;在网表阶段&#xff0c;接触到后仿延时问题。今天总结一下。 一 延时概念和分类 1.1 分布式延迟&#xff08;Distributed Delays&#xff09; 一般用来指定模块内部信号通过逻辑单元或者线网耗费的时间。 1.2 模…

Linux进程通信-信号

信号概念 信号是 Linux 进程间通信的最古老的方式之一&#xff0c;是事件发生时对进程的通知机制&#xff0c;有时也称之为软件中断&#xff0c;它是在软件层次上对中断机制的一种模拟&#xff0c;是一种异步通信的方式。信号 可以导致一个正在运行的进程被另一个正在运行的异…

STM32——基础篇

技术笔记&#xff01; 一、初识STM32 1.1 ARM内核系列 A 系列&#xff1a;Application缩写。高性能应用&#xff0c;比如&#xff1a;手机、电脑、电视等。 R 系列&#xff1a;Real-time缩写。实时性强&#xff0c;汽车电子、军工、无线基带等。 M 系列&#xff1a;Microcont…

资料总结分享:SAM,bam,bed文件格式

目录 sam文件 bam文件 bed 文件 sam文件 SAM&#xff08;Sequence Alignment/Map&#xff09;文件是存储测序数据比对结果的一种常见格式。SAM文件通常用于存储DNA或RNA测序数据在参考基因组上的比对结果。 SAM文件由多行文本组成&#xff0c;每一行代表一个比对结果。SAM文…
最新文章