在本章中,我们将讨论JSP中的服务器响应.当Web服务器响应HTTP请求时,响应通常由状态行,一些响应头,空行和文档组成.典型的响应看起来像这样 : 去;
HTTP/1.1 200 OKContent-Type: text/htmlHeader2: ......HeaderN: ... (Blank Line)<!doctype ...><html> <head>...</head> <body> ... </body></html>
状态行包含HTTP版本(示例中为HTTP/1.1),状态代码(200在示例中),以及对应于状态代码的非常短的消息(在示例中为OK).
以下是对最有用的HTTP 1.1响应标头,从Web服务器返回浏览器.这些标题经常用于网络编程和减号;
S.No. | 标题&描述 |
---|---|
1 | 允许 此标头指定请求方法( GET,POST 等)服务器支持. |
2 | 缓存控制 此标头指定响应文档的情况安全地被缓存.它可以具有值 public,private 或 no-cache 等.公共意味着文档是可缓存的,私有意味着文档是针对单个用户的,并且只能存储在私有中(非共享) )缓存和无缓存意味着永远不应该缓存文档. |
3 | 连接 此标题指示浏览器是否使用持久性HTTP连接.值 close 指示浏览器不使用持久HTTP连接, keep-alive 表示使用持久连接. |
4 | Content-Disposition 此标题允许您请求浏览器要求用户将响应保存到给定名称的文件中. |
5 | 内容编码 此标头指定在传输过程中页面的编码方式. |
6 | 内容 - 语言 此标题表示文档的编写语言.例如, en,en-us,ru,等. |
7 | 内容长度 此标头指示响应中的字节数.仅当浏览器使用持久(保持活动)HTTP连接时才需要此信息. |
8 | 内容类型 此标题提供响应文档的 MIME (多用途Internet邮件扩展名)类型. |
9 | 过期 此标头指定内容应被视为过期的时间,因此不再被缓存. |
10 | 上次修改 此标题指示上次更改文档的时间.然后,客户端可以缓存文档,并在以后的请求中通过 If-Modified-Since 请求标头提供日期. |
11 | 位置 此标头应包含在状态代码为300s的所有响应中.这会通知浏览器文档地址.浏览器会自动重新连接到此位置并检索新文档. |
12 | 刷新 此标头指定浏览器应该多久要求更新页面.您可以指定刷新页面的秒数. |
13 | 重试 - 之后 此标题可以与 503(服务不可用)响应一起使用,告诉客户可以多快重复其请求. |
14 | Set-Cookie 此标题指定与页面关联的Cookie. |
HttpServletResponse对象
响应对象是 javax.servlet.http.HttpServletResponse对象的一个实例的.就像服务器创建请求对象一样,它也会创建一个对象来表示对客户端的响应.
响应对象还定义了处理创建新HTTP头的接口.通过这个对象,JSP程序员可以添加新的cookie或日期戳,HTTP状态代码等.
以下方法可用于在servlet程序中设置HTTP响应头.这些方法可用于 HttpServletResponse 对象.此对象表示服务器响应.
S.不. | 方法&描述 |
---|---|
1 | String encodeRedirectURL(String url) 对指定的URL进行编码,以便在 sendRedirect 方法中使用或,如果不需要编码,则返回URL不变. |
2 | String encodeURL(String url) 通过在其中包含会话ID来对指定的URL进行编码,或者,如果不需要编码,则返回不变的URL. |
3 | boolean containsHeader(String name) 返回一个布尔值,指示是否已设置指定的响应头. |
4 | boolean isCommitted( ) 返回布尔n表示响应是否已提交. |
5 | void addCookie(Cookie Cookie) 添加指定响应的cookie. |
6 | void addDateHeader(String name,long date) 添加一个具有给定名称和日期值的响应标题. |
7 | void addHeader(String name,String value) 添加具有给定名称和值的响应标头. |
8 | void addIntHeader(String name,int value) 添加一个具有给定名称和整数值的响应头. |
9 | void flushBuffer() 强制将缓冲区中的任何内容写入客户端. |
10 | void reset() 清除缓冲区中存在的所有数据以及状态代码和标题. |
11 | void resetBuffer() 清除响应中底层缓冲区的内容,而不清除标题或状态代码. |
12 | void sendError(int sc) 使用指定的状态代码向客户端发送错误响应并清除缓冲区. |
13 | void sendError(int sc,String msg) 使用指定的状态向客户端发送错误响应. |
14 | void sendRedirect(String location) 使用指定的重定向位置向客户端发送临时重定向响应URL. |
15 | void setBufferSize(int size) 设置主体的首选缓冲区大小回应. |
16 | void setCharacterEncoding(String charset) 设置字符编码(MIME charset)发送给客户的响应,例如,发送到UTF-8. |
17 | void setContentLength(int len) 设置响应中内容主体的长度在HTTP servlet中;此方法还设置HTTP Content-Length标头. |
18 | void setContentType(String type) 如果响应尚未提交,则设置发送给客户端的响应的内容类型. |
19 | void setDateHeader(String name,long date) 设置一个具有给定名称和日期值的响应标题. |
20 | void setHeader(String name ,字符串值) 设置具有给定名称和值的响应标头. |
21 | void setIntHeader (String name,int value) 使用g设置响应头iven名称和整数值. |
22 | void setLocale(Locale loc) 设置的语言环境响应,如果响应尚未提交. |
23 | void setStatus(int sc) 设置此响应的状态代码. |
HTTP标头响应示例
以下示例将使用 setIntHeader()方法设置刷新标头以模拟数字时钟 :
<%@ 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 ExampleCurrent Time is: 9:44:50 PM
你可以尝试一下其他方法也是类似的.
免责声明:以上内容(如有图片或视频亦包括在内)有转载其他网站资源,如有侵权请联系删除
-
TV动画《入间同学入魔了》第三季制作确认 将于10月播出
根据西修原作制作的TV动画《入间同学入魔了》第三季宣布了将于2022年10月播出的消息。本作的宣传图也一并公开。在这次的新宣传图上,可以看到主人公入间和新角色巴巴托斯的样子。 《入间同学入魔了》作品讲述了被父母卖给了恶魔的14岁少年铃木入间在魔界学园生活的故事。TV动画第一季和第二季分别在20
-
华硕Z690主板发布 12代酷睿致胜神装
-
S9:ISGvsSPY 欧洲蛇咬下大白鲨赢得小组第一名!
{@SYS-PAGE-SPLIT@}
-
韩国画师冷门动物拟人作品
-
《幻塔》开服福利少?别被骗了 游戏里藏着大量白给的好东西
-
克苏鲁+伊藤润二《恐怖世界》2023年夏季推出1.0版 并登陆主机
-
iPhone15ProMax预计售价2万块,网曝有这些改变