response 代表服务器对客户端的响应.大部分时候,程序无须使用response来响应客户端请求.,因为还有一个更简单的响应对象 - out,它代表页面输出流,直接使用out生成响应更简单.
out是JspWriter的实例,jspWriter是writer的子类,writer是字符流,无法输出非字符内容.比如要在jsp页面中动态生成一幅位图,或者输出一个PDF文档,,使用out无法响应完成,此时必须使用response作为响应输出.
response使用的情况:
1.response响应生成非字符响应.
2.重定向
重定向是response的另外一个用处,与forward不同的是,重定向会丢失所有的请求参数和request范围的属性,因为重定向将生成第二次请求,与前一次请求不在同一个request范围内,所以发送一次请求的请求参数和request范围的属性全部消失.
HttpServletResponse提供了一个senRedirect(String path)方法,该方法用于重定向到path资源,即重新向path资源发送请求.
doRedirect.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
response.sendRedirect("helloWorld.jsp");
%>
</body>
</html>
重定向后地址栏改变,参数和参数值已经丢失,request范围属性失效
转发forword 重定向(redirect)
forward的目标页面可以访问原请求 redirect的目标的页面不
的请求参数,依然是同一请求,所有的 能访问原请求的请求参数
请求参数,request范围属性全部存在 因为是第二次请求,参数,
request范围属性会消失
地址栏里请求的URL不会改变 地址栏改为重定向的目标URL