JSP中http与内置对象学习笔记

news2024/9/23 13:27:02

本博文讲述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个内置对象

内置对象名称类型作用域用途
requestjavax.servlet.ServletRequestrequest封装了客户端的请求信息,例如包含了通过GET/POST方式传递的参数等信息
responsejavax.servlet.ServletResponsepage封装了服务器端响应信息,例如包含了服务端发送到客户端的响应内容等信息
pageContextjavax.servlet.jsp.PageContextpage封装了当前页面的属性信息
sessionjavax.servlet.http.HttpSessionsession封装了当前请求的会话信息
applicationjavax.servlet.ServletContextapplication封装了整个应用共享的信息
outjavax.servlet.jsp.JspWriterpage用于向客户端输出信息
configjavax.serevlet.ServletConfigpage封装了JSP页面对应Servlet的配置信息
pagejava.lang.ObjectpageJSP页面类的实例,即JSP页面本身被编译后生成一个名为page的实例对象
exceptionjava.lang.Throwablepage封装了发生的异常信息

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)

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

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

相关文章

ThreeJS 之界面控制

文章目录参考描述界面自适应问题resize 事件修改画布大小修改视锥体的宽高比全屏显示dblclick 事件检测全屏显示状态进入全屏显示状态退出全屏显示状态尾声参考 项目描述ThreeJS官方文档哔哩哔哩老陈打码搜索引擎BingMDN 文档document.mozFullScreenElementMDN 文档Element.re…

LeetCode题目笔记——6359. 替换一个数字后的最大差值

文章目录题目描述题目链接题目难度——简单方法一:替换代码/Python代码优化总结题目描述 给你一个整数 num 。你知道 Danny Mittal 会偷偷将 0 到 9 中的一个数字 替换 成另一个数字。 请你返回将 num 中 恰好一个 数字进行替换后,得到的最大值和最小值…

CTK学习:(一)编译CTK

CTK插件框架简介 CTK Plugin Framework是用于C++的动态组件系统,以OSGi规范为模型。在此框架下,应用程序由不同的组件组成,遵循面向服务的方法。 ctk是一个开源项目,Github 地址:https://github.com/commontk。 源码地址commontk/CTK: A set of common support code for…

信小程序点击按钮绘制定制转发分享图

1. 说明 先上代码片断分享链接: https://developers.weixin.qq.com/s/vl3ws9mA72GG 使用 painter 画图 按钮传递定制化信息 效果如下: 2. 关键代码说明 文件列表如下: {"usingComponents": {"painter": "/com…

基于springboot的停车场管理系统(程序+文档)

大家好✌!我是CZ淡陌。将再这里为大家分享优质的实战项目,本人在Java毕业设计领域有多年的经验,陆续会更新更多优质的Java实战项目,希望你能有所收获,少走一些弯路。 🍅更多优质项目👇&#x1f…

Android实例仿真之二

目录 三 从无入手 第一阶段 第二阶段 第三阶段 第四阶段 第五阶段 第六阶段 第七阶段 八 举两个典型例子: 九 逆向工程 三 从无入手 这节标题叫从无入手,什么意思呢?如果没有Android这个实例存在,你要做一个类似Android…

Mysql数据库事务

数据库事务 数据库事务由一组sql语句组成。 所有sql语句执行成功则事务整体成功;任一条sql语句失败则事务整体失败,数据恢复到事务之前的状态。 Mysql 事务操作 开始事务 start transaction;- 或 begin;事务开始后,对数据的增删改操作不…

MySQL最佳实践

一、MySQL查询执行过程 1.MySQL分层结构 MySQL8.0没有查询缓存的功能了,如果频繁修改缓存,将会损耗性能查询流程就按照分层结构就可以清楚,只要了解各个组件的各自功能就行分析器主要分析语法和词法是否正确优化器主要优化SQL语句 二、MySQL更新执行过程 更新主要涉及两个重…

