" 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 |