[수미수의 개발 브로구]

[WEB] WEB 기초 - 웹 어플리케이션 본문

Architecture/Web 아키텍처

[WEB] WEB 기초 - 웹 어플리케이션

수미수 2023. 9. 25. 21:44
반응형

1. 웹 어플리케이션

  톱캣과 같은 서버를 서블릿 컨테이너라고 부르며, 서블릿 컨테이너가 담아서 관리하는 것이 바로 웹 어플리케이션이다. 서블릿 컨테이너는 웹 어플리케이션의 서블릿/JSP 스펙에 따라 동작한다. 즉 서블릿 컨테이너는 JSP/서블릿의 생명 주기를 관리하며, 웹 서버로부터 요청이 오면 서블릿 컨테이너에서 웹 어플리케이션을 생성하고, 그 결과값을 다시 웹 서버 또는 클라이언트에게 반환한다.

2. 웹 어플리케이션 구성

  자바 웹 어플리케이션은 서블릿, JSP, 자바 클래스, 자바 아카이브 파일, HTML, 이미지, CSS, 자바 스크립트, web.xml로 구성된다.
서블릿과 자바 클래스는 /WEB-INF/classes, 자바 아카이브 파일은 /WEB-INF/lib, web.xml은 /WEB-INF에 위치한다

3. 배치 정의자 (Deplay Descriptor) : web.xml

웹 어플리케이션의 핵심은 배치정의자라고 불리는 web.xml 파일이다. web.xml 파일은 /WEB-INF/디렉토리에 위치하며, 웹 어플리케이션의 모든 설정 정보를 담는다. (서블릿 컨텍스트 초기화 파라미터, 필터, 리스너, 서블릿 정의, 서블릿 초기화 파라미터, 서블릿 맵핑, 세션 설정 등)

<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
		http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
	version="3.0"
	metadata-complete="true">  

	<servlet> 서블릿 정의와 해당 서블릿의 초기 파라미터 설정
		<servlet-name>TestServlet</servlet-name>
		<servlet-class>net.java_school.TestServlet</servlet-class>
		<init-param>
			<param-name>name</param-name>
			<param-value>value</param-value>
		</init-param>
		<load-on-startup>1</load-on-startup> 엘리먼트 값이 양수이면 톰캣은 웹 어플리케이션을 로드한 후 해당 서블릿 객체를 생성한다.
	</servlet>
	
	<servlet-mapping> 서블릿과 URL을 맵핑하기 위해 사용
		<servlet-name>TestServlet</servlet-name>
		<url-pattern>/servlet/TestServlet</url-pattern> http://localhost:port/rootpath/servlet/TestServlet 요청시 net.java_school.TestServlet 객체가 생성된다.
	</servlet-mapping>
	  
	<session-config>
		<session-timeout>30</session-timeout> 서블릿 컨테이너는 HttpSession객체가 30분동안 움직임이 없으면 소멸 시킨다.
	</session-config>

</web-app>

4. 서블릿 컨테이너

  서블릿은 서블릿 컨테이너 위에서 동작하며, 다음과 같은 기능을 제공한다.
생명주기 관리 – 서블릿 컨테이너는 서블릿을 로드해 초기화 메서드(Init 메서드)를 호출한다. 또 클라이언트의 요청으로 서블릿 메서드를 호출하며, 서블릿 컨테이너가 종료되면 서블릿의 종료 메서드를 호출해 메모리를 정리한다.
통신 지원 – 서블릿 컨테이너는 웹서버와 서블릿이 통신할 수 있는 기능을 지원한다. 예를 들면, 웹 서버로부터 받은 요청을 분석해 요청에 따른 서블릿을 실행시키는 것이다. 또한 서블릿에서 웹서버의 정보를 확인할 수 있는 기능을 제공한다. 
멀티스레딩 지원 – 서블릿 컨테이너는 클라이언트의 요청에 따라 서블릿을 생성하고, 이미 생성된 서블릿에 대한 요청은 스레드로 생성해 서블릿을 실행한다. 
서블릿 컨테이너의 종류에는 톰캣, JEUS, Weblogic, Webspear 등이 있으며, 이런 서블릿 컨테이들은 다양한 기능을 제공해 개발자가 신경 써야 하는 많은 부분들을 관리한다. 

5. 서블릿 종류

서블릿에는 GenericServlet(javax.servlet.GenericServlet)을 상속 받아 구현하는 방법과, HttpServlet(javax.servlet.
HttpServlet)을 상속 받아 구현하는 두가지 방법이 있다.
GenericServlet – 해당 프로토콜은 독립적인 서블릿으로 service()를 오버라이딩해 사용한다.
 
HttpServlet – HttpServlet은 GenericServlet을 상속 받아 HTTP 프로토콜에 관련된 기능을 구현한것이다. 일반적으로 GenericServlet을 상속 받아 사용하는 것보다 편리하며, 클라이언트 요청에 따라 doGet, doPost, doPut 등의 메서드들을 호출한다.
 

반응형

'Architecture > Web 아키텍처' 카테고리의 다른 글

[MSA] Spring Cloud Gateway vs. AWS API Gateway  (0) 2024.10.15