2010-02-15 4 views
4

나는 서블릿과 JSP를 배우고있다. 나는 "doGet"과 overidden 될 수있는 다른 방법에 대해 궁금합니다. "doGet"은 HTTPServletRequest 요청과 HTTPServletResponse 응답의 두 가지 매개 변수를 취합니다. 이것은 내 질문입니다 : 요청 및 응답 개체는 메서드 본문 내에서 사용되지만 개체 생성을 볼 수 없습니다. request = new HTTPServletRequest. 이러한 객체는 다른 위치에 생성됩니다. 수퍼 클래스에? 이것은 Java 애플릿 일뿐입니다. 예를 들어 Graphics g 객체가 "paint"메소드로 전달되었지만 어디서나 생성되는 것을 볼 수 없습니까?개체를 만드는 것과 동일한 방법으로 매개 변수를 전달합니까?

GF

+0

제거 서블릿 관련 태그를 호출된다. – skaffman

답변

2

서블릿과 애플릿을 제공 한 두 예제에서 코드는 컨테이너 내부에서 실행됩니다. Tomcat은 서블릿의 컨테이너이며 컨테이너가 특정 기능을 제공함을 의미합니다. 이 경우 컨테이너는 요청 및 응답 오브젝트를 작성하여 서블릿에 전달합니다.

자체로 실행되는 일반 Java 프로그램을 작성하는 경우 모든 오브젝트를 작성해야합니다. 이보다 훨씬 더 기본적인 문제이기 때문에 서블릿에서

+0

예, 괜찮아요. 재미 있긴하지만, 대부분의 자바 서적은 실제로 이것을 전혀 설명하지 않습니다. 분명히 다른 사람들은 과거에 이것에 대해 궁금해했습니다. 어쨌든 고마워. – Grungefreak

+0

@Grungefreak 나는 그 설명이 책에 있다고 생각하지만, 그것이 정확히 당신이 필요로하는 방식으로 기술되지는 않을 것이다. 그것은 stackoverflow에 대한 좋은 점입니다 ... 당신은 매우 구체적인 질문을하고 당신이 이해하는 데 필요한 방식으로 명시된 것들을 얻을 수 있습니다. –

+0

예 전적으로 동의합니다. 이 짧은 실은 나를 혼란스럽게 만들었습니다. 나는 "호출 사이트"라는 용어가 실제 메소드를 호출하는 (메소드 호출자) 코드 섹션이라고 추정하고 있습니까? – Grungefreak

2

일반적으로, 메소드가 객체 (또는 그 문제에 대한 모든 매개 변수)의 인스턴스를 호출하는 모든 프로그래밍 언어로, 그래, 그 개체가 어딘가생성됩니다.

대부분의 경우

, 당신은 당신의 기능을 내부에 그들과 함께 처리 할 때 그들이을 그냥 것을는 에 대해 걱정할 필요가 없습니다.

다시 생각해 보면, 비 전통적인 수단 (기술 스택에 따라 다름)을 통해 객체가 생성 된 경우가있을 수 있지만 참조가있는 경우 더 자주 보장 될 수 있습니다. 당신이 작성한 메소드에서 전달 된 객체에 호출 스택의 어딘가에 (또는 여러 개의 스레드가있는 경우에는 다른 것을 사용하여) 전통적 방법을 사용하여 생성됩니다.

Java의 경우 누군가가 new ...이라고 부르며 메서드의 호출 사이트에서 매개 변수로 전달할 수있게했습니다.

+0

좋아, 나는 여기서 꽤 깊이 파고 있을지도 모른다고 받아 들인다. 그러나 나는 무슨 일이 일어나고 있는지 정말로 깊이 생각해보기 위해 노력하고있다. 애플릿의 "paint()"메소드의 경우 Graphics 객체가 전달됩니다. 애플릿이 브라우저 내부에서 실행될 때 Java Plugin은 그래픽 객체를 어디에서 생성했는지 알 수 없으므로 어떻게 든 생성합니까? GF – Grungefreak

+0

@GrungeFreak : 네, 그게 정확히 무엇입니까. JVM은 Graphics 객체를 생성하기 위해 플랫폼이 무엇이든간에 상호 작용할 것이고 적절한 경우 인스턴스를 전달하는 페인트 메소드를 호출 할 것입니다. – casperOne

1

그것은 (예를 들어, 바람둥이) 웹 서버에 의해 생성, 그리고이

0

객체는 호출 사이트에서 생성 된 매개 변수와 함께 당신의 서블릿을 호출. 나는. 메서드를 호출하는 사람은 매개 변수로 메서드에 전달 된 개체를 만드는 역할을 담당합니다 (물론 기존 개체를 전달하지 않는 한 물론 그 이전에 개체가 만들어져 있습니다).

+0

일반적인 진술로서 이것은 사실이 아닙니다. 개체 생성은 여러 다른 위치에서 발생할 수 있습니다. 그것은 * 전화 사이트에 * 있어야하지 않습니다.콜 사이트가 매개 변수로 전달하려는 생성 된 객체에 대한 액세스 권한을 가져야한다는 것입니다. – casperOne

+0

@casperOne : 그래서 그는 "이미 기존 객체를 넘기지 않는 한"이라고 썼습니다. – sepp2k

0

모든 방법은, Tomcat과 같은 서블릿 컨테이너에 의해

관련 문제