JSP 的 response 和 session 内置对象

文章目录

  • 前言
  • 一、response 内置对象
    • 1.重定向网页
    • 2.处理 HTTP 文件头
    • 3.设置输出缓存
  • 二、session 内置对象
    • 1.创建及获取客户会话
    • 2.会话中移动指定的绑定对象
    • 3.销毁 session 内置对象
    • 4.会话超时的管理
    • 5. session 对象的应用
  • 总结

前言

        JSP 的 response 和 session 内置对像,分别有着响应客户端请求,输出信息和产生会话沟通直到浏览器关闭。该文将简单介绍两个内置对象的使用。


一、response 内置对象

        response对象是在网络请求中用来存储服务器返回的结果的对象。它包含了服务器返回的状态码、响应头、响应体等信息。

        response对象的作用是让开发者可以获取和处理服务器返回的数据。通过response对象,开发者可以获取到服务器返回的状态码,判断请求是否成功;可以获取到服务器返回的响应头信息,如Content-Type、Content-Length等;还可以获取到服务器返回的响应数据,如HTML、JSON、图片等。

        除此之外,response对象还提供了一些方法,如 getHeader()  获取相应头信息、getContent() 获取相应体内容。

        response对象可以方便地获取和处理服务器返回的数据。

1.重定向网页

        response 对象的 sendRedirect() 方法可以将网页重定向到另一个网页。语法格式如下:

response.sendRedirect(String path);

参数说明:

        path:用于指定目标路径,可以是相对路径,也可以是不同主机的其他 URL 地址。

         这里值得提一下,重定向和转发的区别:

        (1)重定向是在客户端(浏览器)进行的,涉及两次请求和响应;转发是在服务器内部进行的,不需要浏览器再次发送请求。

        (2)重定向会改变浏览器的URL,而转发不会改变URL。

        (3)重定向对浏览器来说是完全透明的,转发对浏览器来说是不可见的。

        (4)重定向可以跳转到外部URL,转发只能在服务器内部进行页面跳转。

         实操展示:

response.sendRedirect("test.jsp"); //重定向到test.jsp页面
response.sendRedirect("www.baidu.com");    //重定向到百度网页

        在 JSP 页面中使用过该 sendRedirect() 方法的后面,不建议再写 JSP 脚本代码(包括 return 语句),重定向后就跳转页面了,后续多余的代码反而可能致使运行错误。 

        实例:创建两个 JSP 文件,第一个 index.jsp文件使用 response 的 sendRedirect()方法,重定向到 test.jsp文件。

        index.jsp 代码:

<%@ page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8" language="java" %>
<html>
<head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"><title>Index Page</title>
</head>
<body><%response.sendRedirect("test.jsp");%>
</body>
</html>

        test.jsp 代码:

<%@ page contentType="text/html;charset=UTF-8" pageEncoding="UTF-8" language="java" %>
<html>
<head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"><title>Test Page</title>
</head>
<body><form name="form1" method="post" action="">用户名:<input name="name" type="text" id="name" style="width:120px"><br>密&nbsp;&nbsp;码:<input name="pwd" type="password" id="pwd" style="width:120px"><br><input type="submit" name="Submit" value="提交">
</body>
</html>

        运行结果:

61f2c69078c3437c801e310ffb47c684.gif

        如上图所示,index.jsp文件直接重定向到了test.jsp文件,用户在这个过程中是可以看见网址的变换。 

2.处理 HTTP 文件头

        response 对象设置 HTTP 响应报头,最常用的有,禁用缓存、设置页面自动刷新和定时跳转页面。

        (1)禁用缓存

        一般情况下,浏览器会对显示的网页内容进行缓存。当用户再次访问页面时浏览器会判断界面是否有变化,没有就可以迅速加载出界面,提高网页显示速度。但是对于安全性要求较高的网站来说,要禁用缓存。

需要调用response对象的方法
方法功能描述
setHeader()用于设置HTTP响应的头部信息,如响应的内容类型、编码方式、缓存控制。
setDateHeader()用于设置响应报文的Date头字段。该方法接受一个时间戳参数,将其转换为GMT格式的日期字符串,并将其设置为响应报文的Date头字段的值。

        实操代码:

