以下内容引用自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服务器响应的更多相关文章

  1. JSP-Runoob:JSP 服务器响应

    ylbtech-JSP-Runoob:JSP 服务器响应 1.返回顶部 1. JSP 服务器响应 Response响应对象主要将JSP容器处理后的结果传回到客户端.可以通过response变量设置HT ...

  2. JSP 服务器响应

    Response响应对象主要将JSP容器处理后的结果传回到客户端.可以通过response变量设置HTTP的状态和向客户端发送数据,如Cookie.HTTP文件头信息等. 一个典型的响应看起来就像下面 ...

  3. 客户端请求、服务器响应及其HTTP状态码

    一JSP客户端请求 当浏览器请求一个网页时,它会向网络服务器发送一系列不能被直接读取的信息,因为这些信息是作为HTTP信 息头的一部分来传送的.我们可以查阅HTTP协议来获得更多的信息. 下表列出了浏 ...

  4. Java Web学习(1): 客户端请求、服务器响应及其HTTP状态码

    一JSP客户端请求 当浏览器请求一个网页时,它会向网络服务器发送一系列不能被直接读取的信息,因为这些信息是作为HTTP信 息头的一部分来传送的.我们可以查阅HTTP协议来获得更多的信息. 下表列出了浏 ...

  5. #1126-JSP服务器响应

    JSP服务器响应 Response响应对象主要将JSP容器处理后的结果传回到客户端.可以通过response变量设置HTTP的状态和向客户端发送数据,如Cookie.HTTP文件头信息等. 一个典型的 ...

  6. jsp的服务器响应,out.println 与response.setIntHeader的报错解决方案,附:导入jar包的方法

    在九大内置对象中,笔者认为用的最多的就是out.println 与response.setIntHeader,今天刚写了一个服务器响应的代码,也总是这两个报错.具体请看图. 先来说说response. ...

  7. 关于服务器响应,浏览器请求的理解以及javaWeb项目的编码问题

    1.服务器(Server)响应,浏览器(Brower)请求: 对于B/S的软件,数据的传递体现在,用户利用浏览器请求,以获得服务器响应.在JavaWeb项目中,大致包含.java文件的数据处理模块,和 ...

  8. Servlet&JSP-HTTP服务器响应信息

    完整代码请参考:https://github.com/devway9/java-exercise/tree/master/servlet-jsp 目录 1 HTTP响应的格式 2 如何设置状态代码 3 ...

  9. JSP请求响应流程入门介绍

    一个完整的jsp请求响应流程可以简单的使用下图表示: 过滤器:直观的了解,就是对请求做一个过滤作用,比如身份验证,验证不通过的不让他继续往下走 Servlet:请求处理中心,这个也是我们写业务逻辑的地 ...

随机推荐

  1. VS项目属性配置总结

    以下是针对VS2013下的VC++项目: Debug和Release说明: Debug 通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序.Release 称为发布版本,它往往是进 ...

  2. asp 数据库 模块化 - 思路是没一个页面有一个自己的数据类 这里用nPath表示

    <!--#include file="db_class.asp" --> <% '当前页面数据 nPath = "..\..\.." 't模块 ...

  3. 梦想CAD控件,用于浏览和编辑DWG文件,在脱离AUTOCAD的情况下独立运行,相当于简易CAD

    (百度百科连接) 梦想绘图控件5.2  是国内最强,最专业的CAD开发组件(控件),不需要AutoCAD就能独立运行.控件使用VC 2010开发,最早从2007年第一个版本完成,经过多年的累积已经非常 ...

  4. Win10上 visual studio设置为本地IIS运行网站时 必须以管理员身份加载项目的解决方法

    右键,选择“兼容性疑难解答”. 选择“疑难解答程序” 选择“该程序需要附加权限” 点击测试程序 点击下一步 选择 是,为此程序保存这些设置

  5. java线程学习1

    java实现多线程有三种方式:继承Thread类,重写run方法,启动使用start:实现runnable接口,重写run方法:实现callable接口,重写call方法(可以有返回值,也可以抛出异常 ...

  6. Vue+Bootstrap实现购物车程序(2)

    先简单看下效果图:(在原先基础上添加了删除和筛选操作) 代码: <!DOCTYPE html> <html> <head lang="en"> ...

  7. java引用数据类型在方法中的值传递

    package org.jimmy.autosearch20180821.test; public class TestStringArr { public static void main(Stri ...

  8. SQL表变量与临时表区别 + 非游标临时表遍历

    SQL表变量与临时表区别 + 非游标临时表遍历 分类: SQL Server2009-11-27 17:01 1196人阅读 评论(2) 收藏 举报 sqlinsert存储sql servermicr ...

  9. HDU4415 Assassin’s Creed

    题目大意:有n个人,每个人有x,y两个值.x代表干掉他得到的分数,分数和不超过m;y代表干掉他后你能额外干掉多少个,且不计入总分. 求干掉人数最多为多少,以及最小的分. ~~~~~~~~~~~~~~~ ...

  10. Linux环境搭建SVN服务

    一.准备工作 首先要保证自己的linux电脑能上外网,我这电脑因为是新的,没有配置网络,所以再这块花费了点时间. 1.检查ip信息 >ifconfig 2.检查DNS服务器 >cat  / ...