我正在学习Servlets和JSP。我想知道“doGet”和其他可能被覆盖的方法。 “doGet”需要2个参数 - HTTPServletRequest请求和HTTPServletResponse响应。这是我的问题:请求和响应对象在方法体中使用,但我没有看到任何对象创建,例如request = new HTTPServletRequest。这些对象是否在别处创建,在超类?这只是一个Java问题,因为我经常对Applet也有疑问,即Graphics g对象被传递给“paint”方法,但我没有看到它在任何地方创建?
GF
答案 0 :(得分:2)
通常,在任何编程语言中,当使用对象的实例(或任何参数)调用方法时,是的,那些对象是在某处创建的。
在大多数情况下,您不必担心 ,只是他们在您的功能中处理它们时。
尽管回到你的问题,虽然某些情况可能是某个对象是通过非传统方式创建的(取决于技术堆栈),但如果你有参考的话,你可以放心。一个在你编写的方法中传递给你的对象,然后它是在调用堆栈中的某个地方使用传统方式创建的(如果你有多个线程,则使用另一个方法创建)。
对于Java,这意味着有人在某个时刻调用了new ...
,并将其提供给方法的调用站点,以便将其作为参数传递。
答案 1 :(得分:2)
在您给出的两个示例中,servlet和applet中,代码在容器内运行。 Tomcat是servlet的容器,这意味着容器提供了某些功能。在这种情况下,容器将创建请求和响应对象,并将它传递给您的servlet。
如果您编写一个单独运行的普通Java程序,那么您负责创建所有对象。
答案 2 :(得分:1)
它由Web服务器(例如tomcat)创建,并使用此参数调用您的servlet
答案 3 :(得分:0)
在呼叫站点创建对象。即调用该方法的人负责创建他/她作为参数传递给方法的对象(当然,除非他传递已经存在的对象,但这些对象之前也曾在某处创建过。)
答案 4 :(得分:0)
servlet中的所有方法都由servlet容器调用,例如tomcat