HttpServletResponse代表的是一个HTTP请求对应的响应。
在这一篇文章当中,已经提到了HTTP响应是由哪几部分组成的:
【网络原理7】认识HTTP_革凡成圣211的博客-CSDN博客HTTP抓包,Fiddler的使用https://blog.csdn.net/weixin_56738054/article/details/129148515?spm=1001.2014.3001.5502
第一部分:HTTP响应行(包含HTTP版本、状态码、对于状态码的简单描述);
第二部分:HTTP报头(多组键值对);
第三部分:HTTP响应体(body)。
目录
void setStatus(int snc)
resp.setHeader(k,v)和resp.addHeader(k,v)
void setContentType(String type)
如何让浏览器自动刷新(每隔一段时间就刷新一下)
void setCharacterEncoding(字符集编码)
void sendRedirect(跳转的URL);
void setStatus(int snc)
这一个方法用于设置响应的状态码:常见的状态码有200/400等等。
resp.setStatus(400);
打开开发者工具,可以看到一个400的响应码:
需要注意的是,通过这个方法设置的状态码并不影响浏览器的对于body的响应。
resp.setHeader(k,v)和resp.addHeader(k,v)
在前面的文章当中,我们也提到了:HTTP的响应头是由多组键值对组成的。
以上两个方法,都是在HTTP响应头当中设置新的响应头的方法。
但是,也是有不同的:
对于resp.setHeader(k,v),将会设置一个带有给定名称的值的header。如果已经有一个键了,那么这个值就会覆盖掉原来的值。
对于resp.addHeader(k1,v1),如果已经有旧的键值对(k1,v0)和新增的一致(k1,v1)。那么将会新增一个键值对(k1,v1)
//会覆盖掉旧的key对应的value
resp.setHeader("hello","hello1");
//不会覆盖掉旧的key,而是新增一个key,value结构的键值对
resp.addHeader("hello2","hello2");
可以看到,此时新增的内容就可以通过Fidller抓包看到了:
void setContentType(String type)
前面我们也提到了,HTTP响应头当中有一个属性叫做:Content-Type
那么,resp就可以通过这个方法来设置响应头的格式:如:
resp.setContentType("text/html");
text/html、text/json、text/json等等的格式。
如何让浏览器自动刷新(每隔一段时间就刷新一下)
需要在HTTP响应头当中设置一个属性:Refresh,并且指定隔多久刷新一次。
//设置响应字符集
resp.setCharacterEncoding("utf-8");
//在HTTP响应头当中新增一个属性:Refresh,并且设置每隔1秒刷新一次
resp.setHeader("Refresh","1");
resp.getWriter().write("时间戳:"+System.currentTimeMillis());
运行效果(每隔1秒刷新一次)
void setCharacterEncoding(字符集编码)
设置被发送到客户端的响应的字符编码
resp.setCharacterEncoding("utf-8");
void sendRedirect(跳转的URL);
描述的是重定向到哪一个URL。
注意事项:
这一个URL必须是完整的URL,不可以是/servlet3这样的。
重定向一般都是get请求
resp.sendRedirect("http://localhost:8080/ServletLearning_war_exploded/servlet3");
当然,也可以直接设置resp.setHeader(Location,需要跳转的资源)来实现重定向。
resp.setHeader("Location","https://www.baidu.com");