二.Response对象:对客户的请求做出动态的响应,向客户端发送数据。飞飞Asp,技术乐园
1.动态响应contenType属性
当一个用户访问一个jsp页面时,如果该页面用page指令设置页面的contentType属性是text/html,那么jsp引擎将按照这种属性值作出反映。如果要动态改变这个属性值来响应客户,就需要使用response对象的setContentType(String s)方法来改变contentType的属性值。飞飞Asp技术乐园
格式:response.setContentType(String s)
参数s可取text/html,, application/x-msexcel, application/msword等。 例如:
response1.jsp
<%@ page c %>
<HTML>
<BODY bgcolor=cyan><Font size=1 >
<P>我正在学习response对象的
<BR>setContentType方法
<P>将当前页面保存为word文档吗?
<FORM action="" method="get" name=form>
<INPUT TYPE="submit" value="yes" name="submit">
</FORM>
<% String str=request.getParameter("submit");
if(str==null)
{str="";
}
if(str.equals("yes"))
{response.setContentType("application/msword;charset=GB2312");
}
%>
</FONT>
</BODY>
</HTML>
2.Response重定向:在某些情况下,当响应客户时,需要将客户重新引导至另一个页面,可以使用response的sendRedirect(URL)方法实现客户的重定向。例如:response2.jsp:
<html>
<head><title>Where to go</title></head>
<body>
<%
String address = request.getParameter("where");
if(address!=null){
if(address.equals("ChinaWebber"))
response.sendRedirect("http://www.ChinaWebber.com");
else if(address.equals("Yahoo"))
response.sendRedirect("http://www.yahoo.com");
else if(address.equals("Sun"))
response.sendRedirect("http://www.sun.com飞飞Asp!技术乐园");
}
%>
<b>Please select:</b><br>
<form action="goto.jsp" method="GET">
<select name="where">
<option value="ChinaWebber" selected>go to ChinaWebber
<option value="Sun" > go to Sun
<option value="Microsoft" > go to Microsoft
</select>
<input type="submit" value="go">
</form>
response对象:服务器端回应客户端的请求
- 所属接口:javax.servlet.http.HttpServletResponse,其父接口是ServletResponse,而且ServletResponse也现在只有唯一一个HttpServletResponse子接口,主要原因是,现在的J2EE的WEB程序主要以HTTP协议为主要通讯协议。
response对象的功能:
- 设置头信息:response.setHeader("头信息内容","头信息参数");
- 常用的刷新refresh,例如:response.setHeader("refresh","1");
- 几秒后跳转:response.setHeader("refresh","2:URL=XXX");
- 重定向--response跳转:response.sendRedirect("跳转地址");
- 此语句执行后,页面地址也变为跳转后的地址
- 面试中常见问题:两种跳转的区别:
- :
- 地址栏不改变--属于服务器端跳转
- 执行到跳转语句后无条件立刻跳转--之后的代码将不再执行
- 注意:若使用forward跳转则一定要在跳转前释放掉全部资源;
- 使用forward时,request设置的属性(setAttribute)依然能保留到下一个页面
- 通过传递参数
- response.sendRedirect("跳转地址"):
- 地址栏改变--属于客户端跳转
- 页面的所有代码执行完毕之后再跳转
- 不能保存request属性,地址栏改变了,客户端跳转
- 通过对URL地址的重写传递参数
- 设置Cookie
- Cookie是服务器端保存在客户端的一组资源
- 通过Cookie实现保存密码或者多长时间无需再输入密码等功能
- 设置Cookie的方法:Public Void addCookie(Cookie cookie)
- Cookie是通过服务器端设置到客户端上去的--response
- 如果要在服务器端取得Cookie--request
- 在request对象中有Public Cookie[] getCookies()方法
- 在使用request对象取得全部Cookie时会出现JSESSIONID,表示唯一的客户端在服务器上的编号,这个值在客户端第一次访问服务器端之后设置
- 默认情况下Cookie只针对当前浏览器有效,如果需要长留在计算机上,可以设置Cookie的保存时间,通过设置Cookie最大保留时间方法:setMaxAge()