Response对象-响应字符数据

2023-10-27

Response响应数据

1. response将字符数据返回到浏览器

需要两步:

  1. 通过response对象获取字符输出流PrintWriter writer = resp.getWriter();
  2. 通过字符输出流写数据:writer.writer(“aaa”);
    案例
    浏览器中打印出字符
/**
 * 响应字符数据:设置字符数据的响应体
 */
@WebServlet("/resp3")
public class ResponseDemo3 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html;charset=utf-8");
        //1. 获取字符输出流
        PrintWriter writer = response.getWriter();
		 writer.write("aaa");
    }
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doGet(request, response);
    }
}

还可以返回html字符串,并且浏览器能解析出来,如下:

PrintWriter writer = response.getWriter();
//content-type,告诉浏览器返回的数据类型是HTML类型数据,这样浏览器才会解析HTML标签
response.setHeader("content-type","text/html");
writer.write("<h1>aaa</h1>");

注意: 一次请求响应结束后,response对象就会被销毁,所以不要手动关闭流

提醒 如果要返回一个中文字符串你好,需要设置响应数据编码为utf-8

//设置响应的数据格式及数据的编码
response.setContentType("text/html;charset=utf-8");
writer.write("你好");

2. response响应字节数据

需要将字节数据写回到浏览器,我们需要两个步骤:

  • 通过response对象获取字节输出流:servletOutputStream outputStream = resp.getOutputStream();
  • 通过字节输出流写数据:outputStream。write(字节数据);
    1.返回一个图片文件到浏览器,如下:
/**
 * 响应字节数据:设置字节数据的响应体
 */
@WebServlet("/resp4")
public class ResponseDemo4 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //1. 读取文件
        FileInputStream fis = new FileInputStream("d://a.jpg");
        //2. 获取response字节输出流
        ServletOutputStream os = response.getOutputStream();
        //3. 完成流的copy
        byte[] buff = new byte[1024];
        int len = 0;
        while ((len = fis.read(buff))!= -1){
            os.write(buff,0,len);
        }
        fis.close();
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doGet(request, response);
    }
}

上述代码中,对于流的copy的代码还是比较复杂的,所以我们可以使用别人提供好的方法来简化代码的开发,具体的步骤如下:

  1. pom.xml添加依赖
<dependency>
    <groupId>commons-io</groupId>
    <artifactId>commons-io</artifactId>
    <version>2.6</version>
</dependency>
  1. 调用工具类方法
//fis:输入流
//os:输出流
IOUtils.copy(fis,os);

优化代码之后:

/**
 * 响应字节数据:设置字节数据的响应体
 */
@WebServlet("/resp4")
public class ResponseDemo4 extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //1. 读取文件
        FileInputStream fis = new FileInputStream("d://a.jpg");
        //2. 获取response字节输出流
        ServletOutputStream os = response.getOutputStream();
        //3. 完成流的copy
      	IOUtils.copy(fis,os);
        fis.close();
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doGet(request, response);
    }
}

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

