我正在使用 Spring MVC 开发一个 Web 应用程序,但我提出了一个问题。
在我的应用程序中,如果我想将属性发送到 JSP 文件,我会执行以下操作:
@RequestMapping("submitRestrictionPolicy")
public String submitRestrictionPolicy(HttpServletRequest req, HttpServletResponse resp) {
// Get parameters from form submit
String state = req.getParameter("checkBox");
// Set attributes to be sent to .jsp page
req.setAttribute("state", state);
return "restrictionPolicy";
}
这工作正常,我可以访问 JSP 文件中的属性“状态”并将其反射(reflect)在浏览器中。
现在我想知道为什么我们使用 HttpServletRequest 而不是 HttpServletResponse 因为根据我的理解,我们正在发送来自浏览器的请求的响应。我们不应该使用 HttpServletResponse 吗?我知道答案是否定的,因为 HttpServletResponse 中没有“setAttribute”方法。
如果使用 HttpServletRequest 为浏览器请求发送响应是正确的,那么 HttpServletResponse 的重要性是什么?
最佳答案
让我们看看事情是如何运作的......
客户端向网络服务器发送请求(HttpServletRequest)。此请求可能会从多个层传递(取决于您的应用程序),直到不再需要(HttpServletResponse 从服务器发送回客户端)。
在这些层中,您可以修改此 HttpServletRequest 对象并向其添加信息(属性)。然后,当您基于 HttpServletRequest 生成 HttpServletResponse 时,您可以利用从先前层传播的额外信息(这通常在 View 层中完成)。
现在更一般地了解 HttpServlet
s 作品可能会回答你的最后一个问题。当在 web 容器(servlet 运行)上发出 http put/get/post/.. 请求时,该请求被包装在 HttpServletRequest 类型的对象中(这就是 specification 的样子)并包含信息来自您的客户。创建响应时,它被包装在一个 HttpServletResponse 对象中,该对象包含 Web 容器的响应数据(同样基于 specification)。
关于spring - 为什么使用 HttpServletRequest 向浏览器发送响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18871204/