Java的HttpServletResponse对象使用(请求和响应)

2023-11-11

一、学习目标
1.HttpServletResponse对象
2.HttpServletResponse应用
3.RequestDispatcher接口
二、重点知识
Servlet最主要的作用就是处理客户端请求,并向客户端做出响应。为此,针对 Servlet 的每次请求, Web 服务器在调用service()方法之前,都会创建两个对象,分别是HttpServletRequest和HttpServletResponse。其中HttpServletReauest 用干封装HTTP请求消息,简称request对象。HttpServletResponse 用寸封装HTTP 响应消息,简称response对象。request 对象和response 对家仕有X ServIet 过程中至关重要,接下来,通过一张图来描述浏览器访问Servlet的交互过程,如图4-1所示。
在这里插入图片描述
在 Web 服务器运行阶段,每个Servlet都只会创建一个实例对象。然而,每次 HTTP请求,Web 服务器都会调用所请求 Servlet 实例的 servrice(HttpServletRequestrequest,HttpServletResponse response)方法,重新创建一个request 对象和一个response对象。
1.HttpServletResponse对象
在 Servlet API 中,定义了一个 HttpServletResponse 接口,它继承自ServletResponse接口,专门用来封装HTTP响应消息,由于Http响应消息分为状态行、响应消息分为状态行、响应消息头、消息体三部分,因此在HttpServletResponse中定义了状态行、响应消息头、消息体三部分。
(1)setStatus(int status)方法
该方法用于设置HTTP响应消息的状态码,并生成相应代码;默认会生成一个状态码为200的状态行;
(2)sendError(int sc)方法
此方法出现了Error可想而知是来告知程序人员或者访客,这是个用来表示错误的状态码,404状态码表示找不到客户端请求的资源;

public void sendError(int code) throws java.io.IOException
public void sendError(int code,String message) throws java.io.IEOxception

(3)getWriter()方法
该方法是用来获取字符,获取到的字符输出流对象为PrintWriter类型,由于printWriter类型的对象可以直接输出字符文本内容,因此需要想输出内容全为字符文本的网页文档,需要使用getWriter()方法.
1.2 发送响应消息头相关的方法:
响应消息头的数据格式:key-value的形式,有的是一个key、一个value,有的是一个key、多个value。
当 Servlet向客户端发送响应消息时,由于HTTP 协议的响应字段有很多种,为此,在HtpServletResponse接口中,定义了一系列设置HTTP响应头字段的方法,如表

方法声明 功能描述
void addHeeder(String name, String value)
void setHeader(String name,String value) 这两个方法都是用来设置 HTTP 协议的响应头字段,其中,参数name用于指定响应头字段的名称,参数vaue用于指定响应头字段的值。不同的是,addHeader()方法可以增加同名的响应头字段而 setHeader)方法则会覆盖同名的头字段
void addlntHeader(String name,int value)
void setlntHeader(String name,int value) 这两个方法专门用于设置包含整数值的响应头。避免了使用addHeader()与setHeader)方法时,需要将int突型的攻置值转换为String类型的麻烦
void setContentLength(int len) 该方法用于设置响应消息的实体内容的大小,单位为字节。对于HTTP协议来说,这个方法就是设詈Content-Length 问N头字段的值
void setContentType(String type) 该方法用于设置 Servlet 输出内容的MIME类型,对于HTTP协议来说,就是设置Content-Type响应头字段的值。例如,如果发送到客户端的内容是 jpeg 格式的图像数据,就需要将响应头字段的类型设置为“imageljpeg"。需要注意的是,如果响应的内容为文本,setContentType()方法还可以设置字符编码,如:text/html;charset=UTF-8
void setLocale(Locale loc) 该方法用于设置响应消息的本地化信息。对HTTP 来说,就是设置Content-Language 啊应头子段和 Content-Type头字段中的字符集编码部分。需要注息的是,如果 HTTP 消息没有设置Content-Type 头子段,SeILocale()万法设置的字符集编码不会出现在HTTP 消息的啊应头十,如未调用 setCharacterEncoding()setLocale()方法将不再具有指定字符集编码的功能
void setCharacterEncoding(Stringcharset) 该方法用于设置内容使用的字符编码,对HTTP协议来说,,就是设置Content-Type头字段中的字符集编码部分。如果没有设置 Content-Type头字段,setCharacterEncoding方法设置的字符集编码不会出现在HTTP消息的响应头中。SetCharaclerEncoding()方法比setContentType()和setLocale()方法的优先权高,它的设置结果将覆盖setContentType()和setLocale()方法所设置的字符码表

