1.HttpServletResponse对象.
HttpServletResponse接口继承自ServletResponse接口,专门用来封装HTTP响应消息
Http响应消息: 响应行 , 响应头 , 响应体 三部分.
2.响应行: http协议,状态码.
状态码:(200-成功,302-请求重定向,404-找不到,500-内部服务器错误)
- setStatus(int status): 设置状态码. 1XX-3XX使用.
- sendError(int sc): 发送 错误信息状态码 4XX-5XX使用
- sendError(int code,String message): 可以添加提示说明的文本信息.
3.响应头:键值对(进行设置/修改)
- setHeader(String name, String value): 设置http协议响应头字段.
addHeader(String name, String value): 可以增加同名(不被覆盖)字段.- location: 重定向(两次请求,两次响应)
1.设置状态码(302)之后 , setHeader(“location”,“地址”)
2.response.sendRedirect(“地址”) ; // 简化了第一种方式.- refresh: 定时刷新.
setHeader(“refresh”,"3(秒),url=“地址”) //会跳转但页面不会显示倒计时.
JS中的使用: location.href=“地址”; //可以显示倒计时.
4.响应体:(以IO流传递大量数据)
getOutputStream( ).getBytes( ): 字节(二进制)输出流. 可以响应任意类型.
getWriter( ).print( ); 字符输出流. 只能响应字符串.
5.response解决中文乱码问题
第一种方式:
response.setCharacterEncoding(“utf-8”); // 设置HttpServletResponse使用u8编码.
response.setHeader(“Content-Type”,“text/html;charset=utf-8”): // 设置浏览器解码
第二种方式: (简洁)
// 底层调用了setCharacterEncoding()方法.
response.setContentType(“text/html; charset=utf-8”);
1.重定向(location)案例:
DaGeServlet.java
@WebServlet("/jieqian")
public class DaGeServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 设置编码格式 - 解决中文乱码问题.
response.setContentType("text/html; charset=utf-8");
System.out.println("你曰:大哥借我5块钱吧,忘带钱包了.");
System.out.println("我曰:我也没带,找那个小姐姐去借吧.");
/* 两次请求 , 两次响应.
// 第一种方式: 设置状态吗为302 ,
response.setStatus(302);
// 使用location方法 , 设置重定向的地址.
response.setHeader("location","http://localhost/day27_response/xiaojiejie");
*/
/*
第二种方式: sendRedirect(); 简化了第一种方式.
*/
response.sendRedirect("http://localhost/day27_response/xiaojiejie");
}
}
XJJServlet.java
@WebServlet("/xiaojiejie")
public class XJJServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 设置编码格式 - 解决中文乱码问题.
response.setContentType("text/html; charset=utf-8");
System.out.println("你曰:小姐姐 , 借我5块钱吧");
response.getWriter().print("<h1 style='color=red; text-align=center; '>给你5块钱 , 拿去先用吧.</h1>");
}
}
2.使用JS完成页面秒数的刷新并跳转.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>页面自动刷新</title>
</head>
<body>
<span id="num">5</span>秒之后自动跳转到<a href="www.baidu.com">百度</a>
<script type="text/javascript">
var num = document.getElementById("num");
var count = 5;
setInterval(function () {
count--;
if(count==0){
// 要跳转到路径地址.
location.href = "www.baidu.com";
}
num.innerHTML = count;
},1000)
</script>
</body>
</html>