Response响应方法详解

Response:

  • 响应:服务器把请求的处理结果告知客户端。在B/S架构中,响应就是把结果带回浏览器。
  • 响应对象:在项目中用于发送响应的对象
常用状态码:
状态码说明
200执行成功
302它和307一样,都是用于重定向的状态码。只是307目前已不再使用
304请求资源未改变,使用缓存。
400请求错误。最常见的就是请求参数有问题
404请求资源未找到
405请求方式不被支持
500服务器运行内部错误

状态码首位含义:

状态码说明
1xx消息
2xx成功
3xx重定向
4xx客户端错误
5xx服务器错误
字节流响应消息&乱码:
返回值方法名说明
ServletOutputStreamgetOutputStream()获取响应字节输出流对象
voidsetContentType(“text/html;charset=UTF-8”)设置响应内容类型,解决中文乱码

演示:

@WebServlet("/ResponseDemo01")
public class ResponseDemo01 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {// setContentType:相当于告诉浏览器你要使用这个编码才能解析我的内容resp.setContentType("text/html;charset=UTF-8");// getOutputStream()	获取响应字节输出流对象ServletOutputStream ops = resp.getOutputStream();// 定义消息String s = "测试会不会乱码";/**为什么有的时候没有处理乱码,但是浏览器不会乱码getBytes:在字符串转成字节的时候,如果没有传递参数(编码格式),它会根据系统的编码转换,这里的系统是电脑的,比如Windows的默认就是GBK那就会转换成GBK格式的,如果浏览器也是GBK就不会乱码,但是如果浏览器是其它的就会乱码*/ops.write(s.getBytes("UTF-8"));}
}
字符流响应消息:
返回值方法名说明
PrintWritergetWriter()获取响应字符输出流对象
voidsetContentType(“text/html;charset=UTF-8”)设置响应内容类型,解决中文乱码

演示:

@WebServlet("/ResponseDemo02")
public class ResponseDemo02 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {resp.setContentType("text/html;charset=UTF-8");// getWriter()	获取响应字符输出流对象PrintWriter printWriter = resp.getWriter();String s = "我也呵呵了";printWriter.write(s);}
}
响应图片:

步骤:

  1. 创建字节输入流对象,关联读取的图片路径
  2. 通过响应对象获取字节输出流对象
  3. 循环读取和写出图片
@WebServlet("/ResponseDemo03")
public class ResponseDemo03 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {// 1. 创建字节输入流对象,关联读取的图片路径BufferedInputStream bis = new BufferedInputStream(new FileInputStream("/Users/itzhuzhu/Desktop/WechatIMG27.JPG"));// 2. 通过响应对象获取字节输出流对象ServletOutputStream os = resp.getOutputStream();// 3. 循环读取和写出图片byte[] bytes = new byte[1024];int len;while ((len = bis.read(bytes)) != -1) {os.write(bytes, 0, len);}}
}
设置缓存:

对于不经常变化的数据,可以合理设置缓存时间,避免浏览器频繁请求服务器,可以提高效率

返回值方法名说明
voidsetDateHeader(String name,long time)设置消息头添加缓存

演示:

如果开启了缓存是可以在电脑中找到这个缓存文件的,可以看到上次访问时间和过期时间,到了过期时间才会访问服务器

@WebServlet("/ResponseDemo04")
public class ResponseDemo04 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {String s = "我是测试缓存内容";// 设置换缓存1小时,只有第一次请求会请求服务端,后面的请求是走的缓存resp.setDateHeader("Expires", System.currentTimeMillis() + 1 * 60 * 60 * 1000);// 设置编码格式resp.setContentType("text/html;charset=UTF-8");// 写出数据resp.getWriter().write(s);System.out.println("再次访问会走我吗");}
}
定时刷新:

过了指定时间,页面自动跳转

返回值方法名说明
voidsetHeader(String name,String value)设置消息头定时刷新

演示:

@WebServlet("/ResponseDemo05")
public class ResponseDemo05 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {String s = "计算机被黑客窃取,正在读取数据,读取完毕自动跳转";resp.setContentType("text/html; charset=UTF-8");// 写数据resp.getWriter().write(s);// 定时刷新resp.setHeader("Refresh", "3;URL=/regist.html");}
}
请求重定向:

请求重定向:客户端的一次请求到达后,发现要借助其他Servlet实现功能

