본문 바로가기

web../servlet/jsp

ServletConfig & ServletContext

" ServletConfig에 대하여.. " 


서블릿에 초기화 파라미터가 있다.

컨테이너는 DD를 읽는다 -> 컨테이너는 새로운 ServletConfig 인스턴스를 만든다(servlet당 하나씩) -> 컨테이너는 초기화 파라미터에 있는 값들을 이름/값의 쌍 형식으로 읽어들인다


▶ 컨테이너는 서블릿 클래스 인스턴스를 생성한다 -> 컨테이너는 ServletConfig의 참조를 인자로 서블릿의 init()를 호출한다.

1. DD 파일에서

<servlet>

<init-param>

<param-name> adminEmail </param-name>

<param-value> mkk@nate.com </param-value>

</init-param>

</servlet>


2. 서블릿에서

getServletConfig().getInitParameter("adminEmail");   //서블릿엔 상속받은 getServletConfig()가 있음. 

                ServletConfig를 리턴한다.

서블릿 생성자에서는 getSetvletConfig()메서드를 호출할수 없다. init()메서드가 호출되고 난 후에야 서블릿은 정체성을 가지기 때문이다.

GenericSetvlet에는 init(ServletConfig)와 init()메소드가 있다. init(ServletConfig) 메소드는 내부적으로 init()를 호출한다. 이렇게 하면 개발자가 init()메소드를 재정의 할수 있다. 

init(ServletConfig)를 재정의 말란법은 없다. 재정의 하려면 super.init(ServletConfig); 을 먼저 기입하자.

백전 양보해도 개발자가 init(ServletConfig)를 재정의 할필요는 없다. getServletConfig()메서드로 ServletConfig를 리턴받으면 되기 때문이다.


[중요] ServletConfig객체는 서블릿에서만 접근 가능하다. jsp로 이 정보를 넘기려면 Request객체에 담아서 넘겨야 하는 수고스러움이 있다. 이를 해결하려면 컨텍스트 초기화 파라미터가 답이다. ServletContext객체는 서블릿과 jsp에서 접근가능하다. 





" ServletContext에 대하여... "

> DD 에서..

<context-param>

<param-name> adminEmail </param-name>

<param-value> mkk@nate.com </param-value>

</context-param>


> 서블릿에서..

getServletContext().getInitParameter("adminEmail");  //getServletContext()의 리턴은 당연히 ServletContext객체.

[중요] DD 에서 <init-param> 은 <servlet>안에.. <context-param>은 <servlet> 밖에..

[중요] ServletContext는 딱 한개, ServletConfig는 서블릿당 한개.   ( jsp도 자신만의 ServletConfig가 있음. )

[참고] 애플리케이션이 클러스트링 환경의 여러 곳에서 실행 된다면 ServletContext는 JVM당 하나씩이다.

> 자주쓰는 메소드

getInitParameter(String)

getInitParameterNames()

getAttribute(String)

getAttributeNames()

setAttribute(String, Object)

removeAttribute(String)

getRequestDispatcher(String)

'web.. > servlet/jsp' 카테고리의 다른 글

서블릿 welcome-file 변경  (0) 2013.03.19
ServletContextListener 란?  (0) 2013.01.09
HttpServletRequest 객체 & HttpServletResponse 객체  (0) 2013.01.09
서블릿의 생명주기 & 멱등  (0) 2013.01.09
HTML과 HTTP  (0) 2013.01.09