JSP & Servlet (feat. 웹 서버 WAS)

문지원(JiwonMoon)·2022년 2월 24일
0
post-thumbnail

웹(web)
전세계에 거대한 네트워크 망을 통해 정보를 공유하며 정보의 흐름은 양방향성을 가진다.

웹 어플리케이션(Web Application)
웹에서 실행되는 응용프로그램을 뜻하며 인터넷을 통한 업무, 쇼핑, 등등 인터넷에서 하는 여러 서비스를 총칭하며 사용자가 필요한 요청(Request) 를 하고 서버에서는 이에 해당하는 요청을 수행하고
그리고 요청한 데이터를 응답(Response) 한다.

컨테이너란?
컨테이너는 어떤 환경에서나 실행하기 위해 필요한 모든 요소를 포함시키는 SW 패키지 (== 실행가능하게 해주는 패키지)

웹 어플리케이션의 구성요소

웹 브라우저(Web Browser) : 클라이언트에서 요청을 하고 전달받은 페이지를 볼수있는 환경을 말한다. ( 크롬, Safari, Firefox 등.. )

웹 서버(Web Server) : 클라이언트로 부터 요청받아 서버에 저장된 리소스를 클라이언트 에게 전달한다. 주로 정적컨텐츠를 담당한다.

웹 어플리케이션 서버( Web Application Server ) : 약자로 was 라고 부르며, 서버단에서 필요한 기능을 수행하고 그 결과를 웹서버에게 전달한다.

데이터베이스(Data base, DB) : 서비스에 필요한 데이터를 보관, 갱신 등 관리를 한다.

JSP (JavaServer Pages )란?

JSP 란 JavaServer Pages 의 약자이며, HTML 코드에 JAVA 코드를 넣어 동적웹페이지를 생성하는 웹어플리케이션 도구이다.

JSP 가 실행되면 자바 서블릿(Servlet) 으로 변환되며 웹 어플리케이션 서버에서 동작되면서 필요한 기능을 수행하고

그렇게 생성된 데이터를 웹페이지와 함께 클라이언트로 응답한다.

자바 서블릿(Java Servlet)

서블릿이란 웹페이지를 동적으로 생성하기 위해 서버측 프로그램을 말한다.

이는 자바 언어를 기반으로 만들지며 웹 어플리케이션 서버 ( Web Application Sever ) 위에서 컴파일 되고 동작한다.

개념

  • 클라이언트의 요청을 처리하고, 그 결과를 반환하는 Servlet 클래스의 구현 규칙을 지킨 자바 웹 프로그래밍 기술
  • 자바를 사용하여 웹을 만들기 위해 필요한 기술
  • 클라이언트가 어떠한 요청을 하면 그에 대한 결과를 응답해주는 역할을 하는 자바 프로그램

특징

  • 클라이언트의 요청에 대해 동적으로 작동하는 웹 어플리케이션 컴포넌트
  • Java Thread를 이용하여 동작한다.
  • MVC 패턴에서 Controller로 이용된다.
  • HTTP 프로토콜 서비스를 지원하는 javax.servlet.http.HttpServlet 클래스를 상속받는다.

동작방식(서블릿 컨테이너 생명주기)

  1. 클라이언트가 URL을 입력하면 HTTP Request(요청)가 Servlet Container로 전송한다.
  2. 요청을 전송받은 ServletContainer는 HttpServletRequest, HttpServletResponse 객체를 생성한다.
  3. web.xml을 기반으로 사용자가 요청한 URL이 어느 서블릿에 대한 요청인지 찾는다.
  4. 해당 서블릿에서 service 메소드를 호출한 후 클라이언트의 GET, POST 여부에 따라 doGet()또는 doPost()를 호출한다.
  5. 요청방식에 따라 doGet(), doPost() 메소드는 동적 페이지를 생성한 후 HttpServletResponse 객체에 응답을 보낸다.
  6. 응답이 끝나면 HttpServletRequest, HttpServletResponse 두 객체를 소멸시킨다.

서블릿 컨테이너(Servlet Container) 란?

  • 서블릿을 관리해주는 컨테이너
    (서버에 서블릿을 만들면 스스로 작동하는 것이 아닌 서블릿을 관리해주는 것이 필요하다.)
  • 서블릿은 실제 행동을 수행하고, 서블릿 컨테이너는 클라이언트의 요청(Request)을 받아주고 응답(Response)할 수 있게, 웹서버와 소켓으로 통신하며 대표적인 예로 톰캣(Tomcat) 이 있다.
  • 톰캣은 실제로 웹 서버와 통신하며 JSP와 Servlet이 작동하는 환경을 제공해준다.

JSP 와 Servlet의 차이

신입 개발자에게 많이 물어보는 질문이기도 합니다.
JSP 와 서블릿(Servlet)의 차이점은 결과적으로 하는일은 동일하지만 JSP 는 HTML 내부에 JAVA 소스코드가 들어감으로 인해 HTML 코드를 작성하기 간편하다는 장점이있으며, 서블릿은 자바코드내에 HTML 코드가 있어서 읽고 쓰기가 굉장히 불편하기 때문에 작업의 효율성이 떨어진다.

정리
하는 일은 동일
JSP : HTML 내부에서 자바코드 사용
Servlet : 자바코드내에서 HTML 코드사용

하지만 기본적인 웹 학습에는 JSP 와 서블릿은 함께 학습하게 된다.

JSP 로 작성된 프로그램은 서버로 요청시 서블릿(Servlet) 파일로 변환되어 JSP 태그를 분해하고 추출하여 다시 순수한 HTML 를 변환한다.

JSP의 내부적인 동작 과정
JSP 문서는 백그라운드에서 Servlet으로 자동으로 변환

위 그림의 과정은 아래와 같다.

  1. 클라이언트가 어떤 동작을 함으로써 hello.jsp 를 요청

  2. JSP 컨테이너가 JSP 파일을 읽는다.

  3. JSP 컨테이너가 Generete (변환) 작업을 통해 Servlet ( .java ) 파일을 생성

  4. .java 파일은 다시 .class 파일로 컴파일

  5. Execute (실행) 을통해 HTML 파일을 생성하여 JSP 컨테이너 에게 전달

  6. JSP 는 HTTP 프로토콜을 통해 HTML 페이지를 클라이언트에게 전달

JSP의 특징

  • 스크립트 언어이기 때문에 자바 기능을 그대로 사용할 수 있다.
  • Tomcat(WAS)이 이미 만들어놓은 객체(predefined values)를 사용한다.
    -Ex. request, response, session 등등
  • 사용자 정의 태그(custom tags)를 사용하여, 보다 효율적으로 웹 사이트를 구성할 수 있다.
  • JSTL(JSP Standard Tag Library, JSP 표준 태그 라이브러리)사용
  • HTML 코드 안에 Java 코드가 있기 때문에 HTML 코드를 작성하기 쉽다.
  • Servlet과 다르게 JSP는 수정된 경우 재배포할 필요 없이 Tomcat(WAS)이 알아서 처리

References

0개의 댓글