JSP中http与内置对象学习笔记
本博文讲述jsp客户端与服务器端的http、jsp内置对象与控制流和数据流实现
1.HTTP请求响应机制
HTTP协议是TCP/IP协议中的一个应用层协议,用于定义客户端与服务器之间交换数据的过程
1.1 HTTP请求
HTTP请求由请求行、消息报头、空行和请求数据4部分组成。
- 请求行由请求方法、URI和HTTP协议版本3个字段组成,之间用空格分隔。常用的请求方法有GET和POST
- 消息报头由报头域/值对组成,每行一对,报头域和值用英文冒号":"分隔。用于向服务器传递请求的附加信息及客户端本身的信息。典型的请求消息报头有Host、User-Agent、Accept等
- 空行表示消息报头的结束
- 请求数据在post方法中使用,get方法不需要请求数据。
1.2 HTTP响应
HTTP响应由状态行、消息报头、空行和响应数据4部分组成
- 状态行由HTTP协议版本、响应状态代码和响应状态文本描述3个字段组成,之间用空格分隔。常见的响应状态代码及文本描述1有200 ok(表示客户端请求成功)、404 NOT Found(表示请求资源不存在),500 Internal Server Error(表示服务器发生不可预期的错误)
- 消息报头由报头域/值对1组成,每行一对,报头域和值用英文冒号":"分隔,用于服务器向客户端传递不能在状态行放置的附加响应信息,以及关于服务器的信息和对请求资源进行下一步访问的消息。典型的响应消息报头有Date、ContentType、Content-Length等
- 空行表示响应消息报头的结束
- 响应数据是服务器在本次响应中返回给浏览器的数据。
1.3 HTTP会话机制
HTTP协议是一种无状态协议,不保存客户端每次提交的信息。一个HTTP会话代表服务器与浏览器的一次会话过程,这个过程包含连续或时断时续的多次请求响应。
2. JSP内置对象
jsp有9个内置对象
| 内置对象名称 | 类型 | 作用域 | 用途 |
|---|---|---|---|
| request | javax.servlet.ServletRequest | request | 封装了客户端的请求信息,例如包含了通过GET/POST方式传递的参数等信息 |
| response | javax.servlet.ServletResponse | page | 封装了服务器端响应信息,例如包含了服务端发送到客户端的响应内容等信息 |
| pageContext | javax.servlet.jsp.PageContext | page | 封装了当前页面的属性信息 |
| session | javax.servlet.http.HttpSession | session | 封装了当前请求的会话信息 |
| application | javax.servlet.ServletContext | application | 封装了整个应用共享的信息 |
| out | javax.servlet.jsp.JspWriter | page | 用于向客户端输出信息 |
| config | javax.serevlet.ServletConfig | page | 封装了JSP页面对应Servlet的配置信息 |
| page | java.lang.Object | page | JSP页面类的实例,即JSP页面本身被编译后生成一个名为page的实例对象 |
| exception | java.lang.Throwable | page | 封装了发生的异常信息 |
2.1 request对象
当用户通过浏览器向Web服务器发出请求时,Web服务器接收到用户的请求信息,在进行必要的逻辑处理后,对该请求作出响应。

