当前位置: 首页 > news >正文

JavaWeb | JSP内置对象

目录:

    • 1.认识JSP内置对象
    • 2.JSP内置对象的特点
    • 3.九大内置对象
      • 3.1 out对象的作用
        • 向 “客户端” 输出各种数据内容
        • 对 “服务器” 上的输出缓冲区进行管理
      • 3.2 request对象的作用
        • 能够获取客户端的基本信息
      • 3.3 response对象的作用
          • 利用response对象进行 “重定向”
          • 利用response设置HTTP头
      • 3.4 "重定向" 和 "请求转发" 的区别
        • 3.4.1 从浏览器的地址显示上来看
        • 3.4.2 从数据共享来看
        • 3.4.3 从功能来看
        • 3.4.4 从效率来看
    • 4.(不断补充中.....)

1.认识JSP内置对象

  • JSP内置对象就是指在JSP页面中内置的不需要定义可以在网页中直接使用对象
  • JSP有九种内置对象 :( 九大内置对象 )
    (1) out对象: 负责管理对客户端的输出。
    (2) request对象 : 负责得到客户端的请求信息。
    (3) response对象 : 负责向客户端发出晌应
    (4) session对象 : 负责保存同一客户端一次会话过程中的一些信息。
    (5) application对象 : 表示整个应用的环境信息。
    (6) exception对象 : 表示页面上发生的异常,可以通过它获得页面异常信息。
    (7) page对象 : 表示的是当前JSP页面本身,就像Java类定义中的this一样。
    (8) pageContext对象 : 表示的是此JSP的上下文。
    (9) config 对象 : 表示此JSP的ServletConfig.

2.JSP内置对象的特点

  • 内置对象自动载入的,因此它不需要直接实例化。(可直接在JSP页面调用/使用JSP内置对象)
  • 内置对象是通过Web容器来实现和管理的。
  • 所有JSP页面中,直接调用内置对象都是合法的。

3.九大内置对象

3.1 out对象的作用

  • 用来向客户端输出各种数据类型的内容

  • 对应用服务器上输出缓冲区进行管理

    一般情况下,out对象都是向浏览器端输出 文本型 的数据,所以可以用out对象直接编程生成一个动态的HTML文件,然后发送给浏览器,达到显示的目的。

向 “客户端” 输出各种数据内容

通过out对象的两个 输出方法 来向客户端中输出各种数据内容。

  • void print()

  • void println()

    两者的区别out.print()函数在输出完毕后并不换行,而out.println()函数在输出完毕后会结束当前行( 会换行),下一个输出语句将会在下一行开始输出

    不过,在输出中换行,在网页上并不会换行。在网页上换行应该打印字符串"< br>"。

对 “服务器” 上的输出缓冲区进行管理
  • out对象还可以实现对 应用服务器上的输出缓冲区管理

  • 以下是out对象常用的与 管理缓冲区有关的函数

    (1)void close() : 关闭输出流,从而强制终止当前页面的剩余部分向浏览器输出。
    (2)void clearBuffer() : 清除缓冲区里的数据,并且把数据写到客户端去。
    (3) void clear() : 清除缓冲区里的数据,但 不把数据写到客户端去
    (4) int getRemaining() : 获取缓冲区中没有被占用的空间的大小
    (5)void flush() : 输出缓冲区的数据。out.flush()函数也会清除缓冲区中的数据,但是该函数先将之前缓冲区中的数据输出到客户端,然后再清除缓冲区中的数据。
    (6) int getBufferSize() : 获得缓冲区的大小

    out管理缓冲区使用得比较少,因为通常使用服务器端默认的设置,而不需要手动管理

request 对象 :

  • request代表了客户端请求信息,主要是用来获取客户端参数
    它对应的类型是javax. servlet.http.HttpServletRequest。该对象在前面的内容中用到,如URL传值表单开发中。

3.2 request对象的作用