<%response.setHeader("Cache-Control","no-store");response.setDateHeader("Expires",0);
%>

        response.setHeader()这一行设置了 Cache-Control 响应头为 no-store,这意味着浏览器和其他缓存机制不应该存储任何关于客户端请求和服务器响应的信息。换句话说,每次请求时,浏览器都会向服务器请求最新的数据,而不是使用缓存的数据。

        response.setDateHeader("Expires",0)这一行设置了Expires的响应头为0,表示该响应已经过期。Expires 头通常用于指定一个日期和时间,表示响应的有效期。设置为0意味着响应在任何时候都被视为过期,浏览器应当立即重新请求数据。                                   

        (2)设置页面自动刷新

         通过设置 HTTP 头可以实现页面的自动刷新。

        实操代码:

<%
response.setHeader("refresh","10");
%>

参数说明:

        refresh 表示头字段用于指定浏览器自动刷新页面的时间间隔。

        第二个参数为"10",表示刷新页面的时间间隔为10秒。即每隔10秒浏览器会自动刷新页面一次。

3.设置输出缓存

        服务器要输出到客户端的内容不会直接写到客户端,而是先写到一个输出缓冲区,作为一个传送带慢慢地装运到客户端上。满足三个情况之一就会写到客户端。

        1. JSP 页面的输出信息已经全部写入缓冲区。

        2. 缓冲区已满。        

        3.在 JSP 页面中,调用了 reponse 对象的 flushBuffer() 方法或 out 对象的 flush()方法。

对缓冲区进行配置的方法
方法功能描述
flushBuffer()强制将缓冲区的内容输出到客户端
getBufferSize()获取响应所使用的缓冲区的实际大小,如果没有使用缓冲区,则返回 0 
setBufferSize()设置缓冲区的大小
reset()清除缓冲区的内容,同时清除状态码和报头
isCommitted()检测服务器端是否已经把数据写入客户端

        实操展示:设置缓冲区的大小为64KB

<%response.setBufferSize(64);%>

        如果将缓冲区的大小设置为 0 KB,则表示不缓冲。        

二、session 内置对象

        session 会话对象用于保存用户会话,弥补了 HTTP 协议不保存相关信息的缺点。但是客户端长时间不向服务器发出请求,该 session 会话对象就会自动消失,该时间取决于服务器,例如 tomcat 服务器的默认事件为 30 分钟。这个时间可以通过代码更改。

1.创建及获取客户对话

        通过 session 对象可以存储或读取客户相关的信息。可以通过 session 对象的 setAttribute()方法和 getAttribute() 方法实现。

        setAttribute() 方法用于将信息保存到 session 范围内,语法格式如下:

session.setAttribute(String name,Object obj);

参数说明:

        name:用于指定作用域在 session 范围内的变量名

        obj:保存在 session 范围内的信息。

        实操展示:

session.getAttribute("name",小王);

        将用户名“小王” ,保存到了 session 范围内的 name 变量。

         getAttribute() 方法用于获取保存在 session 范围内的信息,语法格式如下:

getAttribute(String name);

参数说明:

        name:指定保存在 session 范围内的关键字,获取对应保存的信息。

        实操展示:获取到上方保存在session范围内的变量名所包含的值。

session.getAttribute(name)

        getAttribute() 方法的返回值是 Object 类型,如果将获取到的信息赋值给 String 类型的变量,则需要进行强制类型转换或是调用其 toString() 方法。示例代码如下:

        

String user=(String)session.getAttribute("username");    //法1:强制类型转换
String use1=session.getAttribute("username").toString();    //法2:使用toString()方法

2.会话中移动指定的绑定对象

        对于存储在session会话中的对象以及保存的内容,如果想将其从session对话中移除,可以使用 session 对象的 removeAttribute()方法,语法格式如下:

removeAttribute(String name)

 参数说明:

        name:用于指定作用域在 session 范围内的变量名。保证移除的变量名是在session的范围之内,否则会抛出异常。

        实操展示: 

<%
session.removeAttribute("username");
%>

         将保存在 session 会话中的 username 对象移除(包含保存的信息)。

3.销毁 session 内置对象

        session 对象长时间不被调用,会自动消失。但为了开发者可以随时手动销毁session对象,可以通过 session 对象中的 invalidate()方法进行销毁,语法格式如下:

session.invalidate();

        session 对象被销毁后,将不可以再使用该 session 对象,否则会报出 Session already invalidated 异常。 

