1. 웹 서버(web server)

: 서버는 웹페이지, 사이트를 저장하는 컴퓨터
: 클리아언트가 웹페이지에 대한 접근을 요청한다면, 서버에서 웹 브라우저로 웹 페이지의 사본이 다운로드된다.


2. WAS(Web Application Server)

: 웹 애플리케이션과 서버 환경을 만들어 동작시키는 기능을 제공하는 소프트웨어 프레임워크
: 인터넷 상에서 http를 통해 사용자 컴퓨터나 장치에 애플리케이션을 수행해 주는 미들웨어
: db연동, 트랜잭션 관린, 멀티스레드 지원 등 business logic 수행
: 웹 서버 + 웹 컨테이너
: ex) tomcat, jboss, jeus

1) 웹 서버 기능(정적 데이터 처리)

: 웹 애플리케이션에서 정적 데이터 처리를 위해 지연되는 시간을 줄여 동적 데이터 처리 속도를 높일 수 있다.

2) 웹 컨테이너 기능(동적 데이터 처리)

  • 서블릿 컨테이너 (java -> class)
  • jsp 컨테이너 (jsp -> java(servlet))
    : url과 서블릿을 맵핑하여 실행하고, 서블릿의 생명주기를 관리한다.
    : reqeust 객체와 response 객체를 주입해준다.

  1. 클라이언트의 요청이 들어오면 서블릿 컨테이너는 web.xml에서 url 매핑 정보를 확인하여 request 객체와 response 객체를 주입해준다.
  2. 서블릿 파일이 컨테이너에서 한 번도 실행되지 않았다면 서블릿을 생성하고 init(ServletConfig) 메서드를 실행한다. 이는 다시 파라미터가 없는 init() 메소드를 호출하며 초기화가 이루어진다.
  3. 이미 생성되어 있다면 스레드를 생성하여 관리한다.
  4. service() 메소드를 실행하며, 이는 @override된 doGet()/doPost()를 호출한다. (callback 함수를 서버가 호출...)
  5. 처리한 요청에 대한 결과를 보여줄 응답 페이지를 부른다(forwarding).
  6. 응답페이지는 클라이언트의 요청에 대한 결과를 출력해준다.

3. web application structure


4. web.xml (배치 서술자 - deployment descripter)

1) load-on-startup 태그

: init() 메소드 호출 및 서블릿 초기화 작업은 상대적으로 시간이 걸리기 때문에, 처음 서블릿을 사용하는 시점보다는 웹 컨테이너를 처음 구동하는 시점에 초기화를 진행하는 것이 좋다. 이를 위한 설정이 load-on-startup 태그이다. 이 태그를 설정하면 앱이 시작할 때 태그의 값에 따라 오름차순으로 서블릿을 로딩한다.

<web-app>
	<context-param>
    		<description>로깅</description>
	    	<param-name>log4jConfigLocation</param-name>
	        <param-value>/WEB-INF/classes/log4j.properties</param-value>
	</context-param>
	<servlet>
		<servlet-name> servlet </servlet-name>
	    	<servlet-class> example.Servlet </servlet-class>
	        <init-param>
	        	<param-name> param1 </param-name>
	            	<param-value> value1 </param-value>
	        </init-param>
	    	<load-on-startup> 1 </load-on-startup>
	</servlet>
	<servlet-mapping>
		<servlet-name> servlet </servlet-name>
	    	<url-pattern> /servlet </url-pattern>
	</servlet-mapping>
</web-app>

2) url-pattern

: 서블릿의 url 패턴은 클라이언트의 요청 업무를 구분해주는 기준이 될 수 있다.

3) init-param 태그

: 서블릿을 초기화할 때 필요한 값을 전달하는 방법을 제공한다.

String val1 = getInitParameter("param1");
String val2 = getServletConfig().getInitParameter("param1");

//"value1"

4) context-param 태그

: 웹 어플리케이션 전체에 걸쳐서 사용할 수 있는 초기화 파라미터

Enumeration<String> initParamEnum = application.getInitParameterNames();
String val1 = application.getInitParameter("log4jConfigLocation");
String val2 = getServletContext().getInitParameter("log4jConfigLocation");

//"/WEB-INF/classes/log4j.properties"


0개의 댓글