能够获取客户端的基本信息
  • request对象的一个主要用途就是它 能够获取客户端的基本信息。主要有以下几种方法:

    (1) String getMethod() : 得到提交方式
    (2) String getRequestURI() : 得到请求的URL地址
    (3) String getProtocol) : 得到协议名称
    (4) String getServletPath() : 获得客户端请求服务器文件的路径。
    (5) String getQueryString() : 得到URL的查询部分,对于post来说,该方法得不到任何信息。
    (6) String getServerName() : 得到服务器的名称
    (7) String getServerPort() : 得到服务器端口号
    (8) String getRemoteAddr() : 得到客户端的IP地址

    <%@ page contentType="text/html;charset=gb2312" language="java" %>
    <html>
    <head><title>Two.jsp</title>
    </head>
    <body>
    提交方式: <%= request. getMethod() %><br>
    请求的URL地址: <%= request. getRequestURI()%><br>
    协议名称: <%= request. getProtocol()%><br>
    客户端请求服务器文件的路径: <%= request. getServletPath()%><br>
    URL的查询部分: <%= request. getQueryString()%><br>
    服务器的名称: <%= request. getServerName()%><br>
    服务器端口号: <%= request. getServerPort() %><br>
    远程客户端的IP地址: <%= request. getRemoteAddr()%><br>
    </body>
    </html>
    

response对象 :

  • responserequest 是一组 相对应内置对象
  • response可以理解为 客户端的响应request可以理解为 客户端的请求,二者所表示的范围相对应的两个部分,具有很好的对称性
  • response对应的类(接口) 是 javax.servlet.http.HttpServletResponse

3.3 response对象的作用

利用response对象进行 “重定向”
  • 重定向就是跳转到另一个页面 / 实现程序的跳转,可以用response对象进行重定向,方法如下:

    response.sendRedirect(目标页面路径); 
    

    responseTest1.jsp

    <%@ page  language="java"  pageEncoding="gb2312" import="java.util.*" %>
    <html>
    <head><title>responseTest1.jsp</title>
    </head>
    <body>
    <form action="responseTest2.jsp">
    <input type= "submit" value= "提交">
    </form>
    </body>
    </html>
    

    responseTest2.jsp

    <%@ page  language="java"  pageEncoding="gb2312" import="java.util.*" %>
    <html>
    <head><title>responseTest2.jsp</title>
    </head>
    <body>
    <%//重定向到另一个页面response.sendRedirect("responseTest3.jsp"); //相对路径
    %>
    </body>
    </html>
    

    responseTest3.jsp

    <%@ page  language="java"  pageEncoding="gb2312" import="java.util.*" %>
    <html>
    <head><title>responseTest3.jsp</title>
    </head>
    <body>欢迎来到学校管理系统!
    </body>
    </html>
    
利用response设置HTTP头
  • HTTP头一般用来 设置网页的基本属性,可以通过 responsesetHeader() 方法进行设置,代码如下。

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

    这都表示在客户端缓存不保存页面的副本

    <%--表示客户端浏览器每隔5秒钟定期刷新一次。--%>
    <%response. setHeader( "Refrsh","5");
    %>
    

3.4 “重定向” 和 “请求转发” 的区别

<%
//重定向到另一个页面(重定向实现"页面跳转")
response.sendRedirect("文件名"); //相对路径
%><%-- JSP动作 实现“页面”跳转 --%>
<jsp:forward page="文件名"></jsp:forward>

重定向请求转发都能实现页面跳转 ,但两者又有区别具体区别分析如下

3.4.1 从浏览器的地址显示上来看
  • forward属于服务器端去请求资源服务器直接访问目标地址,并对该目标地址响应内容进行读取,再把读取的内容发给浏览器,因此 客户端浏览器的地址不变
  • redirect是告诉客户端使浏览器知道去请求哪一个地址,相当于客户端重新请求一遍,所以地址显示栏会变
    ( forward进行页面跳转时,客户端浏览器地址 不会改变redirect进行页面跳转时,客户端浏览器地址 会改变)
