以下内容引用自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. git ---合并和删除分支

    git merge  分支名 //合并子分支到当前分支 git branch -d 分支名//删除分支

  2. Jenkins .NET项目持续集成配置

    基本步骤 1. 安装并配置MSBUILD 在系统管理->插件管理->添加MSBuild插件 在系统管理->系统设置->找到MSBuild配置部分,配置不同的MSbuild版本 ...

  3. [Android]如何实现无限滚动的ListViw/GridView(翻译)

    ListView和GridView已经成为原生的Android应用实现中两个最流行的设计模式.目前,这些模式被大量的开发者使用,主要是因为他们是简单而直接的实现,同时他们提供了一个良好,整洁的用户体验 ...

  4. taskctl的后台字符界面登录不了解决办法

    今天在使用taskctl的designer时,十多分钟挂了2次,每次挂了之后就签不出来了,只能等半小时,然后在taskctl的QQ群里咨询了,给的解决方案是 http://www.taskctl.co ...

  5. vue2.0 动态切换组件

    组件标签是Vue框架自定义的标签,它的用途就是可以动态绑定我们的组件,根据数据的不同更换不同的组件. <!DOCTYPE html> <html lang="en" ...

  6. ES6特性的两点分析

    块级作用域声明let.constES6中const 和let的功能,转换为ES5之后,我们会发现实质就是在块级作用改变一下变量名,使之与外层不同.ES6转换前: let a1 = 1; let a2 ...

  7. Laravel 使用中间件进行权限控制

    Laravel 使用中间件进行权限控制 飞凡的陀螺 关注 2018.01.24 17:45 字数 264 阅读 1138评论 0喜欢 1 先看 文档Laravel 中间件提供了一种方便的机制来过滤进入 ...

  8. 模拟登陆request-session

    #人人网的模拟登录 import requests import urllib from lxml import etree #获取session对象 session = requests.Sessi ...

  9. zabbix基础安装

    环境依赖:LNMP或者LAMP 简介参考:http://blog.51cto.com/zhang789/1868880 一.准备 我安装的环境及其版本如下: 系统版本 CentOS Linux rel ...

  10. How To:利用frm和idb文件进行数据恢复.txt

    在另外一个机器上准备测试数据,并传输到dbadb05机器的/mysql/backup/reco/位置下.开始尝试恢复数据一.使用mysqlfrm获取表结构信息及DDL语句. [mysql@dbadb0 ...