JSP的隐式对象(response)
JSP隐式对象是JSP容器为每个页面提供的Java对象,开发者可以直接使用它们而不用显式声明。
也就是说隐式对象不需要像一般的Java对象需要使用new关键字来创建,而是直接在JSP页面中使用。
九大隐式对象分类
输入输出对象:out
作用域对象:request,response,session,application,pageContext
Servlet对象:page,config
错误对象:exception
3.response对象
当服务器创建request对象时会同时创建用于响应这个客户端的response对象,用于将web服务器处理后的结果发回给客户端。
response对象的主要方法有
方法 | 描述 |
void addCookie(Cookie cookie) | 添加指定的cookie至响应中 |
void addDateHeader(String name, long date) | 添加指定名称的响应头和日期值 |
void addHeader(String name, String value) | 添加指定名称的响应头和值 |
void addIntHeader(String name, int value) | 添加指定名称的响应头和int值 |
void flushBuffer() | 将任何缓存中的内容写入客户端 |
void reset() | 清除任何缓存中的任何数据,包括状态码和各种响应头 |
void resetBuffer() | 清除基本的缓存数据,不包括响应头和状态码 |
void sendError(int sc) | 使用指定的状态码向客户端发送一个出错响应,然后清除缓存 |
void sendError(int sc, String msg) | 使用指定的状态码和消息向客户端发送一个出错响应 |
void sendRedirect(String location) | 使用指定的URL向客户端发送一个临时的间接响应 |
void setBufferSize(int size) | 设置响应体的缓存区大小 |
void setCharacterEncoding(String charset) | 指定响应的编码集(MIME字符集),例如UTF-8 |
void setContentLength(int len) | 指定HTTP servlets中响应的内容的长度,此方法用来设置 HTTP Content-Length 信息头 |
void setContentType(String type) | 设置响应的内容的类型,如果响应还未被提交的话 |
void setDateHeader(String name, long date) | 使用指定名称和值设置响应头的名称和内容 |
void setHeader(String name, String value) | 使用指定名称和值设置响应头的名称和内容 |
void setIntHeader(String name, int value) | 指定 int 类型的值到 name 标头 |
void setLocale(Locale loc) | 设置响应的语言环境,如果响应尚未被提交的话 |
void setStatus(int sc) | 设置响应的状态码 |
简单例子1——重定向页面
responseRedirect.jsp
1 <%@ page language="java" contentType="text/html; charset=UTF-8"
2 pageEncoding="UTF-8"%>
3 <!DOCTYPE html>
4 <html>
5 <head>
6 <meta charset="UTF-8">
7 <title>response重定向</title>
8 </head>
9 <body>
10 <%response.sendRedirect("responseRedTarget.jsp"); %>
11 </body>
12 </html>
responseRedTarget.jsp
1 <%@ page language="java" contentType="text/html; charset=UTF-8"
2 pageEncoding="UTF-8"%>
3 <!DOCTYPE html>
4 <html>
5 <head>
6 <meta charset="UTF-8">
7 <title>reponse重定向目标页面</title>
8 </head>
9 <body>
10 <font style="color: red;">这里是重定向的目标页面</font>
11 </body>
12 </html>
注意:重定向后,原来的request对象失效,web容器将创建一个新的request对象。
简单例子2——处理HTTP文件头
1.自动刷新
<%@page import="java.util.Date"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>显示时间</title>
</head>
<body>
<%=(new Date().toLocaleString())%>
<%
response.setHeader("refresh", "1");
%>
</body>
</html>
2.修改Content-Type类型
<%@page import="java.util.Date"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>显示时间</title>
</head>
<body>
<%=(new Date().toLocaleString())%>
<%
response.setHeader("refresh", "1");
%>
<%response.setHeader("Content-Type", "text/plain") ;%>
</body>
</html>
其他的Header头修改不一一举例,Http的Header里面包含哪些字段,每个字段都有哪些含义?参考这个链接:
简单例子3——response对象添加Cookie对象,request对象读取Cookie对象
cookieSave.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>response添加Cookie对象</title>
</head>
<body>
<%
//新建2个cookie对象
Cookie cookie1 = new Cookie("username","张三");
Cookie cookie2 = new Cookie("password","123456");
//设置COOKIE的时效,秒为单位,2天
cookie1.setMaxAge(2*24*60*60);
cookie2.setMaxAge(2*24*60*60);
//将cookie保存在response对象中
response.addCookie(cookie1);
response.addCookie(cookie2);
%>
<a href="cookieShow.jsp">查看是否保存了Cookie对象</a>
</body>
</html>
cookeShow.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>request对象获取Cookie对象</title>
</head>
<body>
<%request.setCharacterEncoding("UTF-8"); %>
<%
String username="";
String password="";
Cookie[] cookies=request.getCookies();
if(cookies!=null&&cookies.length>0){
for(Cookie cookie:cookies){
if(cookie.getName().equals("username")){
username=cookie.getValue();
}
if(cookie.getName().equals("password")){
password=cookie.getValue();
}
response.addCookie(cookie);
}
}
%>
<h2>用户名为:<%=username %></h2>
<h2>密码为:<%=password %></h2>
</body>
</html>
直接访问cookeShow.jsp页面显示
从 cookieSave.jsp页面点击链接跳转到cookeShow.jsp页面