Response对象-响应字符数据 的相关文章

  • Java Swing BoxLayout 忽略 AlignmentX

    在下面的代码中 通过调用setAlignmentX with Component LEFT ALIGNMENT我希望在居中的滑块上获得左对齐的标签 由于某种原因 标签也居中 似乎与传递给 setAlignmentX 的值无关 我必须向 se
  • Android Toast 消息不起作用

    我正在通过 Andengine 为 Android 开发游戏 我有 MainActivity 类和 GameScene 类 我在 GameActivity 中使用 Toast 消息 它正在发挥作用 Toast makeText this H
  • 在 String 值之后打印 int 值

    我有以下示例代码 int pay 80 int bonus 65 System out println pay bonus bonus pay 有人可以向我解释一下为什么我得到以下输出 145 6580 您的代码正在从左到右解释表达式 pa
  • 将处理项目移至 Eclipse

    我已经在处理项目上工作了一段时间 现在想将其移至 Eclipse 中 我已经在 Eclipse 环境中安装了 Proclipse 我有很多扩展名为 pde 的文件 然而 Proclipse 文件都以 java 结尾 所有 pde 文件都存在
  • 如何准确判断 double 是否为整数? [复制]

    这个问题在这里已经有答案了 具体来说 在 Java 中 我如何确定double是一个整数 为了澄清 我想知道如何确定 double 实际上不包含任何分数或小数 我主要关心的是浮点数的性质 我想到的方法 以及我通过谷歌找到的方法 基本上遵循以
  • Selenium 和 TestNG 同时使用“dependsOn”和“priority =”问题

    我正在努力在 GUI 自动化测试中实现更好的工作流程控制 我首先从dependsOn开始 但很快发现缺点是如果一个测试失败 则套件的整个其余部分都不会运行 所以我改用 priority 但看到了意外的行为 一个例子 Test priorit
  • Java Junit 测试 HTTP POST 请求

    我需要测试以下方法而不改变方法本身 该方法向服务器发出 POST 方法 但我需要制作一个独立于服务器的测试用例 在将其重定向到本地文件之前 我测试了类似的方法 但为此我将协议指定为文件 主机名指定为 localhost 端口指定为 1 我的
  • Spring HATEOAS 和 HAL:更改 _embedded 中的数组名称

    我正在尝试使用 Spring HATEOAS 构建符合 HAL 的 REST API 经过一番摆弄后我终于开始工作了mostly正如预期的那样 示例 输出现在看起来像这样 links self href http localhost 808
  • 对对象集合进行排序[重复]

    这个问题在这里已经有答案了 如果我有一个简单的字符串列表 List
  • 从 CLI 部署 Maven 项目?

    在 IDE 中构建并运行良好 cd home thufir NetBeansProjects HelloMaven JAVA HOME usr lib jvm java 8 openjdk amd64 home thufir local s
  • 如何让“循环”泛型在 Java 中工作?

    我在编译以下涉及一些泛型的代码时遇到错误 public abstract class State
  • 接口是否像对象一样对待?

    为什么下面的代码可以工作 interface I class A implements I public String toString return in a class B extends A public String toStrin
  • 获取 Future 对象的进度的能力

    参考 java util concurrent 包和 Future 接口 我注意到 除非我弄错了 只有 SwingWorker 实现类才能启动冗长的任务并能够查询进度 这就引出了以下问题 有没有办法在非 GUI 非 Swing 应用程序 映
  • 无法连接到docker中的elasticsearch容器

    我正在尝试使用 docker 的官方 elasticsearch 镜像 我遵循了本指南 https www elastic co guide en elasticsearch reference current docker html但是当
  • 开发者环境-如何调用/消费其他微服务

    背景 我的环境 Java Play2 MySql 我在 Play2 gt S1 S2 S3 上编写了 3 个无状态 Restful 微服务 S1 消耗来自 S2 和 S3 的数据 因此 当用户点击 S1 时 该服务会异步调用 S2 S3 合
  • Proguard 正在破坏我的清洁度。 Gson 和泛型

    我有一个从持久性加载信息的函数 我只是以一种非常简单的方式告诉它的类型 该类称为SharedPreferencesHelper kt所以它是一个真正的生活问题解决者 fun
  • 为什么不能在 if 语句中声明变量?

    以下 Java 代码无法编译 int a 0 if a 1 int b 0 if a 1 b 1 为什么 不能有任何代码路径导致程序将 1 分配给b无需先声明 我突然想到b的变量范围可能仅限于第一个if声明 但后来我不明白为什么 如果我实在
  • Firebase:用户注册后如何进行电话号码验证?

    所以我知道我可以使用电子邮件验证或电话号码验证 但我想做的是在用户注册或登录后进行电话号码验证 如何连接这两种身份验证方法 最后 Firebase中是否有一个函数可以检查用户是否通过电话号码验证 谢谢 即使用户已通过身份验证 您仍然可以使用
  • 从 InputStream 中删除换行符

    我喜欢从一个文件中删除所有换行符 对于 n 和 r n java io InputStream 在读取文件时 相应的方法如下所示 param target linkplain File return linkplain InputStrea
  • Java 中序列化的目的是什么?

    我读过很多关于序列化的文章 以及它如何如此美好和伟大 但没有一个论点足够令人信服 我想知道是否有人能真正告诉我通过序列化一个类我们真正可以实现什么 让我们先定义序列化 然后我们才能讨论它为什么如此有用 序列化只是将现有对象转换为字节数组 该