SpringCloud - Ribbon负载均衡

目录 负载均衡流程 负载均衡策略 Ribbon加载策略 负载均衡流程 Ribbon将http://userservice/user/1请求拦截下来,帮忙找到真实地址http://localhost:8081LoadBalancerInterceptor类对RestTemplate的请求进行拦截,然后从Eureka根据服务id获取服务列表&…

正点原子ARM裸机开发篇

裸机就是手动的操作硬件来实现驱动设备,后面会有驱动框架不需要这么麻烦 第八章 汇编 LED 灯实验 核心过程 通过汇编语言来控制硬件(驱动程序) 代码流程 1、使能 GPIO1 时钟 GPIO1 的时钟由 CCM_CCGR1 的 bit27 和 bit26 这两个位控制&…

SSL/STL是什么?怎么工作的?Keystore 和 Truststore是什么?

安全套接字层(Secure Sockets Layer),也称为 SSL,是一种加密协议(encryption protocol),可在 Internet 上的设备之间创建身份验证的通道(authenticated channel),以便可以安全地共享信息。本质上&#xff0…

动态规划专题精讲1

致前行的人: 要努力,但不要着急,繁花锦簇,硕果累累都需要过程! 前言: 本篇文章为大家带来一种重要的算法题,就是动态规划类型相关的题目,动态规划类的题目在笔试和面试中是考察非常高…

【日常点滴019】Python制作流浪气球游戏(导弹射击类)

Python制作流浪气球游戏(导弹射击类)教学课程代码(分步教学版)1、构建全局通用代码结构2、构建气球精灵类3、构建导弹精灵类4、碰撞检测5、构建游戏信息类 (最终完整代码)教学课程代码(分步教学…

基于springboot+vue的食疗系统

基于springbootvue的食疗系统 ✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取项目下载方式🍅 一、项目背景介绍&…

java面试题-并发基础

1.多线程的出现是要解决什么问题的? 本质什么?提高程序性能:单线程程序只能按照固定的顺序依次执行每个任务,无法同时处理多个任务。多线程技术可以在同一时间内执行多个任务,从而提高程序的运行效率和响应速度。提高程序的并发性&#xff…

前端借助Canvas实现压缩图片两种方法

一、具体代码 1、利用canvas压缩图片方法一 // 第一种压缩图片方法(图片base64,图片类型,压缩比例,回调函数)// 图片类型是指 image/png、image/jpeg、image/webp(仅Chrome支持)// 该方法对以上三种图片类型都适用 压缩结果的图片base64与原类型相同// …

Python自动化测试-使用Pandas来高效处理测试数据

Python自动化测试-使用Pandas来高效处理测试数据 目录:导读 一、思考 二、使用pandas来操作Excel文件 三、使用pandas来操作csv文件 四、总结 一、思考 1.Pandas是什么? 功能极其强大的数据分析库可以高效地操作各种数据集 csv格式的文件Excel文件H…

Python3-基本数据类型

Python3 基本数据类型 Python 中的变量不需要声明。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。 在 Python 中,变量就是变量,它没有类型,我们所说的"类型"是变量所指的内存中对象的类型。 等号&…

注意力机制笔记——结合沐神和B站老弓up主

B站【大白话浅谈【注意力机制】】 聚类 是针对 样本, 注意力机制是针对样本相关性,来进行计算的 自注意力机制 指的是 query ,key,value都是同一个部分。 可以学到 类似的 短语 ,和 语义特征。如its 指代的对象。 评论区大佬 根据这篇论文《Effective Approaches to…

[ vulhub漏洞复现篇 ] Drupal 远程代码执行漏洞(CVE-2018-7602)

🍬 博主介绍 👨‍🎓 博主介绍:大家好,我是 _PowerShell ,很高兴认识大家~ ✨主攻领域:【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 🎉点赞➕评论➕收藏 养成习…