doget()
서블릿 메소드 내에서 init()
메소드를 호출하면 어떻게되는지 알려주십시오. 예외가 발생합니까? 서블릿 라이프 사이클에 어떤 영향을 미칩니 까?서블릿의 doget() 메소드 내에서 init() 호출
알려 주시기 바랍니다.
doget()
서블릿 메소드 내에서 init()
메소드를 호출하면 어떻게되는지 알려주십시오. 예외가 발생합니까? 서블릿 라이프 사이클에 어떤 영향을 미칩니 까?서블릿의 doget() 메소드 내에서 init() 호출
알려 주시기 바랍니다.
대부분의 경우 init()
메서드의 코드가 실행됩니다.
init
메소드에는 특별한 것이 없습니다. 단, 컨테이너가 서블릿을 사용하기 전에 호출한다는 점만 다릅니다. 언제든지 전화 할 수 있습니다. init
메서드가 공유 데이터의 값을 변경하면 이상한 문제가 발생할 수 있습니다.
누군가가 doGet
방법에서 init
으로 전화해야하는 이유를 상상할 수 없습니다.
우선 doGet()
에서 init()
메서드를 호출하고 어떤 결과가 발생했는지 궁금하면이 질문을 피할 수 있습니다. 어쨌든
, 서블릿 사양 2.3은 말한다 : 서블릿이 영구적 구성 데이터를 읽을 수 (예 : JDBC ™ API 기반 연결로) 비용이 많이 드는 자원을 초기화하고 원 - 기타 수행 할 수 있도록
초기화가 제공됩니다 시간 활동.
그래서, 당신은 당신의 현재 init()
방법에서 얼마나 그 일회성 활동의 많은 궁금합니다. 이 메소드를 호출하는 것은 다른 메소드를 호출하는 것과 다르지 않습니다. 나는 당신의 init()
메소드가 유일하게하는 일이 ServetConfig
의 초기화 매개 변수에서 소유 된 속성을 초기화하는 시나리오에서 생각하고 있습니다. 그럴 경우 잘못된 것은 없습니다.
그러나 init()
메서드가 서블릿의 내부 상태를 변경할 수있는 작업을 수행하면 이상한 동작이 발생할 수 있습니다.
init()
메서드의 작업을 doGet()
에서 사용해야 할 수도있는 작업을 수행하는 경우 개인 내부 메서드로 이동하십시오.
init() 메소드를 구현하지 않은 경우 아무런 변화가 없습니다.. 이유는 상속 된 구현이 비어 있다는 것입니다.
public void init() throws ServletException {
// NOOP by default
}
당신이 당신의 자신의 구현이있는 경우, 구현에서 다음 코드는을 실행 : 서블릿 가능성이 GenericServlet에서 구현 다음 상속, HttpServlet을 확장합니다. 예외를 던지 느냐는 - 당신이 코딩 한 것에 의존한다.
ServletConfig를 인수로 사용하는 init을 호출하면 원래 ServletConfig가 대체되고 init()
이 호출된다. init
또는 init(ServletConfig)
메쏘드에 전화하는 이유를 알 수 없습니다. 필요한 경우에 오버라이드 (override) 해, 서블릿 컨테이너에 의해 불려가는 메소드가 있습니다.
시도해 보셨습니까? – johusman
절대로 이렇게하지 마십시오. 그것은 서버를 어두운면으로 건너 뛰고 브라우저를 실행하는 컴퓨터를 튀기고 나서 브라우저 자체를 파괴합니다. 운명적인 요청을 보내는 서버와 브라우저가 어디에 있는지에 따라 대서양 횡단 통신 케이블에서 문제가 발생할 수 있습니다. –