【问题标题】:Objects of HttpServletRequest and HttpServletResponse in Java?Java中HttpServletRequest和HttpServletResponse的对象?
【发布时间】:2012-12-24 11:16:57
【问题描述】:

由于 HttpServletRequest 和 HttpServletResponse 是接口,我们知道在 Java 中我们不能实例化接口。 那么我们如何才能在 doGet() doPost() 中拥有这 2 个对象?

//这里有东西 ....... doPost(HttpServletRequest request,HttpServletResponse response){ //这里有东西 }

【问题讨论】:

  • 这只是基本的 Java。你有没有想过ListArrayList 是如何工作的?

标签: servlets


【解决方案1】:

这些是由运行您的 servlet 的任何 Servlet 容器提供的。这是 Java 世界如何使用接口来指定其他人通过提供这些接口的具体实现来遵循的契约的一个很好的例子。

Servlet Specification 指定用于构建 servlet 执行环境的 API,即 servlet 容器。 servlet 规范与任何标准设置文档一样,不提供实际的软件实现,仅提供行为的定义,也就是实现软件必须遵循的契约。接口用于定义此行为。

这些接口是在javax.servlet.* 包空间中提供的,它是Java EE 的一部分——我认为。无论如何,它是 Java 的一部分。希望提供 Servlet 容器实现的人们必须提供实现这些接口的类;特定实现的内部细节——tomcat、jetty 等——可以有很大的不同,只要它们符合接口的约定。

许多接口是由 servlet 容器本身实现的,但有些是由应用程序开发人员实现的。例如,如果您正在编写一个 web 应用程序,您可能会提供自己的应用程序特定的 javax.servlet.Servlet 接口实现。

在运行时,当 servlet 容器接收到映射到您的 Servlet 接口实现的请求时,容器将创建它自己的 javax.servlet.http.HttpServletRequest 实现,它表示传入的请求,并将其传递给您的Servlet,因此它可以对那个请求做任何它想做的事情。可通过请求对象获取的数据包括请求URI、请求参数等。

【讨论】:

  • 这是一个插图和很好的解释。谢谢乍得。
  • @Rishi 我这样说并不是为了自吹自擂。 . .但是,如果您认为答案很好,则应该对其进行投票。投票有助于提供质量答案的衡量标准,当您正在寻找您感兴趣的主题的现有答案时,这是非常好的。它是 stackoverflow 的重要组成部分
【解决方案2】:

这些接口的实现类将由 Web 服务器(或)应用程序服务器提供。他们会注意为这些接口创建对象。

【讨论】:

    【解决方案3】:

    当您使用 Servlet 运行 Java Web 应用程序时,您的代码将部署到 Web 容器(例如 Tomcat)或应用程序服务器(例如 JBoss)上。这些服务器提供它们自己的这些接口的实现(即实现这些接口的具体类)并将它们的实例传递给您的 servlet 的方法。

    【讨论】:

    • 类似Server实现HttpServletRequest/Response并将相应的请求/响应对象传递给doGet(),doPost()?
    【解决方案4】:

    “servlet 容器”* 提供这些对象的实现。在编写单元测试时,您可以使用 Mockito 等模拟框架来实例化这些接口的模拟实现。

    *例如Google App Engine、Glassfish、Tomcat、JBoss 等。

    【讨论】:

    • 类似Server实现HttpServletRequest/Response并将相应的请求/响应对象传递给doGet(),doPost()?
    猜你喜欢
    • 2015-07-13
    • 2016-08-11
    • 2017-12-01
    • 1970-01-01
    • 2021-09-22
    • 1970-01-01
    • 1970-01-01
    • 2011-07-28
    • 2017-08-04
    相关资源
    最近更新 更多