JSP服务器响应
以下内容引用自http://wiki.jikexueyuan.com/project/jsp/server-response.html:
当一个Web服务器响应浏览器的HTTP请求时,响应通常包括一个状态行,一些响应标题,一个空行和文档。一个典型的响应如下所示:
HTTP/1.1 200 OK
Content-Type: text/html
Header2: ...
...
HeaderN: ...
(Blank Line)
<!doctype ...>
<html>
<head>...</head>
<body>
...
</body>
</html>
状态行包含HTTP版本(例子中的HTTP/1.1),状态码(例子中的200)和对应状态代码的短消息(例子中的OK)。
下面是最有用的HTTP 1.1响应标题的一个总结,它从Web服务器端回到浏览器,并且在Web编程时,会频繁使用它们:
标题 | 描述 |
---|---|
Allow | 这个标题指定了服务器支持的请求方法(GET、POST 等等)。 |
Cache-Control | 这个标题指定了响应文档可以安全地被缓存的情况。它可以有public,private或non-chche的值。public意味着文件是缓存的,private意味着文档用于单个用户,且只能存储在私有(非共享)缓存中,non-chche意味着永远不会被缓存。 |
Connection | 该标题表明浏览器是否使用持久的HTTP连接。值为close表明浏览器不使用持续的HTTP连接,keep-alive表明使用持久连接。 |
Content-Disposition | 该标题让请求浏览器要求用户将响应保存到给定名称的磁盘文件中。 |
Content-Encoding | 这个标题指定了在传输过程中页面被编码的方式。 |
Content-Language | 这个标题表明了编写文档的语言。例如,英语,美语,俄语等。 |
Content-Length | 这个标题表明了响应中的字节数。这些信息只有在浏览器使用持久(keep-alive)的HTTP连接时才需要。 |
Content-Type | 这个标题给出响应文档的MIME(多用途 Internet 邮件扩展)类型。 |
Expires | 这个标题指定了内容应该被认为是过时的时间,因此不再被缓存。 |
Last-Modified | 这个标题表示最后一次修改文档的时间。客户端可以缓存文件并由后面的请求的if-modified-since请求标题提供一个日期。 |
Location | 这个标题应该包含在所有带有300s状态码的响应中。该标题通知浏览器文档的地址。浏览器自动重新连接到这个位置并且检索新文档。 |
Refresh | 这个标题指定浏览器应该多久访问更新页面。可以在页面刷新后,指定时间为几秒。 |
Retry-After | 这个标题可以与503(服务不可用)响应结合使用,告诉客户端多久以后它可以重复请求。 |
Set-Cookie | 这个标题制定了与页面相关联的一个Cookie。 |
一、HttpServletResponse对象
该响应对象是javax.servlet.http.HttpServletResponse的一个实例。正如服务器创建请求对象,它也创建了一个对象来表示客户端的响应。
响应对象还定义了接口,处理创建新的HTTP标题。通过这个对象JSP程序员可以添加新的Cookies或日期stamps,HTTP状态码等。
以下方法可以用来在Servlet程序中设置HTTP响应标题。有了代表服务器响应的HttpServletResponse对象,这些方法都是可用的。
方法 | 描述 |
---|---|
String encodeRedirectURL(String url) |
将指定的URL编码用于sendRedirect方法,如果不需要编码,则返回的URL不变。 |
String encodeURL(String url) |
编码由包括会话ID指定的URL,或者,如果不需要编码,返回的URL不变。 |
boolean containsHeader(String name) |
返回一个布尔值表明指定的响应标题是否已经设置。 |
boolean isCommitted() |
返回一个布尔值表明响应是否已经提交。 |
void addCookie(Cookie cookie) |
将指定的Cookie添加到响应中。 |
void addDateHeader(String name, long date) |
添加一个带有给定名称和日期值的响应标题。 |
void addHeader(String name, String value) |
添加一个带有给定名称和值的响应标题。 |
void addIntHeader(String name, int value) |
添加一个带有给定名称和整数值的响应标题。 |
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 Servlet中的响应的主体内容的长度,这种方法设置了HTTP内容-长度标题。 |
void setContentType(String type) |
如果响应尚未提交,设置要被发送到客户端的响应的内容类型。 |
void setDateHeader(String name, long date) |
用给定的名称和日期值设置一个响应标题。 |
void setHeader(String name, String value) |
用给定的名称和值设置一个响应标题。 |
void setIntHeader(String name, int value) |
用给定的名称和整数值设置一个响应标题。 |
void setLocale(Locale loc) |
如果反应尚未提交,设置响应的语言环境。 |
void setStatus(int sc) |
为响应设置状态码。 |
二、HTTP标题响应实例
接下来的例子中将使用setIntHeader()方法设置Refresh标题来模拟数字时钟:
<%@ page import="java.io.*,java.util.*" %>
<html>
<head>
<title>Auto Refresh Header Example</title>
</head>
<body>
<center>
<h2>Auto Refresh Header Example</h2>
<%
// Set refresh, autoload time as 5 seconds
response.setIntHeader("Refresh", 5);
// Get current time
Calendar calendar = new GregorianCalendar();
String am_pm;
int hour = calendar.get(Calendar.HOUR);
int minute = calendar.get(Calendar.MINUTE);
int second = calendar.get(Calendar.SECOND);
if(calendar.get(Calendar.AM_PM) == 0)
am_pm = "AM";
else
am_pm = "PM";
String CT = hour+":"+ minute +":"+ second +" "+ am_pm;
out.println("Current Time is: " + CT + "\n");
%>
</center>
</body>
</html>
现在把上面的代码添加到main.jsp并试图访问它。这将在每5秒后显示当前系统时间如下所示。运行JSP,等着看结果:
Auto Refresh Header Example Current Time is: 9:44:50 PM
测试工程:https://github.com/easonjim/5_java_example/tree/master/jspbasics/test5
JSP服务器响应的更多相关文章
- JSP-Runoob:JSP 服务器响应
ylbtech-JSP-Runoob:JSP 服务器响应 1.返回顶部 1. JSP 服务器响应 Response响应对象主要将JSP容器处理后的结果传回到客户端.可以通过response变量设置HT ...
- JSP 服务器响应
Response响应对象主要将JSP容器处理后的结果传回到客户端.可以通过response变量设置HTTP的状态和向客户端发送数据,如Cookie.HTTP文件头信息等. 一个典型的响应看起来就像下面 ...
- 客户端请求、服务器响应及其HTTP状态码
一JSP客户端请求 当浏览器请求一个网页时,它会向网络服务器发送一系列不能被直接读取的信息,因为这些信息是作为HTTP信 息头的一部分来传送的.我们可以查阅HTTP协议来获得更多的信息. 下表列出了浏 ...
- Java Web学习(1): 客户端请求、服务器响应及其HTTP状态码
一JSP客户端请求 当浏览器请求一个网页时,它会向网络服务器发送一系列不能被直接读取的信息,因为这些信息是作为HTTP信 息头的一部分来传送的.我们可以查阅HTTP协议来获得更多的信息. 下表列出了浏 ...
- #1126-JSP服务器响应
JSP服务器响应 Response响应对象主要将JSP容器处理后的结果传回到客户端.可以通过response变量设置HTTP的状态和向客户端发送数据,如Cookie.HTTP文件头信息等. 一个典型的 ...
- jsp的服务器响应,out.println 与response.setIntHeader的报错解决方案,附:导入jar包的方法
在九大内置对象中,笔者认为用的最多的就是out.println 与response.setIntHeader,今天刚写了一个服务器响应的代码,也总是这两个报错.具体请看图. 先来说说response. ...
- 关于服务器响应,浏览器请求的理解以及javaWeb项目的编码问题
1.服务器(Server)响应,浏览器(Brower)请求: 对于B/S的软件,数据的传递体现在,用户利用浏览器请求,以获得服务器响应.在JavaWeb项目中,大致包含.java文件的数据处理模块,和 ...
- Servlet&JSP-HTTP服务器响应信息
完整代码请参考:https://github.com/devway9/java-exercise/tree/master/servlet-jsp 目录 1 HTTP响应的格式 2 如何设置状态代码 3 ...
- JSP请求响应流程入门介绍
一个完整的jsp请求响应流程可以简单的使用下图表示: 过滤器:直观的了解,就是对请求做一个过滤作用,比如身份验证,验证不通过的不让他继续往下走 Servlet:请求处理中心,这个也是我们写业务逻辑的地 ...
随机推荐
- 把Scheme翻译成Java和C++的工具
一.为什么要写这个工具? 公司内容有多个项目需要同一个功能,而这些项目中,有的是用Java的,有的是用C++的,同时由于某些现实条件限制,无法所有项目都调用统一的服务接口(如:可能运行在无网络的情况下 ...
- IOS 面试题系列
随着iOS平台开发的职位的增加,笔试.面试也越来越有“套路”,这里我总结了一些面试题,多数是Objective-C的基础知识,适合于面试新人,答案是我自己答的,不准确的地方,欢迎指出. 1. Ob ...
- ARM开发板如何选型-I.MX6Q开发板
拥有丰富扩展能力,供货周期长的开发平台,省事安心 处理器:迅为-i.MX6开发板恩智浦Cortex-A9 四核i.MX6Q处理器,主频1GHz,内存2G,存储16GB. 系统支持:i.MX6开发板 ...
- (转)淘淘商城系列——使用maven构建工程时出现的错误
http://blog.csdn.net/yerenyuan_pku/article/details/72690846 我觉得maven就他妈是一个傻逼,反正我是对它无语了.昨天刚刚使用maven构建 ...
- Ryubook_1_switch_hub_源码
一.switching hub by openflow: 用Ryu实现一个有如下功能的switching hub. • Learns the MAC address of the host conne ...
- MFC中使用post提交form-data上传文件
已经有将近6年时间没写过MFC了,想想以前我也是写VC++入门程序开发的,那时候写协议栈.搞语音编码.做视频压缩和实时数据传输,相比现在更多偏业务的开发,那时候搞得都是非常技术的东西.眨眼间,MFC已 ...
- Django中使用多线程发送邮件
1.settings.py 增加Email设置 #mail EMAIL_HOST = ‘smtp.gmail.com’ #邮件smtp服务器 EMAIL_POR ...
- JavaSE-10 多态
学习要点 多态的优势和应用场合 父类和子类之间的类型转换 instanceof运算符的使用 父类作为方法形参实现多态 父类作为返回值实现多态 使用多态的原因 需求描述: 在宠物管理系统中,宠物饿了,需 ...
- NOIP专题复习3 图论-强连通分量
目录 一.知识概述 二.典型例题 1.[HAOI2006]受欢迎的牛 2.校园网络[[USACO]Network of Schools加强版] 三.算法分析 (一)Tarjan算法 (二)解决问题 四 ...
- 笔试算法题(34):从数字序列中寻找仅出现一次的数字 & 最大公约数(GCD)问题
出题:给定一个数字序列,其中每个数字最多出现两次,只有一个数字仅出现了一次,如何快速找出其中仅出现了一次的数字: 分析: 由于知道一个数字异或操作它本身(X^X=0)都为0,而任何数字异或操作0都为它 ...