4.会话超时的管理

        使用 session 对象时应注意 session 的生命周期,一般是30分钟。但是开发网站要注意 session 会话过期的各种情况,这时就需要调用session的几个方法了。

session 对象设置会话生命周期的方法
方法功能描述
getLastAccessedTime()返回客户端最后一次与会话相关联的请求时间
getMaxInactiveInterval()以秒为单位返回一个会话内两个请求最大时间间隔
setMaxInactiveInterval()以秒为单位设置 session 的有效时间

         实操展示:

session.setMaxInactiveInterval(1000);

        设置session会话有效期为 1000秒,超出则会失效。         


总结

        以上就是 JSP 内置对象的 response 和 session 对象的简单介绍,补充或指正的地方欢迎在评论区中留言

 

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

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

相关文章

HCIP——以太网交换安全(四)DHCP Snooping

目录 一、DHCP Snooping的知识点 二、DHCP Snooping实验拓扑 三、总结 一、DHCP Snooping的知识点 1.1、DHCP snooping 概述&#xff1a; ①DHCP Snooping使能DHCP的一种安全特性&#xff0c;用于保证DHCP客户端从合法的DHCP服务端获取IP地址。DHCP服务器记录DHCP客户端IP…

uniapp 省、市、区、乡镇 数据层级选择插件 Ba-DataPicker

Ba-DataPicker 是一款uniapp数据层级选择弹窗插件。支持省市区乡四级&#xff1b;支持自定义数据。 支持省、市、区、乡镇四级支持自定义数据支持字母检索 截图展示 支持定制、本地包、源码等&#xff0c;有建议和需要&#xff0c;请点击文章结尾“Uniapp插件开发”联系我&am…

Flink有状态计算

前言 状态是什么&#xff1f;状态就是数据&#xff0c;准确点说&#xff0c;状态是指 Flink 作业计算时依赖的历史数据或中间数据。如果一个 Flink 作业计算依赖状态&#xff0c;那它就是有状态计算的作业&#xff0c;反之就是无状态计算的作业。 举个例子&#xff0c;服务端…

AnaTraf | 提升网络稳定性与效率:深入解析网络流量采集分析与故障定位

目录 网络流量采集分析的核心价值 什么是网络流量采集分析&#xff1f; 网络流量分析的应用场景 利用流量分析优化企业网络 网络故障定位的关键步骤 故障定位的基本流程 常用故障定位方法 实用技巧 网络流量采集分析与故障定位的协同作用 整合流量分析提升故障响应速…

人脸识别-特征算法

文章目录 一、LBPH算法1.基本原理2.实现步骤3.代码实现 二、Eigenfaces算法1.特点2.代码实习 三、FisherFaces算法1.算法原理2.算法特点3.代码实现 四、总结 人脸识别特征识别器是数字信息发展中的一种生物特征识别技术&#xff0c;其核心在于通过特定的算法和技术手段&#xf…

开源 | Science子刊 | GCS轨迹优化方法

论文: https://arxiv.org/pdf/2205.04422 Github: https://github.com/RobotLocomotion/gcs-science-robotics 本文介绍了一种基于凸优化的高效运动规划方法&#xff0c;该方法能够在高维空间中可靠地规划出障碍物周围的轨迹。研究者们通过结合贝塞尔曲线和凸集图&#xff08…

大厂面试一上来就手撕 Transformer,心凉半截

在这两年&#xff0c;尤其是大模型问世之后&#xff0c;有关 Transformer 的面试题不仅数量众多&#xff0c;而且颇具新意。 今日&#xff0c;我将分享 18 道 Transformer 高频面试题&#xff08;如需获取更多专业面试题&#xff0c;扫描文末二维码即可&#xff09;&#xff0…

【超详细】TCP协议

TCP(Transmission Control Protocol 传输控制协议) 传输层协议有连接可靠传输面向字节流 为什么TCP是传输控制协议呢&#xff1f; 我们以前所看到的write接口&#xff0c;都是把用户级缓冲区的数据拷贝到发送缓冲区中&#xff0c;然后数据就由TCP自主决定了&#xff0c;所以…

Postman 如何测试入参是文件类型(File)参数接口