特点:

  • 浏览器地址会改变
  • 两次请求
  • 请求域对象中不能共享数据
  • 可以重定向到其他服务器

实现原理:

  • 设置响应状态码302
  • 设置响应的资源路径(响应消息头指定响应到哪里)

重定向和请求转发用哪一个?

  • 需要共享数据就转发,不需要就重定向

重定向方法:

返回值方法名说明
voidsendRedirect(String name)设置重定向

演示:

@WebServlet("/ResponseDemo06")
public class ResponseDemo06 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println("ResponseDemo06执行了");// 设置共享数据req.setAttribute("username","itzhuzhu");// 设置重定向resp.sendRedirect(req.getContextPath()+"/servletDemo15");}
@WebServlet("/ResponseDemo07")
public class ResponseDemo07 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println("ResponseDemo07执行了");// 获取共享数据,这里会丢失共享数据System.out.println(req.getAttribute("username"));}
文件下载:
@WebServlet("/ResponseDemo08")
public class ResponseDemo08 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {// 1. 获取文件路径String realPath = getServletContext().getRealPath("/img/首页.png");// 2. 把文件读到字节输入流中BufferedInputStream bis = new BufferedInputStream(new FileInputStream(realPath));// 3. 告知浏览器,以下载的方式打开(告知浏览器下载文件的MIME类型)/**Content-type:消息头名称,支持的类型application/octet-stream:消息头参数,应用的类型为字节流Content-Disposition:消息头名称,处理的形式attachment;filename=首页.jpg:消息头参数,以附件的形式,指定下载文件名称*/resp.setHeader("Content-type", "application/octet-stream");resp.setHeader("Content-Disposition", "attachment;filename=首页.jpg");// 4. 使用响应对象的字节输出流输出到浏览器上ServletOutputStream os = resp.getOutputStream();byte[] bytes = new byte[1024];int len;while ((len = bis.read(bytes)) != -1) {os.write(bytes, 0, len);}bis.close();}
}

Response方法详解:

在这里插入图片描述

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

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

相关文章

perl6 HTTP::UserAgent (2)

http://www.cnblogs.com/perl6/p/6911166.html 之前这里有个小小例子, 这里只要是总结一下。 HTTP::UserAgent包含了以下模块: ---------------------------------------------------------------------------------------------- Module |Path-Nam…

Java会话技术

会话技术: 会话指的是客户端浏览器和服务端之间的度偶次请求和响应当打开浏览器,访问网站地址后,会话开始,当关闭浏览器(或者到了过期时间),会话结束。就像打电话只要不挂电话就是一次会话。 会…

【调用IP宏文件进行仿真】modelsim仿真时出现 Instantiation of 'xxx' failed. The design unit was not found....

出现错误类似:modelsim 仿真fifo时出现 Error: (vsim-3033) E:/Programs/ModelSim/fifo/ps2_fifo.v(75): Instantiation of scfifo failed. The design unit was not found.仿真波形不对,调用的ip核没有输出(白色虚线)等情况&…

Java Server Page

JSP JSP全称是Java Server Page,基于Java和Servlet一样是sun公司推出的一套开发动态web资源的技术,称为JSP/Servlet规范。JSP的本质其实就是一个Servlet。jsp是一种动态网页技术标准,jsp部署在服务器上可以处理客户端的请求,并根据…

HDFS概述(2)————Block块大小设置

参考:HDFS概述(4)————HDFS权限HDFS概述(3)————HDFS FederationHDFS概述(2)————Block块大小设置HDFS概述(1)————HDFS架构问题Q: 一个常被问到的一个问题是…

PTA 01-复杂度2 Maximum Subsequence Sum (25分)

题目地址 https://pta.patest.cn/pta/test/16/exam/4/question/663 5-1 Maximum Subsequence Sum (25分) Given a sequence of KK integers { N_1N​1​​, N_2N​2​​, ..., N_KN​K​​ }. A continuous subsequence is defined to be { N_iN​i​​, N_{i1}N​i1​​, ..…

Listener

观察者设计模式: 它是事件驱动的一种体现形式。就好比在做什么事情的时候被人盯着。当对应做到某件事时,触发事件。 观察者模式通常由以下三部分组成: ​1. 事件源:触发事件的对象。 2.​ 事件:触发的动作,…