3.4.2 从数据共享来看

forward转发的页以及转发到的目标页面够共享request里面的数据,而redirect转发的页以及转发到的目标页面不能共享request里面的数据

3.4.3 从功能来看
  • redirect能够 重定向当前应用程序的其他资源,还能够重定向同一个站点上的其他应用程序中的资源,甚至是使用绝对URL重定向到其他站点的资源

  • forward只能在同一个Web应用程序内资源之间转发请求,可以理解为 服务器内部的一种操作

    如 : redirect可以重定向百度网址,但forward请求转发百度网址报错

3.4.4 从效率来看

forward效率较高,因为跳转仅发生在服务器端redirect效率相对较低,因为相当于又进行了一次请求

4.(不断补充中…)

相关文章:

JavaWeb | JSP内置对象

目录&#xff1a; 1.认识JSP内置对象2.JSP内置对象的特点3.九大内置对象3.1 out对象的作用向 “客户端” 输出各种数据内容对 “服务器” 上的输出缓冲区进行管理 3.2 request对象的作用能够获取客户端的基本信息 3.3 response对象的作用利用response对象进行 “重定向”利用re…...

如何保持高能量

精力管理 精力管理对于平衡多项任务和保持热情至关重要。 通过自我积极反馈循环系统培养积极的内心声音。 培养仪式和习惯来控制内心的声音并保持能量。 学习语言带来正能量和宝贵的技能 保持高能量需要自我赋权和体力充电。 经常锻炼有很多好处&#xff0c;包括改善健康…...

Oracle研学-基础操作

学自B站黑马程序员笔记 一 创建表空间(创建数据文件) 创建表空间同时会创建一个数据文件(下面5行应该是一句话)&#xff0c;表空间在PLSQL的Object的tablespace中可以看到 create tablespace waterboss //创建表空间 datafile c:\waterboss.dbf //创建表空间对应的…...

jmeter下载地址

Jmeter安装教程【5.5】【Windows】jmeter详细安装配置教程&#xff0c;装不好你打我_一只莽夫的博客-CSDN博客...

C语言,求取数组的序亏:已知一个整数数组,求出个数组中每个元素在整个 数组的排序。

要求获取整数数组中每个元素的排序&#xff0c;可以使用以下方法&#xff1a; 1. 定义一个结构体数组&#xff0c;其中每个结构体包含数组元素的值和索引。 2. 遍历整数数组&#xff0c;将每个元素与其索引一起存储到结构体数组中。 3. 对结构体数组进行排序&#xff0c;按照…...

信息流广告行为兴趣定向底层逻辑算法

行为兴趣定向 1: 行为兴趣的背后是计划的数据 行为是用户在平台的动作&#xff1a;点赞、评论、分享、点击、下单、成交等&#xff0c;用户发生过的标签 兴趣不一定发生&#xff0c;我有打高尔夫的兴趣&#xff0c;但是从来没打过&#xff0c;因为穷 系统会根据用户的行为标…...

Selenium——isDisplayed()、isEnabled()、isSelected()

判断页面是否存在某元素 Selenium没有直接提供判断是否存在的方法&#xff0c;可以使用findElements返回的数量判断&#xff1b;或者判断findElement是否抛出异常 webDriver.findElements(By.xpath("(//div[classel-button-group]//button)[1]")).size()isDisplaye…...

unity UGUI中获取点击位置处的URL链接

需求是&#xff0c;我们在一个text组件中像写网页那样写入链接&#xff0c;然后点击这个链接&#xff0c;就能访问配置的网页啥的。比如&#xff1a; <a href"hello">链接文本</a></summary> 最终的效果如下&#xff1a; 图中&#xff0c;image区…...

【Arduino库之:FastLED库】

