response对象
response对象的主要作用是用于对客户端的请求进行回应,将WEB服务器处理后的结果发回给客户端。response对象属于javax.servlet.http.HttpServletResponse接口的实例,HttpServletResponse接口的定义如下:
public interface HttpServletResponse extends ServletResponse
response对象常用方法:
| 方法 | 类型 | 描述 |
1 | public void addCookie(Cookie cookie) | 普通 | 向客户端增加Cookie |
2 | public void setHeader(String name,String value) | 普通 | 设置回应的头信息 |
3 | public void sendRedirect(String location) throws IOException | 普通 | 页面跳转 |
客户端在进行请求的时候会发送许多额外的信息,那么这些就是头信息,服务器端也可以根据需要向客户端设置头信息,在所有的头信息的设置中,定时刷新页面的头信息使用的是最多的,直接使用setHeader()方法,将头信息名称设置为refresh,同时指定刷新的时间。
<%@ page language="java" contentType="text/html; charset=utf8" pageEncoding="utf8" %>
<%! int count=0; %>
<% response.setHeader("refresh", "2"); %>
visit time:<%=count++ %>
<%@ page language="java" contentType="text/html;charset=utf8" pageEncoding="utf8"%>
<% response.sendHeader("refresh","2;URL="hello.jsp") %>
页面跳转
在JSP中除了可以通过头信息的方式完成跳转,也可以使用response对象的sendRedirect()方法直接完成页面的跳转。
两种跳转的区别
- <jsp:forward>属于服务器端跳转,跳转之后地址栏的信息并不会有任何的改变,而response.sendRedirect()属于客户端跳转,跳转之后地址栏是会改变的,变为跳转之后的页面地址。
- 在使用request范围属性的时候,只有是服务器端跳转才能够将request属性保存到跳转页,而如果是客户端跳转,则无法进行属性的传递。
- 如果使用的是服务器端跳转的话,则执行到跳转语句之后会立刻进行跳转,如果使用的是客户端跳转,则是在整个页面执行完之后才执行跳转。
- Cookie是浏览器所提供的一种技术,这种技术让服务器端的程序能将一些只须保存在客户端,或者在客户端进行处理的数据,放在使用中本身的计算机,不须通过网络的传输,因而提高网页处理的效率,而且也能够减少服务器端的负载。但是由于Cookie是服务器端保存在客户端的信息,所以其安全性也是很差的。
- 在JSP中专门提供了javax.servlet.http.Cookie的操作类
Cookie定义的常用操作方法
| 方法 | 类型 | 描述 |
1 | public Cookie(String name,String value) | 构造 | 实例化Cookie对象,同时设置名字和内容 |
2 | public String getName() | 普通 | 取得Cookie的名字 |
3 | public String getValue() | 普通 | 取得Cookie的内容 |
4 | public void setMaxAge(int expiry) | 普通 | 设置Cookie的保存时间,以秒为单位 |
设置Cookie
所有的Cookie是由服务器端设置到客户端上去的,所以要向客户端增加Cookie的话,必须使用response对象的以下方法:
public void addCookie(Cookie cookie)
设置cookie
/*setCookie.jsp*/
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%>
<% Cookie cookie=new Cookie("name","zhang");
response.addCookie(cookie);
%>
<jsp:forward page="getCookie.jsp"></jsp:forward>
/*getCookie.jsp*/
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1" %>
<% Cookie[] cookies=request.getCookies();
for(int i=0;i<cookies.length;i++){ %>
name=<%=cookies[i].getValue() %>
<% }%>
response表示的是服务器端对客户端的回应
可以通过setHeader()方法设置一个响应的头信息
通过response可以向客户端设置cookie,通过request可以取得客户端设置的全部Cookie
response对象属于的sendRedirect()方法属于客户端跳转,而<jsp:forward>属于服务器端跳转