1.response对象
response对象包含了服务器对客户的请求做出动态的响应,向客户端发送数据。jsp页面执行完成后,jsp引擎将页面产生的响应封装成response对象,然后发送到客户端一形成对客户端请求的响应。和request一样,request对象也由jsp引擎(容器)产生,可以使用response对象,提高的方法,对响应进行操作。
(1)设置响应类型与响应状态码方法
void setContentType(String contentType):设置响应MIME类型。
当一个用户访问一个jsp页面的时候,如果该页面用page指令设置页面的contentType属性是text/html,那么jsp引擎将按照这种属性做出响应,如果要动态改变这个属性值来响应用户,就需要使用response对象的setContentType(String s)方法来改变contentType的属性值,方法调用的格式为response.setContentType(“MIME”);其中,MIME可以为:text/html(网页),text/plain(文本),application/x-msexcel(excel文件),application/msword(word文件)等。
void setStatus(int sc):设定响应状态码
setStatus方法来设置jsp向客户端返回的状态码,它用来设置没有出错的状态。如果jsp运行出错,可以使用
response对象的sendError方法设置状态码,如sendError(int sc)方法设置错误状态代码。
sendError(int sc,String msg)方法除了设置状态码,还想客户发出一条错误信息。具体的HTTP响应状态码
及其含义见下表
状态码 |
状态摘要信息 |
含 义 |
100 |
Continue |
初始请求已经接受,客户应当继续发送请求的其余部分 |
200 |
Ok |
请求成功 |
302 |
Found |
请求的资源暂时转移,给出一个转移后的URL |
400 |
Bad Request |
请求出现语法错误 |
401 |
Unauthorized |
请求未授权,服务器需要通过身份验证和/或授权 |
403 |
Forbidden |
资源不可用,服务器理解客户的请求,但拒绝处理它。通常由于服务器上文件或目录的权限设置导致 |
404 |
Not Found |
无法找到指定位置的资源 |
500 |
Internet Server Error |
服务器遇到意想不到的情况,不能完成客户的请求 |
(2)response重定向方法
void sendRedirect(String location):重新定向客户端的请求
在某些情况下,当响应客户时,需要将客户重新引导至另外一个页面,可以使用response的sendRedirect(URL)
方法实现客户的重定向,使客户的请求重新发送URL所指定的地址。在这个过程中,服务器会发送代码“302”响应,
并引起该请求再次发送给服务器中由sendRedirect方法参数指定的URL。
(3)设置Cookie
void addCookie(Cookie c):将cookie加载到response对象上,发送到客户端保存。
Cookie是web服务器保存在用户硬盘上的一段文本。Cookie允许一个web站点在用户的计算机上保存信息
并随后
再取回它。例如一个web站点可能会为每一个访问者产生一个唯一的ID,然后以Cookie文件的形式保存在每个用户的
机器上。Cookie是以“关键字key=value“的格式来保存记录的。在jsp中要使用Cookie时,可以调用Cookie对象的构造
函数创建一个Cookie对象,Cookie对象的构造函数有两个字符串参数:Cookie名字和Cookie值,如:
Cookie c = new Cookie("username","john");
当Cookie对象产生以后,jsp中如果要讲封装好的Cookie对象传送到客户端,使用response的addCookie方法:
response.addCookie(c);
此时,如果客户端支持Cookie,Cookie会写入用户硬盘,在下次访问同一网站时,浏览器会自动将此Cookie一起发送。
如果jsp读取保存到用户端的Cookie,可以使用request对象的getCookie()方法,执行时将客户端传来的Cookie对象以数组的形式排列,如果要取出符合需要的Cookie对象,就需要循环比较数组每个对象的关键字。
Cookie[] cookie = request.getCookies();
if(cookie!=null){ //
for(int i = 0; i
if("username".equals(cookie[i].getName())){
out.print(cookie[i].getName() + ":" +cookie[i].getValue());
}
}
}