(1)设置响应消息头:
一个key ,一个value

setHeader(String key,String value);
比如:setHeader(“aa”,“AA”);
如果:setHeader(“aa”,“AA”);
setHeader(“aa”,“BB”);
结果:aa这个头对应的值就是BB

一个key,对应多个value

addHeader(String key,String value);
比如:addHeader(“aa”,“AA”);
addHeader(“aa”,“BB”);
结果:aa这个头对应的值AA和BB

(2)设置响应数据的长度:setContentLength(int src)方法
1.3 发送响应体相关的方法:
(1)getOutputStream(),通过response向浏览器返回图片、视频等二进制数据的文件,当然也可以向浏览器、
返回文本数据;

ServletOutputStream out = response.getOutputSt
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java的HttpServletResponse对象使用(请求和响应) 的相关文章

  • ESP8266教程4 — ESP8266 智能配网

    按照前面的教程演示 如果想要给esp8266模块联网 可以使用AT指令加上SSID和密码即可以让模块连接到无线网络上 但是对于一个投向了市场的产品而言 消费者购买了你的一个可以联网的智能产品 当他们想要使用的时候总不能让消费者也使用AT指令
  • Java多线程技术

    Java多线程技术 Java中如何实现多线程 继承Thread类 实现Runnable接口 实现Callable接口 通过继承Thread类实现多线程 继承Thread类实现多线程的步骤 继承Thread类 重写方法run 来完成其操作的
  • flutter 自定义微信/支付宝密码输入框

    如图 项目需求需要实现以上效果 思路解析 1 可以用dialog来实现 2 可以用一个新statfulWidget实现 因为不大熟悉dialog 故用了一个新的statefulWidget来实现页面效果 直接上代码 功能 描述 设置密码弹框
  • JavaWeb中JSP和Servlet的相关知识

    JSP注释代码 引入JAVA包 举例 JSP中的JAVA代码块 在此代码块中可以定义变量和方法 定义的变量为局部变量 定义表达式 只能定义变量 且定义的变量为成员变量 输出表达式 直接向网页显示包含内容的value 局部变量 执行 JSP时
  • jQuery AJAX获取JSON数据解析多种方式示例

  • 阿里云云计算ACP学习笔记(Wakin老师)——云计算基础

    1 云计算最早可追溯到2012年 2 传统IT系统面临的问题 1 资源利用率低 传统服务器的资源占用率不均衡 个别在30 40 大多数在10 企业所投产的IT资源未得到有效利用 2 业务上线时间长 从设备采购开始到上架多则半年一年 3 能耗
  • synchronized与(ReentrantLock)Lock的对比区别

    类别 synchronized Lock 存在层次 Java关键字 属于原生语法层面 需要jvm实现 而Lock它是JDK 1 5之后提供的API层面的互斥锁 需要lock 和unlock 方法配合try finally语句块来完成 锁的释

