Post

[JSP] 웹 애플리케이션과 JSP

웹 애플리케이션

  • 웹에서 실행되는 응용 프로그램

웹 서버

  • HTTP 프로토콜을 기반으로 웹 클라이언트의 요청을 받아 처리한 후 결과를 다시 클라이언트로 전송
  • 요청을 받는 일과 결과를 전송하는 부분만 웹 서버가 담당하고, 서비스 처리에 필요한 비즈니스 로직은 웹 애플리케이션 서버(WAS)가 제공하는 컨테이너가 담당
  • 웹 컨테이너가 전달해준 결과물을 사용자에게 응답
  • ex) Apache, Nginx

웹 애플리케이션 서버 (WAS)

  • 웹 애플리케이션이 실행될 수 있는 환경을 제공하는 소프트웨어
  • 웹 서버의 역할도 수행할 수 있으나, 효율적인 웹 애플리케이션 실행 환경을 구축하기 위해 웹 서버와 WAS를 분리하는 것이 좋다.
  • 비즈니스 로직 처리, DB 조회 등 프로그램 실행 환경 제공
  • ex) Tomcat, JBoss, WebLogic

웹 컨테이너 (서블릿 컨테이너)

  • 웹 애플리케이션 서버의 구성 요소
  • 웹 서버가 전송해준 요청으로 JSP 프로그램을 실행시키고 결과를 다시 웹 서버에 전달한다.
    • HTTP 요청을 서블릿이 처리할 수 있는 형태(ServletRequest)로 변환
    • 요청을 적절한 서블릿에 매핑
  • 서블릿의 생명주기 관리
  • JSP를 서블릿으로 변환하고 실행

JSP (Java Serser Pages)

  • Java EE(Java Platform, Enterprise Edition)를 구성하는 기술 중의 하나
  • Java 언어를 사용하여 서버 측에서 동적인 웹 페이지를 생성
  • 스크립트 언어로 HTML 페이지 내에 삽입됨
  • 표현 언어, 표현식, 액션 태그 등 스크립트적인 요소 제공

서블릿

  • Server + Applet의 합성어
  • Java 클래스
  • Java 언어로 서블릿 클래스를 만들고, 컴파일 된 바이트 코드를 서버에 탑재하여 웹 서비스 제공

JSP 페이지 처리 과정

  • 클라이언트가 JSP 페이지를 요청하면 JSP 파일을 서블릿 Java 소스(.java)로 변환한다.
  • 서블릿 소스를 컴파일해서 클래스 파일(.class)을 생성한다.
  • 서블릿 클래스를 로드하고 인스턴스 생성
  • _jspInit() 메서드 호출
  • _jspService() 메서드 호출
  • 응답을 생성하여 클라이언트에게 전송한다.
  • 두 번째 요청부터는 이미 변환된 서블릿이 존재하는지 체크하여 JSP 페이지가 수정되지 않았다면 기존 서블릿 인스턴스를 재사용한다.
1
2
3
4
5
6
7
8
<!-- hello.jsp -->
<%@ page language="java" contentType="text/html; charset=UTF-8" %>
<html>
<body>
    <% String message = "Hello JSP"; %>
    <%= message %>
</body>
</html>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// 서블릿으로 변환됨
public class hello_jsp extends HttpServlet {
    public void _jspInit() {
        // 초기화 코드
    }

    public void _jspService(HttpServletRequest request, HttpServletResponse response) {
        String message = "Hello JSP";
        out.write("<html><body>");
        out.write(message);
        out.write("</body></html>");
    }

    public void _jspDestroy() {
        // 리소스 해제 코드
    }
}
This post is licensed under CC BY 4.0 by the author.