首页 > 其他分享 >[Response对象] 笔记

[Response对象] 笔记

时间:2023-04-01 10:16:16浏览次数:31  
标签:重定向 对象 writer request 笔记 response 响应 inputStream Response

response

用来设置响应数据

img

响应数据结构

  • 响应行 HTTP/1.1 200 OK

  • 响应头 Content-Type: text/html

  • 响应体 <h1>Hello World!</h1>

重定向(Redirect)

一种资源跳转方式

img

// 重定向
// 1. 设置响应状态码
response.setStatus(302);
// 2. 设置响应头
response.setHeader("Location", "/HelloServlet/resp2");

// 简化方式重定向 可替换1.2.两步
response.sendRedirect("/HelloServlet/resp2");

特点对比

重定向 转发
浏览器地址栏路径发生变化 浏览器地址栏路径不发生变化
可以重定向到任意位置的资源(服务器内部、外部均可) 只能转发到当前服务器的内部资源
两次请求,不能在多个资源使用request共享数据 一次请求,可以在转发的资源间使用request共享数据

路径问题

浏览器操作 服务端操作
浏览器和服务器之间如:重定向 服务器内部发生如:转发
需要添加虚拟目录 不需要加虚拟目录
<a href="www.baidu.com"\/> request.getRequestDispatcher("/sendtarget");

但是问题出现了,写死的路径会导致程序耦合性增加

所以要动态获取虚拟目录

String contextPath = request.getContextPath();
response.sendRedirect(contextPath + "/resp2");

响应字符数据

// 1. 获取字符输出流
PrintWriter writer = response.getWriter();
writer.write("Use writer!");
// 2. 设置头部信息 这里 content-type 是响应数据的类型
response.setHeader("content-type", "text/html");
writer.write("<a href=\"http:\\\\www.baidu.com\">百度</a>");
// 注:响应输出流不需要手动关闭

中文乱码

默认解码为 ISO-8859-1

在使用流之前设置编码为 utf-8 即可

response.setContentType("text/html;charset=utf-8");

响应字节数据

使用工具类

<dependency>
    <groupId>commons-io</groupId>
    <artifactId>commons-io</artifactId>
    <version>2.6</version>
</dependency>
// 响应字节流
// 1. 读取文件
FileInputStream inputStream = new FileInputStream("C:\\pic1.png");

// 2. 获取response字节输出流
ServletOutputStream outputStream = response.getOutputStream();

// 3. 进行流 copy
//        byte[] buffer = new byte[1024];
//        int len = 0;
//        while ((len = inputStream.read(buffer)) != -1) {
//            outputStream.write(buffer, 0, len);
//        }

// 3. 使用 commons-io 对流进行 copy 
IOUtils.copy(inputStream, outputStream);

inputStream.close();

标签:重定向,对象,writer,request,笔记,response,响应,inputStream,Response
From: https://www.cnblogs.com/libayu/p/17278125.html

相关文章

  • [Mybatis] 笔记
    一、入门使用步骤1.pom.xml添加相关依赖<dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.11</version></dependency><dependency><groupId>mysql</grou......
  • 机器学习随堂笔记(1)
    范数:  0范数:  它表示向量非零元素的个数。 1范数:  也就是麦哈顿距离 2范数:  也就是欧式距离内积(点积、点乘):外积:两个向量的外积,又叫向量积、叉乘等。外积的运算结果是一个向量而不是一个标量。两个向量的叉积与这两个向量组成的坐标平面垂直。 ......
  • 读SQL进阶教程笔记04_集合运算
    1. 集合论是SQL语言的根基1.1. UNION1.1.1. SQL-86标准1.2. NTERSECT和EXCEPT1.2.1. SQL-92标准1.3. 除法运算(DIVIDEBY)1.3.1. 没有被标准化2. 注意事项2.1. SQL能操作具有重复行的集合,可以通过可选项ALL来支持2.1.1. 不允许重复2.1.1.1. 直接使......
  • 三月读书笔记3
    阅读了《人月神话》贵族专制、民主政治和系统设计,画蛇添足,贯彻执行,为什么巴比伦塔会失败?这几章,对于《人月神话》这本书也有了更深的了解,这本书在宏观的大层面的角度看待软件工程的系统开发,没一句讲的具体知识,讲的全是一个项目的开发注意事项。首先,运用大教堂的成功,巴比伦塔的失败,......
  • 构建之法 读书笔记
    体会:书中举的四则运算的例子做深了以后可能还涉及一些相对比较复杂的算法,可是在现实中接触到的系统很多是业务驱动的系统,用户量可能不会超过2000,CRUD,业务复杂流程交给成熟的工作流系统去做了,CRUD是很简单的数据库表操作,数据库操作有现成的框架,前端有现成的框架,后端有现成的框架,程......
  • 读书笔记(三)
    构建之法这本书的好首先就在于这是一本全景式的图书,能让你更了解这个软件行业。可以让人从陌生变熟悉,所以这本书是不错的。其次,这是一本实践式的书,涵盖了科学软件开展的每个方面,不单单只是实践,理论的东西也很重要。我们中国大陆的教育工作者更接近实际,所以这本书就介绍了我们教育......
  • 读书笔记(二)
    体会:我大概听过两类企业,有一类是每个工程师就是一个螺丝钉,在自己的某个技术上发挥极致的能力,有一类是每个工程师类似一个"大杂烩"(这个比喻不知道恰当与否,就是表示工程师需要处理项目中各类技术方面的问题),前一类公司培养出来的工程师可能是强化自己现有的技术能力,而另外一类公司的......
  • 代码大全 阅读笔记03
    复杂数据类型恰当地对数据进行结构化,可以使程序更简单、更容易理解也更容易维护。可以用表来代替复杂的逻辑结构。当你被程序的复杂逻辑迷惑时,应考虑是否可用查寻表来简化程序。抽象数据类型是降低复杂性的有力武器。它使你可以分层编写程序,而且是从问题域,而不是程序语言细节来编......
  • 人月神话阅读笔记01
    由于该书所描述的内容比较庞杂,本人预计将分为三篇文章对于相关内容和感想进行阐述。作为开章第一篇,就先来说说为什么“人月”是“神话”。小学的时候我们都做过这样的应用题:“工厂需要加工一批零件,安排5名工人的话需要10小时完成,那么安排25名工人加工,多少小时可以完成”之类的。......
  • 构建之法读书笔记四
    第五章团队和流程5.2软件团队的模式主治医师模式、明星模式、社区模式、业余剧团模式、秘密团队、特工团队、交响乐团模式、爵士乐模式、功能团队模式、官僚模式5.3开发流程①写了再改模式②瀑布模型(WaterfallModel)是一个项目开发架构,开发过程是通过设计一系列阶段顺序......