HttpServletResponse学习笔记

1.HttpServletResponse概述

创建Servlet时会覆盖service()方法,或doGet()/doPost(),这些方法都有两个参数,一个为代表请求的request和代表响应response。
service方法中的response的类型是ServletResponse,而doGet/doPost方法的response的类型是HttpServletResponse,HttpServletResponse是ServletResponse的子接口,功能和方法更加强大。

2.response的运行流程

在这里插入图片描述

Http响应

请求行
    请求网址:http://localhost:8080/niuability/index.html?name=%E5%8E%BB%E5%BE%AE%E8%BD%AF
    请求方法:GET
    远程地址:[::1]:8080
    状态码:
    200
    版本:HTTP/1.1
    Referrer 政策:no-referrer-when-downgrade

请求头
    Host: localhost:8080
    User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:76.0) Gecko/20100101 Firefox/76.0
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
    Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
    Accept-Encoding: gzip, deflate
    Connection: keep-alive
    Referer: http://localhost:8080/niuability/index.html?name=%E5%92%8C%E5%93%A6%E5%93%A6%E9%A2%9D
    Upgrade-Insecure-Requests: 1

响应行
	HTTP/1.1 200 

响应头
	Accept-Ranges: bytes
	ETag: W/"262-1589972370367"
	Last-Modified: Wed, 20 May 2020 10:59:30 GMT
	Content-Type: text/html
	Content-Length: 262
	Date: Wed, 20 May 2020 11:04:09 GMT
	Keep-Alive: timeout=20
	Connection: keep-alive

响应体
	<!DOCTYPE html>
	<html>
	<head>
	<meta charset="UTF-8">
	<title>Insert title here</title>
	</head>
	<body>
		<form action="helloTest" method="post">
			<input type="text" name="username"></br>
			<input type="submit" value="提交">
		</form>
		
	</body>
	</html>

设置状态码
response.setStatus(int sc);
response.setStatus(302);
response.setStatus(404);

设置响应头
addHeader(String name, String value);
addIntHeader(String name, int value);
addDateHeader(String name, long date);

setHeader(String name, String value);
setDateHeader(String name, long date);
setIntHeader(String name, int value);

setXXX和addXXX区别

重定向

<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
	<script type="text/javascript">
		window.onload= function(){
			var time = 5;
			var secondEle = document.getElementById("second");
			var timer = setInterval(function(){
				secondEle.innerHTML = time;
				time --;
				if(time == 0){
					clearInterval(timer);
					location.href="http://www.niuability.cn"
				}
			},1000)
		}
	</script>

</head>
<body>
	恭喜注册成功<span style="color:red" id="second">5</span>秒后点击跳转 
</body>
</html>

设置响应体

getWriter();
setCharacterEncoding();

1)响应体设置文本
PrintWriter getWriter();获得字符流,通过字符流的write(String s)方法可以将字符串设置到response反冲区中,随后Tomcat会将response 缓冲区的内容组装成http响应返回给浏览器
在这里插入图片描述
关于设置中文乱码问题
response缓冲区默认编码是iso8859-1,此码表中没有中文,可以通过response的,setCharacterEncoding(String charset)设置 response的 编码
在这里插入图片描述
response.setCharacterEncoding(“utf-8”);
//通过content-Type告知客户端使用何种码表
response.setHeader(“Content-Type”, “text/html; charset=utf-8”);
response.setContextType(“text/html;charset=utf-8”);

响应头设置字节

ServletOutputStream getOutputStream();
获得字节流,通过该字节流的write(byte [] bytes)可以向缓冲区中写入字节,在由Tomcat服务器将字节内容组成Http响应返回

完成文件下载

1)什么情况下会下载
浏览器不能解析的文件就下载
2)什么情况下需要在服务器端编写文件下载的代码
理论上,浏览器可以解析的代码需要编写文件下载

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值