以下内容引用自http://wiki.jikexueyuan.com/project/jsp/server-response.html

当一个Web服务器响应浏览器的HTTP请求时,响应通常包括一个状态行,一些响应标题,一个空行和文档。一个典型的响应如下所示:

  1. HTTP/1.1 200 OK
  2. Content-Type: text/html
  3. Header2: ...
  4. ...
  5. HeaderN: ...
  6. (Blank Line)
  7. <!doctype ...>
  8. <html>
  9. <head>...</head>
  10. <body>
  11. ...
  12. </body>
  13. </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标题来模拟数字时钟:

  1. <%@ page import="java.io.*,java.util.*" %>
  2. <html>
  3. <head>
  4. <title>Auto Refresh Header Example</title>
  5. </head>
  6. <body>
  7. <center>
  8. <h2>Auto Refresh Header Example</h2>
  9. <%
  10. // Set refresh, autoload time as 5 seconds
  11. response.setIntHeader("Refresh", 5);
  12. // Get current time
  13. Calendar calendar = new GregorianCalendar();
  14. String am_pm;
  15. int hour = calendar.get(Calendar.HOUR);
  16. int minute = calendar.get(Calendar.MINUTE);
  17. int second = calendar.get(Calendar.SECOND);
  18. if(calendar.get(Calendar.AM_PM) == 0)
  19. am_pm = "AM";
  20. else
  21. am_pm = "PM";
  22. String CT = hour+":"+ minute +":"+ second +" "+ am_pm;
  23. out.println("Current Time is: " + CT + "\n");
  24. %>
  25. </center>
  26. </body>
  27. </html>

现在把上面的代码添加到main.jsp并试图访问它。这将在每5秒后显示当前系统时间如下所示。运行JSP,等着看结果:

  1. Auto Refresh Header Example
  2.  
  3. 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. Toolbar自定义布局

    Toolbar如何使用想必大家清楚地很,实际开发中标题栏的样式各色各样,因此其基本样式便不能满足我们的需求,这就需要我们自定义布局.打开ToolBar源码我们发现它继承ViewGroup,这就表示我们 ...

  2. TabLayout+ViewPager实现标签卡效果

    转载请注明原文地址:http://www.cnblogs.com/yanyojun/p/8082391.html 代码已经上传至Github:https://github.com/YanYoJun/V ...

  3. mysql中判断条件

    if / case when 判断 SELECT CASE 1 WHEN 1 THEN "one" WHEN 2 THEN "two" ELSE "m ...

  4. API设计指南(译)

    API的设计在软件系统中的重要性不言而喻,在swift.org上看到一篇“API Design Guidelines”,虽然是就Swift而言,但对于其它语言也有不少可以借鉴的地方,在这里粗略翻译一二 ...

  5. web页面打印--铺满A4

    css <style type="text/css"> body { margin: 0; padding: 0; background-color: #FAFAFA; ...

  6. KMS

    slmgr -ipk 73KQT-CD9G6-K7TQG-66MRP-CQ22C

  7. webgl推荐书籍

    网址:https://www.douban.com/doulist/45940373/ webgl 来自: Pasu2017-04-17创建   2017-07-25更新   推荐 关注 2 人关注 ...

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

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

  9. 表单文件上传编码方式(enctype 属性)

    enctype 属性规定在发送到服务器之前应该如何对表单数据进行编码. 如下: <form action="upload.php" method="post&quo ...

  10. python note of class

    reference: https://www.zhihu.com/question/27699413/answer/267906889 摘要: 我们在描述一个真实对象(物体)时包括两个方面:它可以做什 ...