外贸网站建设 双语网站建设/房地产销售怎么找客户
本博文讲述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支持的…...

股票投资新出发之知识体系构建导论
文章目录前言参考资料如何构建体系实践理论tips前言 自2021年股票开户,投资已有2年左右,但更多的是凭感觉式的拍脑袋投资,没有自己的投资体系,所以开此专栏从零开始构建知识体系,勉励自己不断学习。两年的投资经验让我…...

蓝桥杯算法训练合集 十六 1.首字母变大写2.盾神计科导作业3.Cinema4.接水问题
目录 1.首字母变大写 2.盾神计科导作业 3.Cinema 4.接水问题 1.首字母变大写 问题描述 对一个字符串中的所有单词,如果单词的首字母不是大写字母,则把单词的首字母变成大写字母。在字符串中,单词之间通过空白符分隔,空白符包括…...

密码的世界
网络世界中常见的攻击方法 窃听攻击 窃听攻击是网络世界最常见的一种攻击方式,一些不能泄露的隐私信息,例如银行卡密码,账号密码,如果被窃听泄露的话通常会带来比较严重的后果。 中间人攻击 在中间人攻击中,小明准…...

如何用一句话感动测试工程师?产品和技术都这么说!
测试工程师在公司里的地位一言难尽,产品挥斥苍穹,指引产品前路;开发编写代码实现功能,给产品带来瞩目成就。两者,一个是领航员,一个是开拓者,都是聚光灯照耀的对象,唯独团队中的保障…...

MySQL中使用索引优化
目录 一.使用索引优化 数据准备 避免索引失效应用-全值匹配 避免索引失效应用-最左前缀法则 避免索引失效应用-其他匹配原则 1、 2、 3、 4、 5、 一.使用索引优化 索引是数据库优化最常用也是最重要的手段之一,通过索引通常可以帮助用户解决大多数的MySQL的性能优化…...

Linux C/C++ 多线程TCP/UDP服务器 (监控系统状态)
Linux环境中实现并发TCP/IP服务器。多线程在解决方案中提供了并发性。由于并发性,它允许多个客户端同时连接到服务器并与服务器交互。 Linux多线程编程概述 许多应用程序同时处理多项杂务。服务器应用程序处理并发客户端;交互式应用程序通常在处理后台…...

【JavaScript】JavaScript基本使用方法
如何回复程序员发来的短信:Hello world —hello nerd. 前言: 大家好,我是程序猿爱打拳。今天我给大家讲解的是初识JavaScript中基本组成成分、引入方法、输入输出语句,并用源码与效果图的方式展示给大家。 目录 1.JavaScript组成…...

Python数据容器、list列表、tuple元组、str字符串、数据容器(序列)切片、set集合、dict字典、字符串大小比较
数据来源 01 数据容器 为什么学习数据容器 数据容器 总结 02 列表 1)列表定义 为什么需要列表 列表的定义语法 列表的定义方式 演示 """ 演示数据容器之:list列表 语法:[元素,元素,......] """ # 定义一个列表list my_list …...

Python urllib
Python urllib Python urllib 库用于操作网页 URL,并对网页的内容进行抓取处理。 本文主要介绍 Python3 的 urllib。 urllib 包 包含以下几个模块: urllib.request - 打开和读取 URL。urllib.error - 包含 urllib.request 抛出的异常。urllib.parse …...