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里面包含哪些字段,每个字段都有哪些含义?参考这个链接:https://blog.csdn.net/qq_42218123/article/details/80664302
简单例子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页面
参考文章
https://blog.csdn.net/u010142437/article/details/56009744