第一&#xff1a;基础 led [ 0 ] CRGB::Red; //为第一个灯珠设置红色 FastLED.show(); //这个作用才会显示 示例程序&#xff1a; #include <FastLED.h> #define NUM_LEDS 8 #define DATA_PIN 7 #define CLOCK_PIN 13 CRGB leds[NUM_LEDS]; CRGB myGRBcolor(0…...

两道面试题秒杀你的C++基础!

大家好&#xff0c;我是光城&#xff0c;今天发两个非常重要的面试题&#xff0c;可以留言区说出你的答案&#xff0c;这两个题目都比较重要&#xff0c;看你能答对不&#xff1f; 1.C中初始化变量有几种方式&#xff0c;各自有什么区别&#xff1f; 或者说Initialization分为哪…...

回归预测 | MATLAB实现SMA+WOA+BOA-LSSVM基于黏菌算法+鲸鱼算法+蝴蝶算法优化LSSVM回归预测

回归预测 | MATLAB实现SMAWOABOA-LSSVM基于黏菌算法鲸鱼算法蝴蝶算法优化LSSVM回归预测 目录 回归预测 | MATLAB实现SMAWOABOA-LSSVM基于黏菌算法鲸鱼算法蝴蝶算法优化LSSVM回归预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 MATLAB实现SMAWOABOA-LSSVM基于黏菌算法…...

柔性数组(Flexible Array Members)在C语言中的应用

什么是柔性数组&#xff1f; 在C语言中&#xff0c;柔性数组&#xff08;Flexible Array Members&#xff0c;FAMs&#xff09;是C99标凈引入的一种便捷的数据结构&#xff0c;用于声明具有可变大小数组的结构体。柔性数组通常用于当结构体的大小在编译时不确定&#xff0c;但…...

华为手环配置技巧

前言 华为手环作为生活健康辅助设备发挥不可忽视的作用&#xff0c;但每次更换手环后需要重新配置。华为手环不仅有健康监测、消息通知、天气推送、离线支付、公交卡、运动锻炼、等功能&#xff0c;还有倒计时、计时器、手电筒、闹钟、等小工具。下文介绍如何进行配置。 配置…...

2023全球数字贸易大赛--什么是 DID 身份,中青校园APP,全球碳交易=树根格致,多元空间=购物时代的web3.0,超喵Overview

目录 什么是 DID 身份,为什么需要 DID 1. 中心化身份的问题 2. 为什么 DID 一定会出现...

有序表常见题型

给定一个数组arr和两个整数a和b求arr中有多少个子数组累加和在a到b这个范围上返回达标的子数组数量 如【3&#xff0c;6&#xff0c;1&#xff0c;9&#xff0c;2】达标的子数组通过暴力求解的方式时间复杂度为O&#xff08;N的三次方&#xff09;【找每个子数组占用O&#xf…...

【开源】基于JAVA语言的桃花峪滑雪场租赁系统

项目编号&#xff1a; S 036 &#xff0c;文末获取源码。 \color{red}{项目编号&#xff1a;S036&#xff0c;文末获取源码。} 项目编号&#xff1a;S036&#xff0c;文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 游客服务2.2 雪场管理 三、数据库设…...

【开源】基于Vue.js的图书管理系统

文末获取源码&#xff0c;项目编号&#xff1a; S 066 。 \color{red}{文末获取源码&#xff0c;项目编号&#xff1a;S066。} 文末获取源码&#xff0c;项目编号&#xff1a;S066。 目录 一、 系统介绍二、 功能模块2.1 登录注册模块2.1 图书馆模块2.2 图书类型模块2.3 图书模…...

python跑ncnn(验证模型是否转换成功)

为了转ncnn模型是否成功&#xff0c;用python验证一下先 pip install ncnn分割模型的验证代码 import ncnn import cv2 import numpy as np# 创建ncnn的网络对象 net ncnn.Net()# 加载ONNX模型 net.load_param(E:\\Android_Projects\\ncnn-android-deeplabv3plus-main\\app\…...

