Recent Posts
Recent Comments
Link
11-24 07:02
Today
Total
관리 메뉴

삶 가운데 남긴 기록 AACII.TISTORY.COM

서블릿 설정(web.xml)과 변수 본문

DEV&OPS/Java

서블릿 설정(web.xml)과 변수

ALEPH.GEM 2022. 6. 10. 17:01

web.xml

서블릿 실행에 관한 정보를 설정할 때는 web.xml의 <servlet>태그로 설정합니다.

web.xml은 WAS(톰캣)을 시작할 때 WAS가 읽어들이는 정보입니다.

web.xml의 <web-app> 태그 안쪽에 아래의 <servlet>태그와 <servlet-mapping> 태그의 내용을 추가합니다.

<!-- 생략 -->

	<servlet>
		<servlet-name>initParam</servlet-name>
		<servlet-class>net.aacii.test.InitParamServlet</servlet-class>
		<init-param>
			<param-name>id</param-name>
			<param-value>guest</param-value>
		</init-param>
		<init-param>
			<param-name>password</param-name>
			<param-value>1234</param-value>
		</init-param>
		<load-on-startup>1</load-on-startup>
	</servlet>
	
	<servlet-mapping>
		<servlet-name>initParam</servlet-name>
		<url-pattern>/initParamTest</url-pattern>
	</servlet-mapping>
	
 <!-- 이하 생략 -->

<servlet>태그는 설정하려는 서블릿을 지정해줍니다.

<init-Param>태그는 서블릿에 변수를 전달할 때 사용합니다.

서블릿에서 직접 변수를 입력할 수도 있지만 수정할 때 다시 컴파일 하고 다시 deploy 해야 하지만 web.xml에 변수를 설정해주면 WAS의 재시작 만으로 설정된 변수값들을 사용할 수 있습니다.

일반적으로 서블릿 객체가 메모리에 생성되는 시점은 클라이언트로부터 최초 요청이 있을 때입니다.

하지만 <load-on-startup>태그는 WAS가 시작될 때 서블릿 객체를 생성합니다.

그래서 이 <load-on-startup>태그를 사용하면 클라이언트 요청 전에 미리 준비할 수 있습니다.

이 태그안의 숫자는 우선순위를 의미합니다.

 

net.aacii.test 패키지 아래에 클래스를 하나 생성하여 이름을 InitParamTest.java 로 생성한뒤 아래와같이 작성해봅시다.

package net.aacii.test;

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

import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class InitParamServlet extends HttpServlet {
	String id, password;
	
	@Override
	public void init(ServletConfig config) throws ServletException{
		//web.xml의 init-param에 정의한 변수들을 읽어옵니다.
		id=config.getInitParameter("id");
		password=config.getInitParameter("password");
	}
	
	@Override
	public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		resp.setContentType("text/html;charset=UTF-8");
		PrintWriter out = resp.getWriter();
		out.print("<html><head><title>서블릿 초기 변수 추출</title></head>");
		out.print("<body>");
		out.print("ID: " + id +"<br/>");
		out.print("PW: " + password +"<br/>");
		out.print("</body></html>");
		out.close();
	}
	
}

http://localhost:8080/jsp/initParamTest 으로 테스트 해보면 web.xml에 설정된 id, password가 출력되는 것을 확인할 수 있습니다.

이러한 방식은 공통 설정값들을 web.xml로 변수로 등록 후 각각의 서블릿에서 사용할 때 유용하게 사용됩니다.

 

서블릿의 멤버변수와 지역변수

자바에서 지역변수는 메소드 내부에 선언하는 변수를 말합니다.

멤버변수는 인스턴스객체에 소속된 변수를 말합니다.

지역변수는 stack영역에 저장되는 반면 멤버변수는 heap영역에 저장됩니다.

서블릿의 멤버변수는 서블릿을 실행하는 모든 클라이언트가 공유하며 서블릿의 지역변수는 각 클라이언트마다 독자적으로 생성하여 사용된다는 점을 유의하길 바랍니다.

 

 

 

 

 

 

 

 

 

 

728x90

'DEV&OPS > Java' 카테고리의 다른 글

쿠키 Cookie  (0) 2022.06.14
ServletContext  (0) 2022.06.13
Method GET POST  (0) 2022.06.10
Servlet request response  (0) 2022.06.08
자바 웹 어플리케이션  (0) 2022.06.02