백문이불여일타

Jsp&Servlet:: ServletConfig란? | 애너테이션 설정방법 본문

Jsp

Jsp&Servlet:: ServletConfig란? | 애너테이션 설정방법

퇴근각 2019. 8. 22. 20:23

ServletConfig란?


서블릿 확장API인 ServletConfig는 각 Servlet 객체에 대해 생성됩니다. 

 

(▼아래 내용참조하시어 그림을 확인해보시기 바랍니다.)

2019/08/20 - [Jsp] - jsp&servlet:: ServletContext란

 

jsp&servlet:: ServletContext란

ServletContext클래스란? ServletContext클래스는 톰캣 컨테이너 실행 시 각 컨텍스트(웹 애플리케이션)마다 한 개의 ServletContext객체를 생성합니다. 그리고 톰캣 컨테이너가 종료하면 ServletContext객체 역시..

java117.tistory.com

서블릿 클래스 계층 구조 

서블릿 API는 Servlet과 ServletConfig 인터페이스를 구현해 제공하며 GenericServlet 추상 클래스가 이 두 인터페이스의 추상 메서드를 구현합니다. 그리고 이 GenericServlet을 다시 HttpServlet이 상속받습니다. 

즉, Servletconfig 인터페이스를 GenericServlet 클래스가 실제로 구현하고 있는것입니다. 

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

서블릿에 대한 여러가지 기능을 제공합니다.

각 서블릿에서만 접근할 수 있으며 공유는 불가능합니다. 

ServletConfig는 서블릿과 동일하게 생성되고 서블릿이 소멸되면 같이 소멸됩니다. 

 

ServletConfig의 기능은 

  • ServletContext의 객체를 얻는 기능
  • 서블릿에 대한 초기화 작업가능 

서블릿을 초기화하는 방법으로는

  • @WebServlet 애너테이션을 이용하는방법
  • web.xml에 설정하는 방법

 

@WebServlet 애너테이션 설정방법 || 서블릿에서 사용할 설정 정보를 초기화하는 방법


애너테이션을 이용한 서블릿 설정 

서블릿 애너테이션 구성 요소들

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

@WebServlet으로 서블릿을 생성할때 사용할 매개변수를 설정해보겠다 고고

1. New >Servlet 선택

2. 클래스 이름으로 InitParamServlet 입력후 Next 클릭

3. Initialization parameters 항목의 Add 클릭!

4. email 정보 입력후 OK 클릭

5. 다시 Add  클릭해서 추가 정보 입력

6. 두 개의 서블릿 매개변수가 추가해서 확인하고 기존 매핑된 이름 제거하기 

/InitParamServlet를 Remove로 제거하기

7. Add 눌러서 새로운 매핑이름으로 2개 설정하기 

10. 서블릿에서 사용할 메서드 체크 후 Finish 클릭

체크된부분은 풀고 위에 체크된 옵션만 체크해주세요

11. 이클립스에 자동 설정된 화면 

package sec06.ex01;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebInitParam;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class InitParamServlet
 */
@WebServlet(
		urlPatterns = { 
				"/sInit", 
				"/sInit2"
		}, 
		initParams = { 
				@WebInitParam(name = "email", value = "admin@jweb.com"), 
				@WebInitParam(name = "tel", value = "010-1111-2222")
		})
public class InitParamServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		response.getWriter().append("Served at: ").append(request.getContextPath());
	}

}

 

urlPatterns , initParams 를 확인하면됩니다. 

12. 자기 스타일에 맞게 주석삭제후 getInitParametert()메서드에 애너테이션으로 매개변수를 설정할때 지정한 email과 name을 인자로 전달하여 값을 전달받는다.

package sec06.ex01;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebInitParam;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class InitParamServlet
 */
@WebServlet(
		urlPatterns = { "/sInit", "/sInit2"}, 
		initParams = { @WebInitParam(name = "email", value = "admin@jweb.com"), 
				       @WebInitParam(name = "tel", value = "010-1111-2222")})

public class InitParamServlet extends HttpServlet {
	public 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></boby></html>");
		
	}
}

13. 결과

매핑한 이름대로 브라우저에 요청하면 결과는 동일한값을 얻어오게된다. 

 


web.xml 설정방법도 다음 포스팅에서 진행해서 살펴보도록 하자 ! 고고 

2019/08/23 - [Jsp] - Jsp&Servlet:: load-on-startup 기능이란? || web.xml 설정하는법

 

Jsp&Servlet:: load-on-startup 기능이란? || web.xml 설정하는법

load-on-startup 이란? 서블릿은 브라우저에서 최초 요청시 init() 메서드를 실행한 후 메모리에 로드되어 기능을 수행합니다. 따라서 최초요청에 대해서 실행시간이 길어질수 있는 단점이 있다. 이런 단점을 보완..

java117.tistory.com

 

Comments