Servlets Java中HttpServletRequest和HttpServletResponse的对象?

Servlets Java中HttpServletRequest和HttpServletResponse的对象?,servlets,Servlets,由于HttpServletRequest和HttpServletResponse是接口,我们知道在Java中无法实例化接口。 那我们怎么能在doGet()或doPost()中有这两个对象呢 //这里有东西 ....... doPost(HttpServletRequest请求,HttpServletResponse响应){ //这里有东西 }当您使用servlet运行Java Web应用程序时,您的代码将部署到Web容器(例如Tomcat)或应用程序服务器(例如JBoss)上。这些服务器提

由于HttpServletRequest和HttpServletResponse是接口,我们知道在Java中无法实例化接口。 那我们怎么能在doGet()或doPost()中有这两个对象呢

//这里有东西 ....... doPost(HttpServletRequest请求,HttpServletResponse响应){ //这里有东西
}

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

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


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

这些接口的实现类将由Web服务器(或)应用服务器提供。它们将负责为这些接口创建对象。

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

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

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

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


在运行时,当servlet容器接收到映射到servlet接口实现的请求时,容器将创建自己的
javax.servlet.http.HttpServletRequest
,它表示传入的请求,这将被传递到您的Servlet,这样它就可以处理该请求。通过请求对象可用的数据包括请求URI、请求参数等。

类似于服务器实现HttpServletRequest/Response并将相应的请求/响应对象传递给doGet(),doPost()?类似于服务器实现HttpServletRequest/Response并将相应的请求/响应对象传递给doGet(),doPost()?这只是基本的Java。你有没有想过
List
ArrayList
是如何工作的?这是一个很好的说明。谢谢你,查德。@Rishi我说这话不是为了吹嘘自己。但是,如果你认为答案是好的,你应该投票表决。向上投票有助于提供高质量的答案,当您正在寻找您感兴趣的主题的现有答案时,这非常好。这是stackoverflow的重要组成部分