2011-05-05 3 views
4

서블릿 인터페이스의 service() 방법은 ServletResponse를의 인스턴스를 반환하지 않는 것이 아니라 컨테이너에서 제공하는 ServletResponse를 객체에서 작동?Servlet.service() 메서드가 ServletResponse의 인스턴스가 아니라 void를 반환하는 이유는 무엇입니까?

public void service(ServletRequest request, ServletResponse response); 

하고 싶지 :

public ServletResponse service(ServletRequest request); 

답변

9

응답 개체가 인 경우 서블릿 컨테이너에서을 제공하면 버퍼링과 같은 작업을 제어 할 수 있습니다. 예를 들어, 자신의 ServletResponse을 만들었다 고 가정합니다. 데이터를 버퍼링하는 대신 특정 길이 이상인 경우 컨테이너가 응답을 스트리밍하는 기능을 어떻게 관리합니까?

+0

나에게 묻는 질문에 답해 주셔서 대단히 영광입니다. (: D)하지만 값을 캐시하고 싶다면 값을 반환하는 대신 특정 길이의 매개 변수를 전달하는 것이 어떻게 도움이 될지 정확히 이해하지 못합니다. 나는 여기 전문가가 아니지만 나는되고 싶다. 나는 생각한다. 나는 도움이 필요하다. 다시 감사합니다. 고맙습니다!! –

+0

@Satadru : 메소드가 * 값을 반환해야하는 경우 * 서블릿 컨테이너가 제어하지 못하고 응답 버퍼링과 같은 작업을 제어하는 ​​서블릿 컨테이너의 작업입니다. 이는 일반적으로 개별 서블릿에 달려 있지 않습니다. 특정 방식으로 동작하도록 서블릿 컨테이너를 구성하면 서블릿에 쓸 적절한 ServletResponse를 제공합니다. (이것은 * 캐싱 *에 관한 것이 아니라 * 버퍼링에 관한 것임을 유의하십시오.) –

+0

@Satadru : "front servlet"이란 무엇을 의미합니까? 그 용기 말이니? 그것은 어떤 종류의 응답을 제공하는지 알 필요가 없습니다. 바이너리 데이터 나 텍스트 데이터를 쓸 수 있으며, 헤더 등을 설정할 수 있습니다. –

2

그것은 용기가 부분적으로 구축 응답을 사용하여 간단하게 말하면

이유 같은 서블릿 인터페이스의 서비스 방법이다. 그것은 전체 천에서 응답을 구축하지 않습니다. 어떤 경우에도 논쟁이되어야합니다.

+0

프로토콜 데이터와 쿠키가 포함 된 응답 헤더 및 이와 유사한 항목을 추가 하시겠습니까? –

관련 문제