FL Studio 21.2.1.3859中文破解激活版2024免费下载安装图文教程

FL Studio 21.2.1.3859中文破解激活版是我见过更新迭代最快的宿主软件&#xff0c;没有之一。FL Studio12、FL Studio20、FL Studio21等等。有时甚至我刚刚下载好了最新版本&#xff0c;熟悉了新版本一些好用的操作&#xff0c;Fl Studio就又推出了更新的版本&#xff0c;而且F…...

人工智能发展史

人工智能&#xff08;AI&#xff09;的发展史是一段跨越数十年的旅程&#xff0c;涵盖了从早期理论探索到现代技术革新的广泛内容。人工智能的发展历程展示了从最初的概念探索到现代技术突破的演变。尽管经历了多次起伏&#xff0c;但AI领域持续进步&#xff0c;不断拓展其应用…...

论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)

HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...

MySQL 隔离级别:脏读、幻读及不可重复读的原理与示例

一、MySQL 隔离级别 MySQL 提供了四种隔离级别,用于控制事务之间的并发访问以及数据的可见性,不同隔离级别对脏读、幻读、不可重复读这几种并发数据问题有着不同的处理方式,具体如下: 隔离级别脏读不可重复读幻读性能特点及锁机制读未提交(READ UNCOMMITTED)允许出现允许…...

基于Flask实现的医疗保险欺诈识别监测模型

基于Flask实现的医疗保险欺诈识别监测模型 项目截图 项目简介 社会医疗保险是国家通过立法形式强制实施&#xff0c;由雇主和个人按一定比例缴纳保险费&#xff0c;建立社会医疗保险基金&#xff0c;支付雇员医疗费用的一种医疗保险制度&#xff0c; 它是促进社会文明和进步的…...

论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)

笔记整理&#xff1a;刘治强&#xff0c;浙江大学硕士生&#xff0c;研究方向为知识图谱表示学习&#xff0c;大语言模型 论文链接&#xff1a;http://arxiv.org/abs/2407.16127 发表会议&#xff1a;ISWC 2024 1. 动机 传统的知识图谱补全&#xff08;KGC&#xff09;模型通过…...

涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战

“&#x1f916;手搓TuyaAI语音指令 &#x1f60d;秒变表情包大师&#xff0c;让萌系Otto机器人&#x1f525;玩出智能新花样&#xff01;开整&#xff01;” &#x1f916; Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制&#xff08;TuyaAI…...

IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)

文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…...

精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南

精益数据分析&#xff08;97/126&#xff09;&#xff1a;邮件营销与用户参与度的关键指标优化指南 在数字化营销时代&#xff0c;邮件列表效度、用户参与度和网站性能等指标往往决定着创业公司的增长成败。今天&#xff0c;我们将深入解析邮件打开率、网站可用性、页面参与时…...

微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据

微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据 Power Query 具有大量专门帮助您清理和准备数据以供分析的功能。 您将了解如何简化复杂模型、更改数据类型、重命名对象和透视数据。 您还将了解如何分析列&#xff0c;以便知晓哪些列包含有价值的数据&#xff0c;…...

PAN/FPN

import torch import torch.nn as nn import torch.nn.functional as F import mathclass LowResQueryHighResKVAttention(nn.Module):"""方案 1: 低分辨率特征 (Query) 查询高分辨率特征 (Key, Value).输出分辨率与低分辨率输入相同。"""def __…...

脑机新手指南(七):OpenBCI_GUI:从环境搭建到数据可视化(上)

一、OpenBCI_GUI 项目概述 &#xff08;一&#xff09;项目背景与目标 OpenBCI 是一个开源的脑电信号采集硬件平台&#xff0c;其配套的 OpenBCI_GUI 则是专为该硬件设计的图形化界面工具。对于研究人员、开发者和学生而言&#xff0c;首次接触 OpenBCI 设备时&#xff0c;往…...