随机推荐

  • UEFI模式下安装Centos 7

    UEFI模式下安装Centos 7存在的问题 在U盘刻录系统镜像的时候 U盘label实际会和系统镜像中默认路径的label不同 这导致在UEFI模式下引导程序不能正确地找到路径 而需要我们自己手动确认并修改成正确的路径 本文默认已经下载系
  • 【Linux】Ⅻ基础网络:数据链路层

    以太网协议 1 来自网络层的ip数据报会交给递交给数据链路层的以太网协议 2 网络层是负责数据从哪里来到哪里去 而数据链路层负责数据从链路当中的设备到相邻设备 以太网帧格式 MAC地址 网卡绑定着 每一块网卡都有一个全球唯一的MAC地址 目
  • vue3.0+echarts立体柱图

    前言 vue3 0实现echarts立体柱图 实现效果 实现步骤 1 安装echarts cnpm i save echarts 2 页面定义容器
  • Window11下载安装jdk8-jdk11与环境变量的配置

    目录 1 下载jdk 1 1 jdk8下载链接 请点击网址 1 2 jdk11下载链接 请点击网址 2 安装jdk 3 配置环境变量 3 1 打开设置 3 2 点击系统信息 3 3 高级系统设置 3 4 点击环境变量 3 5 新建系统变量
  • CSS 去掉input默认样式

    input background none outline none border none 如果input必须要有边框 但需要去掉选中时的蓝色框 则 input background none outline none border 1p
  • linux cp f命令,linux cp 命令

    功能 复制文件或目录 语法 cp 选项 源文件 目的 cp 选项 源目录 目的 选项 b backup 覆盖已存在的文件时先备份 f force 强行复制文件或目录 不管目标文件或目录是否已经存在 i interactive 覆盖已存在的文
  • 记一次安卓手机水印显示问题的排查历程

    近期在风控部门的要求下 我们在APP的一些关键页面上添加了水印 技术方案也比较简单 上线一切正常 不过大概一周之后 陆陆续续开始收到有花屏的反馈 具体截图如下类似 最开始考虑的可能是手机有自定义字体的缘故 后面偶然得知是因为安卓系统中辅助功
  • java: 错误: 不支持发行版本 5

    将project structure中的两部分保持版本一致 将modules里面的language level与上面的保持一致 将图中的和上面的保持一致
  • #芯片# R8025(RX-8025T)

    实时时钟芯片 内置 32 768 kHz DTCXO 高稳定性 I2C 总线接口实时时钟模块 接口电压范围 1 8 V 至 5 5 V 温度补偿电压范围 2 2 V 至 5 5 V 宽定时器电压范围 1 6 V 至 5 5 V 时钟功能 该
  • Ubuntu 16.04.1 LTS下安装FreeRADIUS2.2.8并开启MySQL认证

    更新系统 sudo apt update sudo apt upgrade 安装MariaDB sudo apt get install software properties common sudo apt key adv recv ke
  • Linux基础开发工具

    提示 本文内容较长 请参考左侧目录阅读 Linux基础开发工具 1 软件包管理器yum 1 1 yum的基本操作 1 2 关于lrzsz 2 Linux编辑器vim 2 1 安装vimforcpp插件 2 2 修改vim配置 2 3 常见错
  • Qt限制LineEdit的输入

    要限制输入需要用到Validator才能限制QLineEdit的输入 具体的两种表现方式 第一种是利用正则表达式QRegExp 例如下图所示 QRegExp rx1 QRegExp 0 9 正则表达式 限制数字与点的输入 QValidato
  • 常用七种排序的python实现--

    常用七种排序的python实现 1 算法复杂度 算法复杂度分为时间复杂度和空间复杂度 其中 时间复杂度是指执行算法所需要的计算工作量 而空间复杂度是指执行这个算法所需要的内存空间 算法的复杂性体现在运行该算法时的计算机所需资源的多少上 计算
  • 什么是区块链概念

    只有少数人控制的比特币世界没有任何意义 比特币的价值也不是孤立存在的 与不同世界 至少包含现实实体经济和区块链世界 的关联性越强 就越能体现其价值 一方面 与现实世界的关系 当与比特币挂钩的商品和服务越来越多之后 也即是许多商品和服务都以比
  • TypeError: ‘module‘ object is not callable python报错解决及问题分析

    目录 代码片段 ExcelReader py test py 报错 原因分析 模块 import使用方法 1 导入整个模块 2 导入整个模块并指定别名 3 from import 语法来导入指定成员 4 from import 语法来导入指
  • SQL Server 2014安装教程(保姆级图解教程)

    SQL Server 2014安装教程 保姆级图解教程 1 找到准备好的SQL Server 2014安装包 2 解压缩后找到安装程序 双击打开 3 点击全新SQL Server 单击后会出现安装窗口 4 勾选接受许可条款 点击下一步 5
  • Sharding-JDBC分布式事务之(五)BASE事务(Seata框架——AT模式的启动)

    Seata框架启动 Seata框架 AT模式的启动 1 服务中心为nacos方式启动seata 1 1 nacos启动与建表 1 2 registry conf 1 3 客户端 TM RM 配置 2 服务中心为file 直连 方式启动sea
  • springCloud微服务系列——分布式日志采集

    目录 一 简介 二 思路 三 自定义Logback appender 属性注入 Logback标签注入属性 Spring配置信息注入属性 Logback代码注入属性 Elasticsearch模板设计 示例代码 一 简介 分布式应用必须有一
  • [附源码]SSM计算机毕业设计基于web场馆预约管理系统JAVA

    项目运行 环境配置 Jdk1 8 Tomcat7 0 Mysql HBuilderX Webstorm也行 Eclispe IntelliJ IDEA Eclispe MyEclispe Sts都支持 项目技术 SSM mybatis Ma
  • Java的HttpServletResponse对象使用(请求和响应)

    一 学习目标 1 HttpServletResponse对象 2 HttpServletResponse应用 3 RequestDispatcher接口 二 重点知识 Servlet最主要的作用就是处理客户端请求 并向客户端做出响应 为此