Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java servlet将数据传输到浏览器_Java_Http_Jsp_Http Headers_Servlet 3.0 - Fatal编程技术网

Java servlet将数据传输到浏览器

Java servlet将数据传输到浏览器,java,http,jsp,http-headers,servlet-3.0,Java,Http,Jsp,Http Headers,Servlet 3.0,关于Java servlet,我有几个问题: 1) 当浏览器第一次请求servlet时会发生什么 2) response.setContentType(文本,html)是发送到浏览器的第一条指令吗 一直在网上搜索答案,但不太确定 谢谢不,首先要发送的是HTTP版本:) HTTP/1.1200正常 日期:2013年1月17日星期四格林威治标准时间21:31:11 服务器:Apache/1.3.3.7(Unix)(Red Hat/Linux) 最后修改:2013年1月1日星期三21:11:25 GM

关于Java servlet,我有几个问题:

1) 当浏览器第一次请求servlet时会发生什么

2) response.setContentType(文本,html)是发送到浏览器的第一条指令吗

一直在网上搜索答案,但不太确定


谢谢

不,首先要发送的是HTTP版本:)

HTTP/1.1200正常
日期:2013年1月17日星期四格林威治标准时间21:31:11
服务器:Apache/1.3.3.7(Unix)(Red Hat/Linux)
最后修改:2013年1月1日星期三21:11:25 GMT
内容类型:text/html;字符集=UTF-8
网站内容
在这里

内容前面的最后一行是您正在谈论的内容类型。这些标题可能以不同的顺序出现,并且通常有更多的标题。它们的顺序没有严格定义,可能内容类型会出现在日期之前。然而,HTTP版本号和响应代码(在我的示例中是200-OK)总是排在第一位。阅读有关HTTP字段的更多信息。

否,首先要发送的是HTTP版本:)

HTTP/1.1200正常
日期:2013年1月17日星期四格林威治标准时间21:31:11
服务器:Apache/1.3.3.7(Unix)(Red Hat/Linux)
最后修改:2013年1月1日星期三21:11:25 GMT
内容类型:text/html;字符集=UTF-8
网站内容
在这里

内容前面的最后一行是您正在谈论的内容类型。这些标题可能以不同的顺序出现,并且通常有更多的标题。它们的顺序没有严格定义,可能内容类型会出现在日期之前。然而,HTTP版本号和响应代码(在我的示例中是200-OK)总是排在第一位。阅读有关HTTP字段的更多信息。

关于您的问题2):

servlet并不是真的向浏览器发送“指令”,而是以某种方式构造响应。他们可能(但可能不会)立即发送头,或者在您第一次尝试写入响应主体时发送头,在您填充一些内部缓冲区时发送头,或者他们可能会缓冲整个响应,直到您完成。已发送的头的术语是响应已“提交”,虽然您可以确定给定响应是否发生了这种情况,但您无法从API中真正防止这种情况发生。(我试着查看Jetty 6的实现,看看会发生什么,但代码并不简单,这似乎意味着容器实现在这里有一定的回旋余地。)


另外,当第一次请求servlet时,servlet可能由容器实例化。(除非它以前是实例化的,因为您在
web.xml
中设置了
1
,或者可能是因为容器选择了这样做-我不确定是否允许实现这样做。)

关于您的问题2):

servlet并不是真的向浏览器发送“指令”,而是以某种方式构造响应。他们可能(但可能不会)立即发送头,或者在您第一次尝试写入响应主体时发送头,在您填充一些内部缓冲区时发送头,或者他们可能会缓冲整个响应,直到您完成。已发送的头的术语是响应已“提交”,虽然您可以确定给定响应是否发生了这种情况,但您无法从API中真正防止这种情况发生。(我试着查看Jetty 6的实现,看看会发生什么,但代码并不简单,这似乎意味着容器实现在这里有一定的回旋余地。)


另外,当第一次请求servlet时,servlet可能由容器实例化。(除非它之前被实例化是因为您在
web.xml
中设置了
1
,或者可能是因为容器选择了这样做——我不确定是否允许实现这样做。)

阅读Head-First servlet和JSP。所有这些概念都解释得很清楚,特别是对于初学者来说,这本书太好了——读头先servlet和JSP。所有这些概念都解释得很清楚,特别是对初学者来说这本书太好了谢谢你的回答我只是想知道你是否知道Servlet中出现空指针异常的典型原因是什么?@user1344192与任何Java程序一样,取消对空指针的引用。(这没有典型的根本原因,因为它取决于整个应用程序中的数据流。)启动调试器,在异常发生的行之前将其中断,您好,谢谢您的回答,我只是想知道Servlet中出现空指针异常的典型原因是什么?@user1344192与任何Java程序一样,取消对空指针的引用。(这没有典型的根本原因,因为它取决于整个应用程序中的数据流。)启动调试器,让它在异常发生的行之前中断,并检查其中的表达式以查看哪个表达式为空。
   HTTP/1.1 200 OK
   Date: Thu, 17 Jan 2013 21:31:11 GMT
   Server: Apache/1.3.3.7 (Unix) (Red-Hat/Linux)
   Last-Modified: Wed, 01 Jan 2013 21:11:25 GMT
   Content-Type: text/html; charset=UTF-8   

   <HTML>website contents
   here</HTML>