请求范围何时实际读取

时间:2014-05-06 11:05:09

标签: java servlets

每当请求发送到服务器时,它都会转发到相应的servlet。我的问题是请求范围中的属性和参数是什么时候?

  1. 如果我们转发请求为什么参数仍然存在?
  2. 我们可以说什么时候处理了请求?

2 个答案:

答案 0 :(得分:1)

你似乎对前锋究竟是什么感到有点困惑。将其与发送电子邮件进行比较。让我们假设你被命名为ServletA,我被命名为ServletB。

客户端会向您发送电子邮件,因此他们会将该电子邮件发送给ServletA。邮件服务器接收数据并将其作为电子邮件放入收件箱中。你读它并且你认为"不,这封电子邮件不适合我。 ServletB需要处理这个"。你是做什么? 转发电子邮件给我,并附上该电子邮件中的所有内容。另一种选择是你会给我发一封带有文本副本的新电子邮件,但是你会丢失这封电子邮件来自客户的事实;它会成为你发给我的新电子邮件。转发原始电子邮件时,电子邮件将保留在客户端发送的状态。我选择回复,然后我回复客户,而不是回复你。您不再参与电子邮件处理过程。

现在将该故事翻译回"请求VS前进":

浏览器向特定网址发送HTTP请求(电子邮件);您的服务器将该URL映射到ServletA,因此它可以处理请求(在收件箱中接收电子邮件)。但是在ServletA的代码中,确定ServletB需要处理它(回复它),因此请求(电子邮件)被转发到ServletB。此时ServletB生成响应(回复),该响应将被发送回客户端。 ServletA不再参与处理此请求。

关于何时处理请求:将响应完全发送到客户端。然后完成HTTP请求周期。

我希望这会使事情变得更清楚。

答案 1 :(得分:0)

这取决于各种因素,实际上我们不能说范围可用多长时间,因为容器包含请求对象,并且该请求对象可能在其他上下文中使用,或者可能在其他servlet中,因此不是幸运要确定的事情。

  • 请求范围将被删除的唯一一种情况是服务器停止
  • 在其他情况下,还会调用destroy方法