BZOJ 1083: [SCOI2005]繁忙的都市【Kruscal最小生成树裸题】

1083: [SCOI2005]繁忙的都市 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 2925 Solved: 1927[Submit][Status][Discuss]Description 城市C是一个非常繁忙的大都市,城市中的道路十分的拥挤,于是市长决定对其中的道路进行改造。城市C的道 路是这样分…

Mysql介绍与安装LinuxmacOS系统

数据库: 用于存储和管理数据的仓库 数据库的好处: 可以持久化存储数据方便存储和管理数据使用了统一的方式操作数据库 – SQL 常见的数据库: Oracle:收费的大型数据库,Oracle公司的产品。Oracle收购SUN公司&#xff0c…

如何查看Laravel版本号的三种方法

1.PHP artisan --version 2.vim vendor/laravel/framework/src/Illuminate/Foundation/Application.php 3:可以写在路由里 5.4版本的路由文件夹是routes。我们可以写在routes\web.php里。 Route::get(laravel-version, function(){ $laravel app(); return…

最全的Mysql数据类型

数值类型: 类型大小范围(有符号)范围(无符号)用途Bit1bytes-128 ~ 120 ~ 255小整数值TINYINT1 byte-128 ~ 1270 ~ 255小整数值SMALLINT2 bytes-32768 ~ 327670 ~ 65535大整数值MEDIUMINT3 bytes-8388608 ~ 83886070 ~…

02_反汇编_反编译

实际上安卓的应用都是zip包,只不过把zip扩展名修改了,修改成了APK.所以如果你想拿到它的图片的话,实际上特别简单,你就把它这个.apk换成.zip.换成.zip之后这里的图片资源就都可以拿到了. 有些公司可能美工的水平或者美工的人数比较少,项目还比较急&#…

SQL约束语法

约束 作用:对表中的数据进行限定,保证数据的正确性、有效性、完整性! 约束分类: 约束说明PRIMARY KEY主键约束PRIMARY KEY AUTO_INCREMENT主键、自动增长UNIQUE唯一约束NOT NULL非空约束FOREIGN KEY外键约束FOREIGN KEY ON UPDAT…

hdu 2489 Minimal Ratio Tree

https://vjudge.net/problem/HDU-2489 题意:求一个完全图的最优比率生成树,点的个数由题给出。最优比率生成树是边的权值之和与点的权值之和的比值最小的生成树。 思路:一开始用dfs枚举搜索每一种情况,t了,枚举的情况太…

SQL多表关联

多表关联: 多张数据表之间是可以有一定的关联关系,这种关联关系可以通过外键约束实现 多表的分类: 一对一一对多多对多 一对一: 一张表对应一张表 适用场景举例: 人和身份证。一个人只能有一个身份证,一个身…

背包问题 codevs2210 数字组合

数字组合 题目描述 Description在N个数中找出其和为M的若干个数。先读入正整数N和M, 再读入N个正数(可以有相同的数字,每个数字均在1000以内), 在这N个数中找出若干个数, 使它们的和是M, 把满足…

SQL多表查询

多表查询分类: 内连接查询 显式内连接隐式内连接 外连接查询 左外连接右外连接 子查询自关联查询 准备数据: -- 创建user表 CREATE TABLE USER(id INT PRIMARY KEY AUTO_INCREMENT, -- 用户idNAME VARCHAR(20), -- 用户姓名age INT …

HTTP协议整理

一、概念 1.HTTP协议:即超文本传输协议(Hypertext transfer protocol)。是一种详细规定了浏览器和Web服务器之间互相通信的规则,它允许将超文本标记语言(HTML)文档从Web服务器传送到客户端的浏览器。它可以使浏览器更加高效,使网络传输减少。…

【DDD】--好文收藏

索引: 目录索引 发现一批好文,完整系列,攒~~ 随笔分类 - DDD - 『圣杰』 DDD理论学习系列(1)-- 通用语言 笔记: 通用语言: a) 简单,便于理解、传播。 b) 需要通用,能够准…

SQL存储过程、存储函数

概念: 存储过程和函数: 存储过程和函数是事先经过编译并存储在数据库中的一SQL语句的集合 存储过程和函数的好处: 存储过程和函数可以重复使用,减轻开发人员的工作量。类似于java中方法可以多次调用减少网络流量,存储…