정적 웹 페이지와 동적 웹 페이지
- 정적 웹 페이지란 '변하지 않는 페이지'를 뜻한다. 모든 이용자에게 동일한 내용을 보여주며, 한 번 작성된 후에, 변동을 보여주지 않는 웹 페이지이다.
- 동적 웹 페이지는 사용자에 반응하여 다른 화면을 보여주는 페이지로, 장바구니나 게시판 등이 동적 웹페이지라고 할 수 있다.
- 웹 개발시
HTML
은 정적인 웹페이지만 구현이 가능하였다. 이를 Java를 통해 동적 웹페이지를 작성하기 위해 나온 것이Servlet class
이다.
Servlet(서블릿)
Servlet
은 서버 쪽에서 실행되면서 클라이언트의 요청에 따라 동적으로 서비스를 제공하는자바 클래스
이다.- 독자적으로 실행할 수 없으며, 톰캣과 같은
JSP/Servlet 컨테이너
에서만 실행 가능하며, 컨테이너 독립적으로 실행된다.. - 서블릿은 서버에서 실행되다가 웹 브라우저에서 요청을 하면 해당 기능을 수행 후, 웹 브라우저에 결과를 전송한다.
- 서블릿 동작 과정
Servlet Container
Servlet이 클래스라면,
Servlet Container
는 Servlet을 이용해 작성된 프로그램을 실행, 관리해주는 주체이다.Servlet Container의 역할
1. 웹서버와의 통신 지원
서블릿 컨테이너는 서블릿과 웹서버가 손쉽게 통신할 수 있게 해준다. 서블릿 컨테이너는 소켓을 만들고 listen, accept 등의 기능을 API로 제공하여 복잡한 과정을 생략할 수 있게 해준다. 개발자가 서블릿에 구현해야 할 비지니스 로직에 대해서만 초점을 두게끔 도와준다.
2. 서블릿 생명주기(Life Cycle) 관리
서블릿 컨테이너는 서블릿의 실행부터 종료까지의 과정을 관리한다. 서블릿 클래스를 로딩하여 인스턴스화하고, 초기화 메소드를 호출하고, 요청이 들어오면 적절한 서블릿 메소드를 호출한다. 또한 서블릿이 생명을 다 한 순간에는 적절하게 Garbage Collection(가비지 컬렉션)을 진행하여 안전하게 프로그램을 종료한다.
3. 멀티쓰레드 지원 및 관리
서블릿 컨테이너는 요청이 올 때 마다 새로운 자바 쓰레드를 하나 생성하는데, HTTP 서비스 메소드를
실행하고 나면, 쓰레드는 자동으로 종료되며, 컨테이너가 다중 쓰레드를 생성 및 운영한다.
4. 선언적인 보안 관리
서블릿 컨테이너를 사용하면 개발자는 보안에 관련된 내용을 서블릿 또는 자바 클래스에 구현해 놓지 않아도 된다. 일반적으로 보안관리는 XML 배포 서술자에 다가 기록하므로, 보안에 대해 수정할 일이 생겨도 자바 소스 코드를 수정하여 다시 컴파일 하지 않아도 보안관리가 가능하다.
JSP(Java Server Page)
- 웹 사용자가 폭발적으로 증가하고, 웹 페이지도 복잡해지고 고도화됨에 따라, 개발자와 디자이너의 분업이 일어나기 시작하였다.
- 디자이너가 자바와 서블릿의 코드에 익숙하지 않아 화면 기능 구현시 불편함이 많았다.
- 서블릿의 기능 중 화면 부분을 디자이너가 쉽게 작업하기 위해
JSP
가 등장하였다. - JSP 파일에서는 HTML로 작성된 문서 안에
<% %>
,<%= %>
등의 바구니 안에 자바코드를 삽입할 수 있다. Java 컨테이너
는 JSP파일의 HTML코드와 자바코드를 분리하여class파일
을 만들고 실행한다.
'WEB' 카테고리의 다른 글
Build Tool이란? (0) | 2020.06.29 |
---|---|
XML이란 무엇인가? (0) | 2020.06.17 |