首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >JavaWeb后端入门7—Response对象

JavaWeb后端入门7—Response对象

作者头像
用户6948990
发布2025-04-03 20:51:52
发布2025-04-03 20:51:52
17400
代码可运行
举报
文章被收录于专栏:wuterwuter
运行总次数:0
代码可运行

1. Response对象概述

  • 什么是Response

开发的软件是B/S结构的软件,可以通过浏览器访问服务器的软件。从浏览器输入一个地址访问服务器(将这个过程称为是请求)。服务器接收到请求,需要进行处理,处理以后需要将处理结果显示回浏览器端(将这个过程称为是响应)。

2. Response对象的API

2.1 关于响应头

set开头的方法:针对一个key对应一个value的情况

代码语言:javascript
代码运行次数:0
运行
复制
setHeader(String name, String value) 
setDateHeader(String name, long date) 
setIntHeader(String name, int value)
set开头的方法:针对一个key对应一个value的情况

add开头的方法:针对一个key对应多个value的方法

代码语言:javascript
代码运行次数:0
运行
复制
addHeader(String name, String value) 
addIntHeader(String name, int value) 
addDateHeader(String name, long date) 
add开头的方法:针对一个key对应多个value的方法

2.2 关于响应行

代码语言:javascript
代码运行次数:0
运行
复制
setStatus:设置相应的状态码 200 302 304 404 500

2.3 关于响应体

代码语言:javascript
代码运行次数:0
运行
复制
getWriter()
getOutputStream()

2.4 其他API

代码语言:javascript
代码运行次数:0
运行
复制
setRedirect:设置重定向
setContentType:设置浏览器打开时的字符集
setCharacterEncoding:设置相应的字符流的缓冲区字符集
addcookie:

2. 代码演示

2.1 完成重定向

两种方法

代码语言:javascript
代码运行次数:0
运行
复制
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		/**
		 * 重定向方法1:状态码+Location
		 * */
		//设置状态码
		response.setStatus(302);
		//设置相应头
		response.setHeader("Location", "/web01/ResponseDemo2");
		response.setHeader("Location", "https://www.baidu.com");
		/**
		 * 重定向方法2:sendRedirect
		 * */
		response.sendRedirect("https://www.baidu.com");
}

2.2 定时刷新

代码语言:javascript
代码运行次数:0
运行
复制
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//定时刷新
		response.setContentType("text/html;charset=UTF-8");
		response.getWriter().println("5秒后页面跳转");
		response.setHeader("Refresh", "5;url=/web01/ResponseDemo2");
}

2.3 用JS完成读秒操作

代码语言:javascript
代码运行次数:0
运行
复制
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta http-equiv="Refresh" content="5;url=/web01/response/demo2.html">
<title>demo1</title>
<script type="text/javascript">
	var i = 5;
	function load() {
		window.setInterval("changeSeconds()",1000);
	}
	function changeSeconds() {
		i--;
		document.getElementById("span1").innerHTML=i;
	}
</script>
</head>
<body onload="load()">
<h1>demo1.html</h1>
<h3>页面将在<span id="span1">5</span>秒后跳转到demo2.html</h3>
</body>

</html>

3. Response对象响应的中文乱码问题处理

3.1 Response向页面响应中文

  • 使用字节流getOutputStream
代码语言:javascript
代码运行次数:0
运行
复制
//使用字节流的方式输出中文
ServletOutputStream outputStream = response.getOutputStream();
//设置浏览器默认打开的时候采用的字符集
response.setHeader("Content-Type", "text/html;charset=UTF-8");
//设置中文转成字节数组字符集编码
outputStream.write("为什么是乱码鸭".getBytes("UTF-8"));
  • 使用字符流 getWriter()

getWriter()一定会产生乱码,因为字符流是有缓冲区的,response在老外设计时默认的缓冲区编码是iso-8859-1,这个编码根本就不支持中文。

解决:设置response获得字符流缓冲区的编码和浏览器默认打开时候采用的字符集一致

代码语言:javascript
代码运行次数:0
运行
复制
//设置浏览器默认打开的时候的字符集
response.setHeader("Content-Type", "text/html;charset=UTF-8");
//设置response获得字符流缓冲区的编码
response.setCharacterEncoding("UTF-8");
//产生乱码
response.getWriter().println("给我输出没有乱码的中文!");

如果采用字符流向页面相应中文,有一个简化方法:

代码语言:javascript
代码运行次数:0
运行
复制
//设置setContentType
response.setContentType("text/HTML;charset=UTF-8");

//产生乱码
response.getWriter().println("给我输出没有乱码的中文!");

4. 文件下载(之后补充)

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-04-16 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. Response对象概述
  • 2. Response对象的API
    • 2.1 关于响应头
    • 2.2 关于响应行
    • 2.3 关于响应体
    • 2.4 其他API
  • 2. 代码演示
    • 2.1 完成重定向
    • 2.2 定时刷新
    • 2.3 用JS完成读秒操作
  • 3. Response对象响应的中文乱码问题处理
    • 3.1 Response向页面响应中文
  • 4. 文件下载(之后补充)
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档