본문 바로가기
도서/프로그래밍

[01] 쉽게 배우는 JSP 웹 프로그래밍

by 신발사야지 2024. 1. 13.

가장 널리 쓰이는 웹 서버는 아파치(Apach), 톰캣(Tomcat), IIS(internet Information Server) 이고 이 책에서는 자바 서블릿(Servlt)과 JSP(Java sver Page)를 지원하는 톰캣을 다룹니다.

 

JSP 는 서블릿을 이용하여 사용자 요청에 따른 HTML 문서를 반환합니다

 

서블릿이 자바 코드 안에 HTML 코드를 추가한다면 JSP는 HTML 코드 안에 자바 코드를 추가합니다.

 

JSP는 서블릿과 동떨어진 기술이 아니며, 실제로 웹 애플리케이션 서버에서 클라이언트에게 서비스될 때는 서블릿으로 변경됩니다.

 

서블릿은 자바를 사용하여 웹 페이지를 동적으로 생성하는 서버 측 웹 프로그래밍을 말합니다

 

서블릿은 자바 프로그래밍 언어로 사용하기 때문에 플랫폼에 독립적입니다.

 

경량 스레드를 사용하여 서블릿을 호출하므로 자바의 멀티스레딩 기능을 사용하여 여러 클라이언트 요청을 동시에 서블릿에서 채울 수 있습니다.

 

자바의 주요 기능(가비지 수집, 예외 처리, 자바 보안 관리자등)을 상속함으로써 웹 애플리케이션을 안전하게 개발할 수 있고 오류발생 가능성을 낮춥니다.

 

 

JSP의 강점

  • JSP에서는 서블릿의 모든 기능을 사용 가능
  • 프레젠테이션 로직과 비지니스 로직을 분리할 수 있어 관리가 용이
  • JSP 수정의 경우 다시 컴파일할 필요가 없음
  • JSP에서는 액션 태그, JSTL, 사용자 정의 태그등의 다양한 태그와 표현 언어, 내장 객체 등을 사용함으로써 서블릿보다 코드를 줄일 수 있습니다.

서블릿의 동작 과정

  1. 클라이언트가 URL을 입력하면 해당 HTTP Request를 서버의 서블릿 컨테이너로 전송합니다. Request를 전송받은 서블릿 컨테이너는 HttpServletRequest, HttpServletResponse 두 객체를 생성합니다.
  2. 배포 서술자 web.xml 을 기반으로 사용자가 요청한 URL을 분석하여 어느 서블릿 객체에 대한 요청인지를 찾습니다.
  3. 해당 서블릿 객체에서 service 메소드를 호출하며, 클라이언트의 POST, GET 여부에 따라 doGet() 또는 doPost()를 호출합니다. 이 메소드는 동적페이지를 생성한 후 HttpServletResponse 객체에 응답을 보냅니다.

JSP의 동작 과정

JSP 페이지는 하나의 서블릿 프로그램으로 변환되어 실행

Hello.jsp에서 Hello_jsp.java 라는 서블릿 프로그램이 생성되고, 이 서블릿 프로그램이 컴파일 되어 Hello_jsp.class가 생성됩니다. 이때 서블릿 프로그램과 *.class를 생성하는 역할은 JSP 컨테이너(JSP엔진)가 담당합니다. JSP 컨테이너를 웹 서버와 분리하여 설치할 수도 있고 웹서베어 포함할 수도 있는데, 이 책에서 사용하는 톰캣은 JSP 컨테이너가 포함된 웹 서버입니다.

  1. 웹 브라우저가 웹 서버에 JSP를 요청합니다. 웹 서버는 요청된 Hello.jsp에서 jsp확장자를 발견하여 JSP 페이지임을 웹 서버에 있는 JSP 컨테이너에 전달합니다
  2. JSP 컨테이너는 JSP 페이지를 서블릿 프로그램인 Hell_jsp.java로 변환합니다
  3. JSP 컨테이너가 서블릿 프로그램을 컴파일하여 Hello_jsp.class로 만들고 이를 웹 서버에 전달합니다
  4. 웹 서버는 정적 웹 페이지처럼 *.class의 실행 결과를 웹 브라우저에 응답으로 전달하므로 웹 브라우저는 새로 가공된 HTML 페이지를 동적으로 처리한 결과를 보여줍니다.

서블릿과 JSP 생명 주기

  1. 로딩
  2. 초기화 init()
  3. 실행 service(): doGet() doPost()
  4. 소멸 destroy()

JSP 생명 주기

  1. 번역: JSP 컨테이너가 JSP 소스 파일을 자바 코드(서블릿)로 변환합니다
  2. 컴파일: 삽입된 자바 코드의 구문 오류를 검사
  3. 로딩 및 초기화 jspInit(): 초기화는 한 번만 수행
  4. 실행 _jspService()
  5. 소멸 jspDestroy()

번역 단계는 JSP 파일이 변경된 경우에만 수행

02 JSP 개발 환경 구축

> 실습으로 대체