위로
아래
서블릿 로딩
- WAS 내부의 서블릿 컨테이너에서 서블릿 객체를 생성할 때 초기화되며 init() 메소드 호출
- 클라이언트로부터 최초 요청시 단 한 번 초기화된다.
- 이후부터 생성된 서블릿 객체는 컨테이너에서 대기하다가, 동일한 클라이언트의 요청이 발생하면 service()메소드를 호출
초기화 메소드 init()
Servlet 인터페이스
public void init(ServletConfig config) throws ServletException;
init() 메소드가 추상메소드로 정의된 최상위 위치
GenericServlet 구현 클래스
@Override
public void init(ServletConfig config) throws ServletException {
this.config = config;
this.init();
}
public void init() throws ServletException {
}
Servlet 인터페이스의 init() 메소드를 구현
ServletConfig 인터페이스도 구현했으므로, ServletConfig의 모든 메소드 사용 가능
HttpServlet 클래스
init() 메소드 구현 X
HttpServlet을 상속하는 직접 만드는 클래스
필요에 따라 init() 메소드 Override
ServletConfig
- 클라이언트 최초 요청시 서블릿 객체 생성 후 init() 메소드를 호출 할 때, ServletConfig를 자동으로 생성하여 넘겨준다
- 서블릿당 하나가 생성된다.
- web.xml에서 입력한 파라미터 값들을 담고 있다.
- 서블릿 클래스 안에 소스로 하드코딩 되어 있을 때에 비해, ServletConfig를 이용해 web.xml에 파라미터 값을 저장하면, 이후 수정이 필요할 때 web.xml만 수정하면 된다.
getInitParameter()의 web.xml 파라미터 설정
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" id="WebApp_ID" version="4.0">
<display-name>javaBoard</display-name>
<servlet>
<servlet-name>Controller</servlet-name>
<servlet-class>control.Controller</servlet-class>
<init-param>
<param-name>id</param-name>
<param-value>gaesol</param-value>
</init-param>
<init-param>
<param-name>password</param-name>
<param-value>1234</param-value>
</init-param>
</servlet>
</web-app>
<init-param> : 서블릿 초기화시 넘겨 받을 값 설정
<param-name> : 파라미터 키
<param-value> : 파라미터 값
getInitParameter(파라미터 키) : 서블릿에서 해당 메소드를 통해 web.xml에서 지정한 파라미터 값을 불러올 수 있다
web.xml 문서에 한글 들어갈 때 설정
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
xmlns="http://xmlns.jcp.org/xml/ns/javaee";
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaeehttp://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd";
id="WebApp_ID" version="3.1">
...
</web-app>