본문으로 바로가기

서블릿 초기화 파라미터(ServletConfig)

category Back-End/JSP 2018. 9. 17. 22:13
서블릿이 초기화 될 때 인자들을 줄 수 있으며 그 방법은 크게 2가지가 있다.

1. web.xml을 통한 설정
 web.xml내에 서블릿은 <servlet> 태그로 표현되며 <servlet-name> <servlet-class> 등 속성을 갖고있다.
여기에 <init-param>이라는 태그를 이용해 서블릿의 초기화 인자를 줄 수 있다.
<init-param>은 내부에 <param-name>, <param-value> 태그가 있어 각각 초기화 인자의 이름, 값을 표현한다.

<servlet>
<servlet-name>서블릿이름</servlet-name>
<servlet-class>클래스이름</servlet-class>
<init-param>
<param-name>인자이름</param-name>
<param-value>값</param-value>
</init-param>
</servlet>

위와 같이 설정된 초기화 인자는 서블릿의 getInitParameter("인자이름")을 통해 그 값을 가져와 사용가능하다.

1) 테스트할 서블릿 만들기
 

2) web.xml에 등록

 

서블릿 등록 후 <init-param>태그를 통해 초기화 인자 지정해주고, /initTest로 매핑


3) 서블릿에서 초기화 인자 가져와서 처리내용 구현

 
getInitParameter는 HttpServlet에서 상속받아 사용가능한 메소드이며 HttpServlet도 GenericServlet의 상속을 받아 getInitParameter를 갖고있다. GenericServlet클래스는 ServletConfig 인터페이스를 implements 함으로써 갖고있다.
this.getServletConfig().getInitParameter("") 이런식으로도 사용가능하지만 굳이 그럴필요없이 아무런 레퍼런스 없이 위와같이 바로 사용할 수도 있다.

getInitParameter("<param-name>") -> return "<param-value>"

그리고 doGet의 response객체의 getWriter()는 클라이언트쪽의로의 출력버퍼를 얻어오는 메소드이다.
출력버퍼의 println메소드를 호출하면 저기 imageFilePath내용이 클라이언트쪽으로 출력되어 화면에 보이게 된다.

즉 imageFilePath 변수엔 web.xml에서 설정한거와 같이 C:\\HelloProject\\resource\\가 들어있을거고 저 내용이 클라이언트(웹브라우저)로 출력되면서 브라우저에 C:\\HelloProject\\resource\\ 문자열이 보이게 되는 것이다.

4) 결과 확인


 

다음과 같이 doGet에 정의한 대로 출력된 내용이 보여진다.





2. 서블릿 파일(.java)에 바로 설정하는 방법



위와 같이 서블릿 상단에 @(어노테이션)을 통해 설정을 할 수 있다.

어노테이션, 내부속성과 web.xml의 태그는 다음과 같이 비교할 수 있다.

@WebServlet = <servlet>
urlPatterns = <servlet-mapping>태그 내에 <url-pattern>
initParams = <init-param>들을 묶는것( { } 중괄호로 묶임)
@WebInitParam = <init-param> 한 개
name = <param-name>
value = <param-value>

위와 같으며 initParams {} 안에 여러 @WebInitParam들이 들어갈 수 있다.

web.xml에 서블릿 설정 코드를 지우고 저 내용을 추가해서 실행해봐도 결과는 같다.

 


댓글을 달아 주세요