| 方法声明 | 功能简介 |
|---|---|
| getParameter(String name) | 获取客户端提交的名称为name的请求参数值,不存在则返回null |
| getParameterValues(String name) | 获取客户端提交的名称为name的所有请求参数值,不存在则返回null |
| setCharacterEncoding(String emv) | 设置请求数据的字符编码类型 |
| getCharacterEncoding() | 获取请求数据的字符编码类型 |
| setAttribute(name,Object o) | 设置请求中name的属性值为0 |
| getContentLength() | 获取请求数据的长度,单位是字节,长度未知则返回-1 |
| getContentType() | 获取请求数据MIME类型;类型未知则返回null |
| getProtocol() | 获取客户端向服务器传送数据的通信协议名称和版本 |
2.2 response对象
response对象代表服务器对客户端做出的响应,将JSP页面的运行结果返回给客户端,与request对象结合起来完成动态页面的交互功能。
| 方法声明 | 功能简介 |
|---|---|
| setContentType(String type) | 设置响应数据的MIME类型 |
| getContentType() | 获取响应数据的MIME类型 |
| setHeader(String name,String value) | 设置指定的响应报文头 |
| sendRedirect(String location) | 重定向到地址为locatioin的Web资源 |
| addCookie(Cookie cookie) | 向响应中添加cookie,用于在客户端保存信息 |
| getWriter() | 获取响应的printWriter对象,用于输出响应数据 |
| flushBuffer() | 立即将缓冲区的内容发送到客户端 |
| 对比项 | 请求转发 | 页面重定向 |
|---|---|---|
| URL地址的限制 | 只能在同一个应用中转发 | 可以1跳转到任意的URL |
| 地址栏URL是否有变化 | 不变 | 有变化 |
| 客户端请求的次数 | 一次 | 两次 |
| 行为的主体 | 服务端的行为 | 客户端的行为 |
| 请求信息是否可以共用 | 共用相同的request,所以请求的信息不会丢失 | 两次请求使用不同的request,所以请求的信息会丢失 |
2.3 Cookie机制
客户端应答速度较快,而cookie是保存信息文本。cookie机制
| 方法声明 | 功能简介 |
|---|---|
| getName() | 获取cookie的名称 |
| getValue() | 获取Cookie的值 |
| setValue(String value) | 创建cookie后,为褀其设置新的值、 |
| getMaxage() | 获取Cookie的最大生存周期(以秒为单位),默认情况下,-1表示Cookie将持续下去,直到浏览器关闭 |
| setMaxage(int expiry) | 设置Cookie过期时间(以秒为单位) |
| getPath() | 返回Cookie适用的路径 |
| setPath(String uri) | 设置Cookie适用的路径,如果不指定路径,与当前页面相同目录(包括1子目录下的所有URL都会返回Cookie |
2.4 session对象
| 方法声明 | 功能简介 |
|---|---|
| getAttribute(String name) | 获取session对象中国名为name的属性值,不存在则为null |
| removeAttribute(String name) | 删除session对象中名称为name的属性 |
| setAttribute(String name,Object value) | 设置session对象的属性,属性名为name,属性值为value |
2.5 out对象
| 方法声明 | 功能简介 |
|---|---|
| println(String x) | 向客户端发送数据的输出字符串换行 |
| print(String s) | 向客户端输出字符串 |
| newLine() | 向客户端输出换行,同println()类似 |
| isAutoFlush() | 判断是否是自动向客户端输出缓冲区的数据 |
| getBufferSize() | 获取缓冲区大小 |
| getRemaining\ 获取缓冲区未使用的字节大小 |
2.6 application对象
JSP引擎启动时会产生一个application对象,之后该对象会一直保持到JSP引擎关闭。当不同用户请求可将用户信息保存在服务器端,直到服务器关闭。
| 方法声明 | 功能简介 |
|---|---|
| getAttribute(String name) | 获取application内置对象中名称为name的属性值,不存在则返回null |
| reemoveAttribute(String name) | 删除application内置对象中名称为name的属性 |
| setAttribute(String name,Object object) | 设置application内置对象中属性,名称为name,属性值为object |
| getRealPath(String path) | 获得虚拟路径path对应的实际路径 |
| getContextPath() | 获取当前web应用程序的根目录 |
3. 控制流和数据流的实现
3.1 JSP页面间流程控制
- 超链接方法
- 表单提交方法
- 页面重定向方法
- 请求转发方法
3.2 JSP页面间数据传递
- 表单传参
- URL传参
- /jsp:param标记传参
- 作用域传参(application,session,request,page)
相关文章:
JSP中http与内置对象学习笔记
本博文讲述jsp客户端与服务器端的http、jsp内置对象与控制流和数据流实现 1.HTTP请求响应机制 HTTP协议是TCP/IP协议中的一个应用层协议,用于定义客户端与服务器之间交换数据的过程 1.1 HTTP请求 HTTP请求由请求行、消息报头、空行和请求数据4部分组成。 请求行…...
Windows Server 2016远程桌面配置全过程
镜像下载 系统镜像网址 本次下载的是 Windows Server 2016 (Updated Feb 2018) (x64) - DVD (Chinese-Simplified) 远程桌面配置 Step 1 在开始菜单搜索服务,打开服务器管理器,点击右上角的管理按钮 Step 2 添加角色控制,点击下一步 S…...
SPI通讯简介
一、基本概念 SPI是串行外设接口(Serial Peripheral Interface)的缩写,是一种高速的,全双工,同步的通信总线,主要应用在EEPROM,FLASH,实时时钟,AD转换器,多MCU间通讯等等,SPI端口可以在多主器件…...
Python 迭代器
迭代器协议 对象必须提供一个 next() 方法,执行该方法要么迭代下一项,要么就引起一个 StopIteration异常以终止迭代(只能往后不能往前)—— 迭代器协议 协议是一种约定,可迭代对象实现了迭代器协议(for、…...
Python语言零基础入门教程(二十七)
Python OS 文件/目录方法 Python语言零基础入门教程(二十六) 61、Python os.utime() 方法 概述 os.utime() 方法用于设置指定路径文件最后的修改和访问时间。 在Unix,Windows中有效。 语法 utime()方法语法格式如下: os.uti…...
Redis基础操作以及数据类型
目录 Redis基础操作 java中的i是不是原子操作?不是 数据类型 1. list 2. set 3. Hash哈希 4. Zset有序集合 Redis基础操作 set [key] [value] 设置值 (设置相同的会将原先的覆盖) get [key] 获取值 不能覆盖和替换 ttl [key] 以秒为单…...
自抗扰控制ADRC之反馈控制律(NLSEF)
目录 前言 1.非线性状态误差反馈控制律(NLSEF) 1.1 控制律形式 1.2 控制量的生成(或者说扰动的补偿) 1.2.1补偿形式① 1.2.1补偿形式② 2.仿真分析 2.1仿真模型 2.2仿真结果 前言 前面的两篇博客依次介绍了TD微分跟踪器安排过渡过程、扩张观测器: 自抗扰…...
“生成音乐“ 【循环神经网络】
前言 本文介绍循环神经网络的进阶案例,通过搭建和训练一个模型,来对钢琴的音符进行预测,通过重复调用模型来进而生成一段音乐; 使用到Maestro的钢琴MIDI文件 ,每个文件由不同音符组成,音符用三个量来表示…...
能否手写vue3响应式原理-面试进阶
(二)响应式原理 利用ES6中Proxy作为拦截器,在get时收集依赖,在set时触发依赖,来实现响应式。 (三)手写实现 1、实现Reactive 基于原理,我们可以先写一下测试用例 //reactive.spe…...
前端工程师leetcode算法面试必备-简单的二叉树
一、前言 本难度的题目主要考察二叉树的基本概念和操作。 1、基本概念 树是计算机科学中经常用到的一种非线性数据结构,以分层的形式存储数据。二叉树是一种特殊的树结构,每个节点最多有两个子树,通常子树被称作“左子树”和“右子树”。 …...
【什么程度叫熟悉linux系统】
一、编译内核 1、Linux系统背景:Ubuntu 2、内核源码kernel.org进行下载 3、解压内核源文件linux-6.1.12.tar.xz、命令:tar -xvf linux-6.1.12.tar.xz 4、进入解压好的文件inux-6.1.12 5、配置内核命令:make menuconfig(需要进…...
编译安装MySQL
MySQL 5.7主要特性 随机root 密码:MySQL 5.7 数据库初始化完成后,会自动生成一个 rootlocalhost 用户,root 用户的密码不为空,而是随机产生一个密码。原生支持:Systemd 更好的性能:对于多核CPU、固态硬盘、…...
Kubernetes一 Kubernetes之入门
二 Kubernetes介绍 1.1 应用部署方式演变 在部署应用程序的方式上,主要经历了三个时代: 传统部署:互联网早期,会直接将应用程序部署在物理机上 优点:简单,不需要其它技术的参与 缺点:不能为应…...
SQLServer2000 断电后数据库suspect“置疑”处理
SQLServer2000 断电后数据库suspect“置疑”处理 背景介绍: 前些天加班时候,接到小舅子微信,说一个客户的winXP 机器上sql2000的数据库在断电重启后,数据库执行命令时提示suspect“置疑”错误。小舅子电子工程师,对数…...
多模态机器学习入门Tutorial on MultiModal Machine Learning——第一堂课个人学习内容
文章目录课程记录核心技术Core Technical Challengesrepresentation表示alignment对齐转换translationFusion融合co-learning共同学习总结Course Syllabus教学大纲个人总结第一周的安排相关连接课程记录 这部分是自己看视频,然后截屏,记录下来的这部分的…...
Java ~ Collection/Executor ~ LinkedBlockingDeque【总结】
一 概述 简介 LinkedBlockingDeque(链接阻塞双端队列)类(下文简称链接阻塞双端队列)是BlockingDeqeue(阻塞双端队列)接口的唯一实现类,采用链表的方式实现。链接阻塞双端队列与LinkedBlockingQu…...
.NET7的AOT的使用
背景其实,规划这篇文章有一段时间了,但是比较懒,所以一直拖着没写。最近时总更新太快了,太卷了,所以借着 .NET 7 正式版发布,熬夜写完这篇文章,希望能够追上时总的一点距离。本文主要介绍如何在…...
分布式缓存的问题
1,Redis缓存穿透问题 Redis缓存穿透问题是指查询一个一定不存在的数据,由于这样的数据缓存一定不命中,所以这样的请求一定会打到数据库上。但是由于数据库里面也没有这样数据,且也没有将这样的null值缓存到数据库,从而造成这样的…...
golang入门笔记——内存管理和编译器优化
静态分析 静态分析:不执行程序代码,推导程序的行为,分析程序的性质 控制流(control flow):程序的执行流程 数据流(data flow):数据在控制流上的传递 通过分析控制流和…...
GEE学习笔记 七十:【GEE之Python版教程四】Python基础编程二
通过上一章的讲解,我们对于python有了初步的了解,这一章就详细讲解一下python的各个变量以及运算规则等内容。 关于测试代码推荐初学者将每一段代码都自己敲入编辑器中在本地运行。 1、数值 这是任何编程中都会有的基本变量,在python支持的…...
【Linux】shell脚本忽略错误继续执行
在 shell 脚本中,可以使用 set -e 命令来设置脚本在遇到错误时退出执行。如果你希望脚本忽略错误并继续执行,可以在脚本开头添加 set e 命令来取消该设置。 举例1 #!/bin/bash# 取消 set -e 的设置 set e# 执行命令,并忽略错误 rm somefile…...
java_网络服务相关_gateway_nacos_feign区别联系
1. spring-cloud-starter-gateway 作用:作为微服务架构的网关,统一入口,处理所有外部请求。 核心能力: 路由转发(基于路径、服务名等)过滤器(鉴权、限流、日志、Header 处理)支持负…...
UDP(Echoserver)
网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法:netstat [选项] 功能:查看网络状态 常用选项: n 拒绝显示别名&#…...
蓝牙 BLE 扫描面试题大全(2):进阶面试题与实战演练
前文覆盖了 BLE 扫描的基础概念与经典问题蓝牙 BLE 扫描面试题大全(1):从基础到实战的深度解析-CSDN博客,但实际面试中,企业更关注候选人对复杂场景的应对能力(如多设备并发扫描、低功耗与高发现率的平衡)和前沿技术的…...
使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台
🎯 使用 Streamlit 构建支持主流大模型与 Ollama 的轻量级统一平台 📌 项目背景 随着大语言模型(LLM)的广泛应用,开发者常面临多个挑战: 各大模型(OpenAI、Claude、Gemini、Ollama)接口风格不统一;缺乏一个统一平台进行模型调用与测试;本地模型 Ollama 的集成与前…...
USB Over IP专用硬件的5个特点
USB over IP技术通过将USB协议数据封装在标准TCP/IP网络数据包中,从根本上改变了USB连接。这允许客户端通过局域网或广域网远程访问和控制物理连接到服务器的USB设备(如专用硬件设备),从而消除了直接物理连接的需要。USB over IP的…...
Yolov8 目标检测蒸馏学习记录
yolov8系列模型蒸馏基本流程,代码下载:这里本人提交了一个demo:djdll/Yolov8_Distillation: Yolov8轻量化_蒸馏代码实现 在轻量化模型设计中,**知识蒸馏(Knowledge Distillation)**被广泛应用,作为提升模型…...
Java毕业设计:WML信息查询与后端信息发布系统开发
JAVAWML信息查询与后端信息发布系统实现 一、系统概述 本系统基于Java和WML(无线标记语言)技术开发,实现了移动设备上的信息查询与后端信息发布功能。系统采用B/S架构,服务器端使用Java Servlet处理请求,数据库采用MySQL存储信息࿰…...
MySQL 部分重点知识篇
一、数据库对象 1. 主键 定义 :主键是用于唯一标识表中每一行记录的字段或字段组合。它具有唯一性和非空性特点。 作用 :确保数据的完整性,便于数据的查询和管理。 示例 :在学生信息表中,学号可以作为主键ÿ…...
提升移动端网页调试效率:WebDebugX 与常见工具组合实践
在日常移动端开发中,网页调试始终是一个高频但又极具挑战的环节。尤其在面对 iOS 与 Android 的混合技术栈、各种设备差异化行为时,开发者迫切需要一套高效、可靠且跨平台的调试方案。过去,我们或多或少使用过 Chrome DevTools、Remote Debug…...
