Servlet 服务器 HTTP 响应
来源:互联网 发布:qq飞车蓝魔尊数据 编辑:程序博客网 时间:2024/05/16 17:05
Servlet 服务器 HTTP 响应
正如前面的章节中讨论的那样,当一个 Web 服务器响应一个 HTTP 请求时,响应通常包括一个状态行、一些响应报头、一个空行和文档。一个典型的响应如下所示:
<span class="pln">HTTP</span><span class="pun" style="color:#66660;">/</span><span class="lit" style="color:#06666;">1.1</span><span class="pln"> </span><span class="lit" style="color:#06666;">200</span><span class="pln"> OK</span><span class="typ" style="color:#66066;">Content</span><span class="pun" style="color:#66660;">-</span><span class="typ" style="color:#66066;">Type</span><span class="pun" style="color:#66660;">:</span><span class="pln"> text</span><span class="pun" style="color:#66660;">/</span><span class="pln">html</span><span class="typ" style="color:#66066;">Header2</span><span class="pun" style="color:#66660;">:</span><span class="pln"> </span><span class="pun" style="color:#66660;">...</span><span class="pln"></span><span class="pun" style="color:#66660;">...</span><span class="pln"></span><span class="typ" style="color:#66066;">HeaderN</span><span class="pun" style="color:#66660;">:</span><span class="pln"> </span><span class="pun" style="color:#66660;">...</span><span class="pln"> </span><span class="pun" style="color:#66660;">(</span><span class="typ" style="color:#66066;">Blank</span><span class="pln"> </span><span class="typ" style="color:#66066;">Line</span><span class="pun" style="color:#66660;">)</span><span class="pln"></span><span class="pun" style="color:#66660;"><!</span><span class="pln">doctype </span><span class="pun" style="color:#66660;">...></span><span class="pln"></span><span class="str" style="color:#0880;"><html></span><span class="pln"></span><span class="str" style="color:#0880;"><head></span><span class="pun" style="color:#66660;">...</</span><span class="pln">head</span><span class="pun" style="color:#66660;">></span><span class="pln"></span><span class="str" style="color:#0880;"><body></span><span class="pln"></span><span class="pun" style="color:#66660;">...</span><span class="pln"></span><span class="pun" style="color:#66660;"></</span><span class="pln">body</span><span class="pun" style="color:#66660;">></span><span class="pln"></span><span class="pun" style="color:#66660;"></</span><span class="pln">html</span><span class="pun" style="color:#66660;">></span>
状态行包括 HTTP 版本(在本例中为 HTTP/1.1)、一个状态码(在本例中为 200)和一个对应于状态码的短消息(在本例中为 OK)。
下表总结了从 Web 服务器端返回到浏览器的最有用的 HTTP 1.1 响应报头,您会在 Web 编程中频繁地使用它们:
设置 HTTP 响应报头的方法
下面的方法可用于在 Servlet 程序中设置 HTTP 响应报头。这些方法通过 HttpServletResponse 对象可用。
为 sendRedirect 方法中使用的指定的 URL 进行编码,或者如果编码不是必需的,则返回 URL 未改变。2String encodeURL(String url)
对包含 session 会话 ID 的指定 URL 进行编码,或者如果编码不是必需的,则返回 URL 未改变。3boolean containsHeader(String name)
返回一个布尔值,指示是否已经设置已命名的响应报头。4boolean isCommitted()
返回一个布尔值,指示响应是否已经提交。5void addCookie(Cookie cookie)
把指定的 cookie 添加到响应。6void addDateHeader(String name, long date)
添加一个带有给定的名称和日期值的响应报头。7void addHeader(String name, String value)
添加一个带有给定的名称和值的响应报头。8void addIntHeader(String name, int value)
添加一个带有给定的名称和整数值的响应报头。9void flushBuffer()
强制任何在缓冲区中的内容被写入到客户端。10void reset()
清除缓冲区中存在的任何数据,包括状态码和头。11void resetBuffer()
清除响应中基础缓冲区的内容,不清除状态码和头。12void sendError(int sc)
使用指定的状态码发送错误响应到客户端,并清除缓冲区。13void sendError(int sc, String msg)
使用指定的状态发送错误响应到客户端。14void sendRedirect(String location)
使用指定的重定向位置 URL 发送临时重定向响应到客户端。15void setBufferSize(int size)
为响应主体设置首选的缓冲区大小。16void setCharacterEncoding(String charset)
设置被发送到客户端的响应的字符编码(MIME 字符集)例如,UTF-8。17void setContentLength(int len)
设置在 HTTP Servlet 响应中的内容主体的长度,该方法设置 HTTP Content-Length 头。18void setContentType(String type)
如果响应还未被提交,设置被发送到客户端的响应的内容类型。19void setDateHeader(String name, long date)
设置一个带有给定的名称和日期值的响应报头。20void setHeader(String name, String value)
设置一个带有给定的名称和值的响应报头。21void setIntHeader(String name, int value)
设置一个带有给定的名称和整数值的响应报头。22void setLocale(Locale loc)
如果响应还未被提交,设置响应的区域。23void setStatus(int sc)
为该响应设置状态码。
HTTP Header 响应实例
您已经在前面的实例中看到 setContentType() 方法,下面的实例也使用了同样的方法,此外,我们会用 setIntHeader() 方法来设置Refresh 头。
<span class="com" style="color:#8800;">// 导入必需的 java 库</span><span class="pln"></span><span class="kwd" style="color:#0088;">import</span><span class="pln"> java</span><span class="pun" style="color:#66660;">.</span><span class="pln">io</span><span class="pun" style="color:#66660;">.*;</span><span class="pln"></span><span class="kwd" style="color:#0088;">import</span><span class="pln"> javax</span><span class="pun" style="color:#66660;">.</span><span class="pln">servlet</span><span class="pun" style="color:#66660;">.*;</span><span class="pln"></span><span class="kwd" style="color:#0088;">import</span><span class="pln"> javax</span><span class="pun" style="color:#66660;">.</span><span class="pln">servlet</span><span class="pun" style="color:#66660;">.</span><span class="pln">http</span><span class="pun" style="color:#66660;">.*;</span><span class="pln"></span><span class="kwd" style="color:#0088;">import</span><span class="pln"> java</span><span class="pun" style="color:#66660;">.</span><span class="pln">util</span><span class="pun" style="color:#66660;">.*;</span><span class="pln"> </span><span class="com" style="color:#8800;">// 扩展 HttpServlet 类</span><span class="pln"></span><span class="kwd" style="color:#0088;">public</span><span class="pln"> </span><span class="kwd" style="color:#0088;">class</span><span class="pln"> </span><span class="typ" style="color:#66066;">Refresh</span><span class="pln"> </span><span class="kwd" style="color:#0088;">extends</span><span class="pln"> </span><span class="typ" style="color:#66066;">HttpServlet</span><span class="pln"> </span><span class="pun" style="color:#66660;">{</span><span class="pln"> </span><span class="com" style="color:#8800;">// 处理 GET 方法请求的方法</span><span class="pln"> </span><span class="kwd" style="color:#0088;">public</span><span class="pln"> </span><span class="kwd" style="color:#0088;">void</span><span class="pln"> doGet</span><span class="pun" style="color:#66660;">(</span><span class="typ" style="color:#66066;">HttpServletRequest</span><span class="pln"> request</span><span class="pun" style="color:#66660;">,</span><span class="pln"> </span><span class="typ" style="color:#66066;">HttpServletResponse</span><span class="pln"> response</span><span class="pun" style="color:#66660;">)</span><span class="pln"> </span><span class="kwd" style="color:#0088;">throws</span><span class="pln"> </span><span class="typ" style="color:#66066;">ServletException</span><span class="pun" style="color:#66660;">,</span><span class="pln"> </span><span class="typ" style="color:#66066;">IOException</span><span class="pln"> </span><span class="pun" style="color:#66660;">{</span><span class="pln"> </span><span class="com" style="color:#8800;">// 设置刷新自动加载时间为 5 秒</span><span class="pln"> response</span><span class="pun" style="color:#66660;">.</span><span class="pln">setIntHeader</span><span class="pun" style="color:#66660;">(</span><span class="str" style="color:#0880;">"Refresh"</span><span class="pun" style="color:#66660;">,</span><span class="pln"> </span><span class="lit" style="color:#06666;">5</span><span class="pun" style="color:#66660;">);</span><span class="pln"> </span><span class="com" style="color:#8800;">// 设置响应内容类型</span><span class="pln"> response</span><span class="pun" style="color:#66660;">.</span><span class="pln">setContentType</span><span class="pun" style="color:#66660;">(</span><span class="str" style="color:#0880;">"text/html"</span><span class="pun" style="color:#66660;">);</span><span class="pln"> </span><span class="com" style="color:#8800;">// Get current time</span><span class="pln"> </span><span class="typ" style="color:#66066;">Calendar</span><span class="pln"> calendar </span><span class="pun" style="color:#66660;">=</span><span class="pln"> </span><span class="kwd" style="color:#0088;">new</span><span class="pln"> </span><span class="typ" style="color:#66066;">GregorianCalendar</span><span class="pun" style="color:#66660;">();</span><span class="pln"> </span><span class="typ" style="color:#66066;">String</span><span class="pln"> am_pm</span><span class="pun" style="color:#66660;">;</span><span class="pln"> </span><span class="kwd" style="color:#0088;">int</span><span class="pln"> hour </span><span class="pun" style="color:#66660;">=</span><span class="pln"> calendar</span><span class="pun" style="color:#66660;">.</span><span class="kwd" style="color:#0088;">get</span><span class="pun" style="color:#66660;">(</span><span class="typ" style="color:#66066;">Calendar</span><span class="pun" style="color:#66660;">.</span><span class="pln">HOUR</span><span class="pun" style="color:#66660;">);</span><span class="pln"> </span><span class="kwd" style="color:#0088;">int</span><span class="pln"> minute </span><span class="pun" style="color:#66660;">=</span><span class="pln"> calendar</span><span class="pun" style="color:#66660;">.</span><span class="kwd" style="color:#0088;">get</span><span class="pun" style="color:#66660;">(</span><span class="typ" style="color:#66066;">Calendar</span><span class="pun" style="color:#66660;">.</span><span class="pln">MINUTE</span><span class="pun" style="color:#66660;">);</span><span class="pln"> </span><span class="kwd" style="color:#0088;">int</span><span class="pln"> second </span><span class="pun" style="color:#66660;">=</span><span class="pln"> calendar</span><span class="pun" style="color:#66660;">.</span><span class="kwd" style="color:#0088;">get</span><span class="pun" style="color:#66660;">(</span><span class="typ" style="color:#66066;">Calendar</span><span class="pun" style="color:#66660;">.</span><span class="pln">SECOND</span><span class="pun" style="color:#66660;">);</span><span class="pln"> </span><span class="kwd" style="color:#0088;">if</span><span class="pun" style="color:#66660;">(</span><span class="pln">calendar</span><span class="pun" style="color:#66660;">.</span><span class="kwd" style="color:#0088;">get</span><span class="pun" style="color:#66660;">(</span><span class="typ" style="color:#66066;">Calendar</span><span class="pun" style="color:#66660;">.</span><span class="pln">AM_PM</span><span class="pun" style="color:#66660;">)</span><span class="pln"> </span><span class="pun" style="color:#66660;">==</span><span class="pln"> </span><span class="lit" style="color:#06666;">0</span><span class="pun" style="color:#66660;">)</span><span class="pln"> am_pm </span><span class="pun" style="color:#66660;">=</span><span class="pln"> </span><span class="str" style="color:#0880;">"AM"</span><span class="pun" style="color:#66660;">;</span><span class="pln"> </span><span class="kwd" style="color:#0088;">else</span><span class="pln"> am_pm </span><span class="pun" style="color:#66660;">=</span><span class="pln"> </span><span class="str" style="color:#0880;">"PM"</span><span class="pun" style="color:#66660;">;</span><span class="pln"> </span><span class="typ" style="color:#66066;">String</span><span class="pln"> CT </span><span class="pun" style="color:#66660;">=</span><span class="pln"> hour</span><span class="pun" style="color:#66660;">+</span><span class="str" style="color:#0880;">":"</span><span class="pun" style="color:#66660;">+</span><span class="pln"> minute </span><span class="pun" style="color:#66660;">+</span><span class="str" style="color:#0880;">":"</span><span class="pun" style="color:#66660;">+</span><span class="pln"> second </span><span class="pun" style="color:#66660;">+</span><span class="str" style="color:#0880;">" "</span><span class="pun" style="color:#66660;">+</span><span class="pln"> am_pm</span><span class="pun" style="color:#66660;">;</span><span class="pln"> </span><span class="typ" style="color:#66066;">PrintWriter</span><span class="pln"> </span><span class="kwd" style="color:#0088;">out</span><span class="pln"> </span><span class="pun" style="color:#66660;">=</span><span class="pln"> response</span><span class="pun" style="color:#66660;">.</span><span class="pln">getWriter</span><span class="pun" style="color:#66660;">();</span><span class="pln"> </span><span class="typ" style="color:#66066;">String</span><span class="pln"> title </span><span class="pun" style="color:#66660;">=</span><span class="pln"> </span><span class="str" style="color:#0880;">"自动刷新 Header 设置"</span><span class="pun" style="color:#66660;">;</span><span class="pln"> </span><span class="typ" style="color:#66066;">String</span><span class="pln"> docType </span><span class="pun" style="color:#66660;">=</span><span class="pln"> </span><span class="str" style="color:#0880;">"<!doctype html public \"-//w3c//dtd html 4.0 "</span><span class="pln"> </span><span class="pun" style="color:#66660;">+</span><span class="pln"> </span><span class="str" style="color:#0880;">"transitional//en\">\n"</span><span class="pun" style="color:#66660;">;</span><span class="pln"> </span><span class="kwd" style="color:#0088;">out</span><span class="pun" style="color:#66660;">.</span><span class="pln">println</span><span class="pun" style="color:#66660;">(</span><span class="pln">docType </span><span class="pun" style="color:#66660;">+</span><span class="pln"> </span><span class="str" style="color:#0880;">"<html>\n"</span><span class="pln"> </span><span class="pun" style="color:#66660;">+</span><span class="pln"> </span><span class="str" style="color:#0880;">"<head><title>"</span><span class="pln"> </span><span class="pun" style="color:#66660;">+</span><span class="pln"> title </span><span class="pun" style="color:#66660;">+</span><span class="pln"> </span><span class="str" style="color:#0880;">"</title></head>\n"</span><span class="pun" style="color:#66660;">+</span><span class="pln"> </span><span class="str" style="color:#0880;">"<body bgcolor=\"#f0f0f0\">\n"</span><span class="pln"> </span><span class="pun" style="color:#66660;">+</span><span class="pln"> </span><span class="str" style="color:#0880;">"<h1 align=\"center\">"</span><span class="pln"> </span><span class="pun" style="color:#66660;">+</span><span class="pln"> title </span><span class="pun" style="color:#66660;">+</span><span class="pln"> </span><span class="str" style="color:#0880;">"</h1>\n"</span><span class="pln"> </span><span class="pun" style="color:#66660;">+</span><span class="pln"> </span><span class="str" style="color:#0880;">"<p>当前时间是:"</span><span class="pln"> </span><span class="pun" style="color:#66660;">+</span><span class="pln"> CT </span><span class="pun" style="color:#66660;">+</span><span class="pln"> </span><span class="str" style="color:#0880;">"</p>\n"</span><span class="pun" style="color:#66660;">);</span><span class="pln"> </span><span class="pun" style="color:#66660;">}</span><span class="pln"> </span><span class="com" style="color:#8800;">// 处理 POST 方法请求的方法</span><span class="pln"> </span><span class="kwd" style="color:#0088;">public</span><span class="pln"> </span><span class="kwd" style="color:#0088;">void</span><span class="pln"> doPost</span><span class="pun" style="color:#66660;">(</span><span class="typ" style="color:#66066;">HttpServletRequest</span><span class="pln"> request</span><span class="pun" style="color:#66660;">,</span><span class="pln"> </span><span class="typ" style="color:#66066;">HttpServletResponse</span><span class="pln"> response</span><span class="pun" style="color:#66660;">)</span><span class="pln"> </span><span class="kwd" style="color:#0088;">throws</span><span class="pln"> </span><span class="typ" style="color:#66066;">ServletException</span><span class="pun" style="color:#66660;">,</span><span class="pln"> </span><span class="typ" style="color:#66066;">IOException</span><span class="pln"> </span><span class="pun" style="color:#66660;">{</span><span class="pln"> doGet</span><span class="pun" style="color:#66660;">(</span><span class="pln">request</span><span class="pun" style="color:#66660;">,</span><span class="pln"> response</span><span class="pun" style="color:#66660;">);</span><span class="pln"> </span><span class="pun" style="color:#66660;">}</span><span class="pln"></span><span class="pun" style="color:#66660;">}</span>
0 0
- Servlet 服务器 HTTP 响应
- Servlet服务器 HTTP 响应
- Servlet 服务器 HTTP 响应
- Servlet 服务器 HTTP 响应
- Java Servlet学习笔记(五)Servlet服务器Http响应
- Servlet处理HTTP响应
- Servlet处理HTTP响应
- servlet处理http响应
- servlet处理http响应
- servlet_10 服务器HTTP响应
- 使用servlet处理HTTP响应
- 使用servlet处理http响应
- 使用Servlet处理HTTP响应
- 使用Servlet处理HTTP响应
- 使用servlet处理http响应
- 使用servlet处理http响应
- 使用Servlet处理HTTP响应
- 使用Servlet处理http响应
- servlet中请求转发(forword)与重定向(sendredirect)的区别
- 如何在 Linux 上使用 GNU sed
- Servlet生命周期
- servlet编码与部署
- Codeforces Round #376 (Div. 2)
- Servlet 服务器 HTTP 响应
- HTTP中Get与Post的区别
- Android Drawer(抽屉,即侧拉栏)的简单使用:
- CSDN-markdown编辑器使用方法
- ubuntu下如何优雅地使用翻译
- java类与类之间的关系
- 管理学与情商
- [毕业季]感受2(10月17号)
- 二维码扫描