2

我正在使用 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 文件中的属性“状态”并将其反映在浏览器中。

现在我想知道为什么我们使用 HttpServletRequest 而不是 HttpServletResponse 因为根据我的理解,我们正在发送来自浏览器的请求的响应。我们不应该使用 HttpServletResponse 吗?我知道答案是否定的,因为 HttpServletResponse 中没有“setAttribute”方法。

如果使用 HttpServletRequest 为浏览器请求发送响应是正确的,那么 HttpServletResponse 的重要性是什么?

4

1 回答 1

0

让我们看看事情是如何运作的......

客户端向网络服务器发送请求(HttpServletRequest)。此请求可能会从多个层传递(取决于您的应用程序),直到不再需要(HttpServletResponse 从服务器发送回客户端)。

在这些层中,您可以修改此 HttpServletRequest 对象并向其添加信息(属性)。然后,当您基于 HttpServletRequest 生成 HttpServletResponse 时,您可以利用从先前层传播的额外信息(这通常在视图层中完成)。

现在,关于 s 如何工作的更一般性的内容HttpServlet可能会回答您的最后一个问题。当在 Web 容器(servlet 运行)上发出 http put/get/post/.. 请求时,该请求被包装在 HttpServletRequest 类型的对象中(规范就是这样)并包含来自您的信息客户。创建响应时,它被包装在一个 HttpServletResponse 对象中,该对象包含 Web 容器的响应数据(同样基于规范)。

于 2013-09-18T12:14:11.027 回答