随机推荐

  • 项目常见属性

    项目常见属性 flex 项目占的份数 align self 控制子项自己在侧轴的排列方式 前面的align items 和 align content 是对所有子项应用相同的排列方式 而这个属性是对单个子项应用个性化的排列方式 order
  • YEARWEEK函数来得到本周的日期

    本文来说下如何使用YEARWEEK函数来得到本周的日期 文章目录 使用介绍 使用介绍 首先介绍一个函数 YEARWEEK date mode 主要说明一下后面的可选参数mode 这个参数就是指定一周里面哪一天是第一天 默认一周是从周日开始
  • 数据统计分析常用指标

    在进行数据分析时 经常会遇到一些分析指标或术语 这些术语是帮助我们打开思路 通过多个角度对数据进行深度解读 可以说是前人已经总结和使用的数据分析方法 下面是数据统计分析常用的指标或术语 1 平均数 一般指算术平均数 算术平均数是指 全部数据
  • MCS-51 串行口

    串行通讯的基本概念 通讯的基本方式 串行通讯与并行通讯 串行同步通讯 串行异步通讯 单工 半双工和全双工串行通讯 并行通讯 数据各位同时传送 串行通讯 数据一位一位顺序传送 串行异步通讯 按照事先约定好的速率收发数据 串行同步通讯 一种串行
  • vue简单的排序案例

    div div
  • Python三维点云实战:从入门到深度学习

    Python三维点云实战 从入门到深度学习 三维点云是现代计算机视觉和机器学习领域中一个非常重要的数据形式 具有广泛应用 本文将介绍如何在Python中使用Open3D这个开源库读取 可视化 处理和分割三维点云 此外 我们还将介绍如何使用P
  • uniapp 分页,分为scroll-view以及页面下拉刷新 onReachBottom两种情况

    1 包含在scroll view里的滚动分页
  • 我的编程之路~常用Python代码和函数分享

    在学习编程的过程中 我们会遇到大量的代码 函数和概念 为了能够更好地掌握和记忆这些内容 我通常会记录下来作为学习的参考 下面我来分享一些我常用的Python代码和函数 希望能给小伙伴们带来帮助 1 列表操作 创建列表 使用方括号 例如 li
  • SpringMVC集成Swagger2,初尝试和遇到的相关问题

    本文章更新页请至 http blog csdn net MikeLC7 article details 75088123 之前项目的接口文档都是手动编写Word文档来做 制作成本较高 并且在进行版本迭代的时候进行标注和说明不是很方便 后来发
  • 电池的安规认证(IEC/EN)和航空运输认证UN38.3

    IEC62133 EN62133认证标准 使用范围及介绍 可充电电池和电池组 碱性或其他非酸性电解质 密封便携式电池的安全要求 测试项目测试项目 连续低倍率充电 振动 高温模壳应力 高低温循环 反充电 镍电 外部 短路 自由跌落 机械冲击
  • H5页面,上下滑动翻页

    针对之前的版本 https blog csdn net qq 16494241 article details 78095575进行了升级修改 改用原生JS编写 之前的基于JQ 可设置页面内容元素内部滚动及滚动至顶部或最底部触发翻页效果 P
  • 海湾标准汉字码表查询_标准汉字码表

    A 安 1618 暗 1621 按 1620 案 1624 B 吧 1641 八 1643 白 1655 百 1657 班 1664 般 1667 板 1669 半 1675 办 1676 帮 1679 棒 1684 包 1692 薄 17
  • Oracle navicat新建表空间,用户

    第一次使用oracle 记录一下遇到的不少坑 新建表空间 1 点击其它 gt 表空间 gt 新建表空间 2 填好基本信息 然后点击保存 大小 物理路径 自动扩展on off以及大小 创建好表空间后 新建用户 1 第一次使用的话 首先重启数据
  • linux特殊权限位之setuid、setgid和sticky

    我们登陆到系统之后 创建一个普通文件或者目录的时候 会有一个默认的权限 普通文件是644 目录文件是755 想必大家都知道这个是由umask这个值决定的 我们可以直接执行umask命令查看 linux系统默认的umask值是0022 想改变
  • 组合预测模型

    组合预测模型 EMD KPCA LSTM EMD LSTM LSTM多输入单输出回归预测对比 Matlab程序 目录 组合预测模型 EMD KPCA LSTM EMD LSTM LSTM多输入单输出回归预测对比 Matlab程序 预测结果
  • 声音反卷积matlab,用MATLAB做反卷积

    关键词 反卷积 MATLAB fft 频移 分母中频谱零点 卷积核 代码如下 clear all clc h 1 1 1 1 要求 f 1 2 3 2 已知 g conv h f 已知 g h f 这里卷积结果g知道 f知道 f视作卷积核
  • 在idea中使用JaCoCo插件统计单元测试覆盖率

    在后台工程师开发完新代码交给QA进行测试时 软件测试人员一般都会要求后台开发对单元测试的覆盖率达到一定的标准 例如我们的标准是分支覆盖率达到50 以上 函数覆盖率达到50 以上 在idea中查看覆盖率挺简单的 idea中支持三种插件来查看覆
  • SpringCloud详解

    SpringCloud是一个基于SpringBoot的分布式系统开发框架 它能够帮助我们快速 稳定地构建分布式系统 本篇博客将对SpringCloud进行详细解析 介绍SpringCloud的主要组件和相关应用场景 同时提供代码示例以帮助读
  • Linux查看端口、进程情况及kill进程

    看端口 ps aux grep tomcat 发现并没有8080端口的Tomcat进程 使用命令 netstat apn 查看所有的进程和端口使用情况 发现下面的进程列表 其中最后一栏是PID Program name 发现8080端口被P
  • Response对象-响应字符数据

    Response响应数据 1 response将字符数据返回到浏览器 需要两步 通过response对象获取字符输出流PrintWriter writer resp getWriter 通过字符输出流写数据 writer writer aa