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
//使用字节流的方式输出中文
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
评论列表(0条)