Postman 如何测试 File 类型参数 前提背景测试步骤1、打开 Postman 选择 POST 方法输入调用地址2、参数选择 Body 下的 form-data3、KEY 选择 File 选项&#xff0c;并填写 file 前提背景 springboot 项目&#xff0c;接口的参数是 File 类型&#xff0c;需要通过 Postman 测试…

js中map,filter,find,foreach的用法介绍

js中map&#xff0c;filter&#xff0c;find&#xff0c;foreach的用法介绍 在 JavaScript 中&#xff0c;数组提供了一些常用的迭代方法&#xff0c;如 map、filter、find 和 forEach&#xff0c;这些方法允许你对数组中的每个元素进行操作&#xff0c;下面是它们的用法和区别…

2024台州赛CTFwp

备注&#xff1a; 解题过程中&#xff0c;关键步骤不可省略&#xff0c;不可含糊其辞、一笔带过。解题过程中如是自己编写的脚本&#xff0c;不可省略&#xff0c;不可截图&#xff08;代码字体可以调小&#xff1b;而如果代码太长&#xff0c;则贴关键代码函数&#xff09;。…

etcd集群修复异常节点

描述&#xff1a;仅一个 etcd 节点状态异常且无法自愈。 方案&#xff1a;删除异常节点&#xff0c;然后重新加入。 官方文档&#xff1a; &#xfeff;How to Add and Remove Members | etcd&#xfeff; &#xfeff;Runtime reconfiguration | etcd

微信小程序添加删除线和下划线

微信小程序如何添加删除线和下划线&#xff1f; 小程序官方提供的html标签&#xff0c;跟传统的HTML有所差异&#xff0c;下面关于下划线和删除线的操作。 在对应的标签中添加css样式即可&#xff1a; text-decoration:underline; //下划线显示效果如下&#xff1a; text-de…

Gitxray:一款基于GitHub REST API的网络安全工具

关于Gitxray Gitxray是一款基于GitHub REST API的网络安全工具&#xff0c;支持利用公共 GitHub REST API 进行OSINT、信息安全取证和安全检测等任务。 Gitxray&#xff08;Git X-Ray 的缩写&#xff09;是一款多功能安全工具&#xff0c;专为 GitHub 存储库而设计。它可以用于…

【大数据技术基础 | 实验三】HDFS实验:部署HDFS

文章目录 一、实验目的二、实验要求三、实验原理&#xff08;一&#xff09;分布式文件系统&#xff08;二&#xff09;HDFS&#xff08;三&#xff09;HDFS基本命令&#xff08;四&#xff09;HDFS适用场景 四、实验环境五、实验内容和步骤&#xff08;一&#xff09;在master…

优阅达携手 Theobald 亮相新加坡科技周,助力企业 SAP 数据集成与应用

针对不同用户需求量身定制解决方案&#xff0c;帮助企业轻松应对从数据提取到分析、从开发到流程管理的 SAP 数据挑战。 上周&#xff0c;2024 新加坡科技周在滨海湾金沙会议展览中心圆满落幕。在为期两天的活动中&#xff0c;七大专题展览同时进行&#xff0c;超过 2,000 家…

【解决】webstrom uniapp rpx格式化空格 报错飘红

解决办法 1、安装 wechat mini program support 插件 2. 设置 wechat mini program 里小程序支持选为启用 3. 重新格式化显示正常&#xff0c;也不飘红了 注意要style开启scss支持lang"scss"&#xff0c;否则也会飘红报错 <style lang"scss"><…

『Mysql集群』Mysql高可用集群之读写分离(二)

前言 主从复制: 解决了Mysql的单点故障问题以及提高MySQL的整体服务性能. 读写分离: 解决的是数据库的读性能问题,分担主库的压力&#xff0c;提高系统的可用性和稳定性。 分库分表: 数据库分表可以解决单表海量数据的查询性能问题&#xff0c;分库可以解决单台数据库的并发…

mysql数据迁移到elasticsearch以及elasticsearch的使用

目录 根据数据不断调整架构安装elasticsearch 版本8.12.2kibana安装ik分词分词的拓展以及停用 springboot实战pom.xmlapplication.yml相关配置框架集成-SpringData-集成测试-文档操作 相关代码调整 随着物联网平台的不断发展&#xff0c;平台要求接入的模块会越来越多&#xff…

Qt 实现动态时钟

1.实现效果 2.widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget>QT_BEGIN_NAMESPACE namespace