JavaWeb后端入门7—Response对象

1. Response对象概述什么是Response开发的软件是BS结构的软件,可以通过浏览器访问服务器的软件。从浏览器输入一个地址访问服务器(将这个过程称为是请求)。服务器接收到请求,需要进行处理,处理以后需要将处理结果显示回浏览器端(

JavaWeb后端入门7—Response对象

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", ";);
		/**
		 * 重定向方法2:sendRedirect
		 * */
		response.sendRedirect(";);
}

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 删除对象后端浏览器入门response

发布者:admin,转转请注明出处:http://www.yc00.com/web/1747998650a4717065.html

相关推荐

  • JavaWeb后端入门7—Response对象

    1. Response对象概述什么是Response开发的软件是BS结构的软件,可以通过浏览器访问服务器的软件。从浏览器输入一个地址访问服务器(将这个过程称为是请求)。服务器接收到请求,需要进行处理,处理以后需要将处理结果显示回浏览器端(

    6小时前
    10

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信