본문 바로가기

카테고리 없음

[JAVA - WEB] 서블릿 초기화

728x90
반응형

ServletConfig 은 javax.servlet 패키지에 인터페이스로 선언되어 있으며, 서블릿에 대한 여러가지 기능을 제공합니다.

서브릿과 동일하게 생성되고 서블릿이 소멸하면 같이 소멸되므로 다른 서블릿과 공유는 불가능합니다.(하나의 서블릿만..)

그리고 서블릿에서 사용할 설정 정보를 읽어 들여와 초기화 할수 있습니다.

 

 

@WebServlet 애너테이션 

 

이클립스에서 서블릿을 생성할 때 @WebServlet 의 값들을 편리하게 설정할 수 있습니다.

 

@WebServlet  구성 요소

 

요소 설명
urlPatterns 웹 브라우저에서 서블릿 요청 시 사용하는 매핑 이름
name 서블릿 이름
loadOnStartup 컨테이너 실행 시 서블릿이 로드되는 순서 지정
initParams @WebInitParam 애너테이션 이용해 매개변수를 추가하는 기능
description 서블릿에 대한 설명

 

서블릿을 생성할 때 매개변수를 설정해 보겠습니다.

 

서블릿을 생성해야 될 위치를 선택하여 마우스 오른쪽 버튼 클릭 후 New - Servlet 를 선택합니다.

 

 

Class name 을 입력한 후 Next 를 클릭합니다.

 

 

Initialization parameters 항목의 Add... 버튼을 클릭합니다.

 

Name 과 Value 항목을 작성하고 OK 를 클릭합니다.

Add.. 버튼을 눌러서 한가지 항목을 더 작성하여 줍니다.

 

 

URL mapping 항목도 수정해주고 Next 를 클릭합니다.

 

 

Injerited abstract method 와 doGet 의 체크박스를 선택한 후 Finish 버튼을 클릭합니다.

 

 

위와 같이 초기 설정이 @WebServlet 에 설정된 것을 확인할 수 있습니다.

 

서블릿에서 초기 파라미터로 설정된 데이터를 가져와서 출력하도록 합니다.

 

protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		response.setContentType("text/html;charset=utf-8");
		PrintWriter out = response.getWriter();
		String email = getInitParameter("email");
		String tel = getInitParameter("tel");
		out.print("<html><body>");
		out.print("<table><tr>");
		out.print("<td>email: </td><td>" + email + "</td></tr>");
		out.print("<tr><td>전화번호: </td><td>" + tel + "</td>");
		out.print("</tr></table></body></html>");

	}

 

웹 브라우저에서 요청을 하면 초기 설정된 값이 정상적으로 출력되는 것을 확인할 수 있습니다.

 

 

@WebServlet 에 동일한 파라미터로 URL mapping 을 여러개 설정할 수도 있으니 참고 하시기 바랍니다.(Init1, Init2, ...)

 

 

 

load-on-startup 기능

 

간단하게 설명드리면 서블릿들이 메모리에 로드될 때 우선순위를 지정하는 방법입니다.

숫자가 작을수록 우선순위가 높게 설정됩니다.

톰캣 실행 시 init() 메서드를 호출하면 getInitParameter() 메서드를 이용해 web.xml 의 메뉴 정보를 읽어온 후 다시 ServletContext 객체에 setAttribute() 메서드로 바인딩합니다.

브라우저에서 요청하면 web.xml 이 아니라 ServletContext 객체에서 메뉴 항목을 가져온 후 출력하기 때문에 파일에서 읽어 들여와 출력하는 것보다 빨리 출력할 수 있습니다.

 

설정 방법은 @WebServlet 애너테이션에서 간단하게 설정 가능합니다.

 

@WebServlet(name = "loadOnStartup", urlPatterns = {"/loadOnStartup"}, loadOnStartup = 1)

 

여기까지 임미다.

728x90