为什么ServletRequest有setAttribute,而不是ServletResponse?

问题描述 投票:0回答:3

我不明白为什么ServletRequest有一个setAttribute方法。 例如: 如果我有一个包含 1 个文本框和一个提交按钮的 jsp 页面...

我的目标是当我提交时我的名字应该显示在该文本框中。 这里的问题:该文本框中显示的内容都是来自 servlet 的response,对吗?

但是在我的 servlet 部分作业中: 写的是 request.setAttribute("name","abc");

在jsp端:
上面写着:

<input type="text" value = < %request.getAttribute("name")% > >

我知道在 javadocs 中他们在请求中设置了属性,但为什么不在响应中设置属性?

jsp servlets
3个回答
11
投票

请求:从客户端到服务器

响应:从服务器到客户端

当您的客户端发送您的 servlet 请求时,您在请求中添加对象,然后在 jsp 中检索它。请求从 servlet 传递到 jsp。您的 jsp 检索该对象,生成 HTML 并将其作为响应发送回您的浏览器。客户端发送的相同请求从一个 servlet 或 jsp 传递到另一个 jsp 或 servlet,然后这些请求被编译生成 HTML 格式并作为来自服务器的响应发送到浏览器。在响应中设置对象没有意义,因为浏览器只显示 HTML。


6
投票

因为我认为设置响应的属性是没有意义的。您可以去酒店订午餐。这就是请求,而你午餐想要什么,那就是请求的属性。但食物的质量即反应完全取决于酒店(服务器)。相似地 当 Web 服务器响应浏览器的 HTTP 请求时,响应通常由状态行、一些响应标头和文档(可选,如任何 JSON 数据或类似内容)组成。因此,如果你有response.setAttribute,即意味着你可以将浏览器的名称从Mozilla更改为Chrome,但这太疯狂了。


6
投票

当他们说 request.setAttribute(Object, Object) 时,只是暗示该属性的范围仅适用于该请求,并且该属性将不会存在于后续请求中。在 JSP 上显示数据(例如在文本框中显示您的姓名)仍然属于请求范围内的任务。您正在将数据附加到请求对象。

© www.soinside.com 2019 - 2024. All rights reserved.