가장 널리 쓰이는 웹 서버는 아파치(Apach), 톰캣(Tomcat), IIS(internet Information Server) 이고 이 책에서는 자바 서블릿(Servlt)과 JSP(Java sver Page)를 지원하는 톰캣을 다룹니다.
JSP 는 서블릿을 이용하여 사용자 요청에 따른 HTML 문서를 반환합니다
서블릿이 자바 코드 안에 HTML 코드를 추가한다면 JSP는 HTML 코드 안에 자바 코드를 추가합니다.
JSP는 서블릿과 동떨어진 기술이 아니며, 실제로 웹 애플리케이션 서버에서 클라이언트에게 서비스될 때는 서블릿으로 변경됩니다.
서블릿은 자바를 사용하여 웹 페이지를 동적으로 생성하는 서버 측 웹 프로그래밍을 말합니다
서블릿은 자바 프로그래밍 언어로 사용하기 때문에 플랫폼에 독립적입니다.
경량 스레드를 사용하여 서블릿을 호출하므로 자바의 멀티스레딩 기능을 사용하여 여러 클라이언트 요청을 동시에 서블릿에서 채울 수 있습니다.
자바의 주요 기능(가비지 수집, 예외 처리, 자바 보안 관리자등)을 상속함으로써 웹 애플리케이션을 안전하게 개발할 수 있고 오류발생 가능성을 낮춥니다.
JSP의 강점
- JSP에서는 서블릿의 모든 기능을 사용 가능
- 프레젠테이션 로직과 비지니스 로직을 분리할 수 있어 관리가 용이
- JSP 수정의 경우 다시 컴파일할 필요가 없음
- JSP에서는 액션 태그, JSTL, 사용자 정의 태그등의 다양한 태그와 표현 언어, 내장 객체 등을 사용함으로써 서블릿보다 코드를 줄일 수 있습니다.
서블릿의 동작 과정
- 클라이언트가 URL을 입력하면 해당 HTTP Request를 서버의 서블릿 컨테이너로 전송합니다. Request를 전송받은 서블릿 컨테이너는 HttpServletRequest, HttpServletResponse 두 객체를 생성합니다.
- 배포 서술자 web.xml 을 기반으로 사용자가 요청한 URL을 분석하여 어느 서블릿 객체에 대한 요청인지를 찾습니다.
- 해당 서블릿 객체에서 service 메소드를 호출하며, 클라이언트의 POST, GET 여부에 따라 doGet() 또는 doPost()를 호출합니다. 이 메소드는 동적페이지를 생성한 후 HttpServletResponse 객체에 응답을 보냅니다.
JSP의 동작 과정
JSP 페이지는 하나의 서블릿 프로그램으로 변환되어 실행
Hello.jsp에서 Hello_jsp.java 라는 서블릿 프로그램이 생성되고, 이 서블릿 프로그램이 컴파일 되어 Hello_jsp.class가 생성됩니다. 이때 서블릿 프로그램과 *.class를 생성하는 역할은 JSP 컨테이너(JSP엔진)가 담당합니다. JSP 컨테이너를 웹 서버와 분리하여 설치할 수도 있고 웹서베어 포함할 수도 있는데, 이 책에서 사용하는 톰캣은 JSP 컨테이너가 포함된 웹 서버입니다.
- 웹 브라우저가 웹 서버에 JSP를 요청합니다. 웹 서버는 요청된 Hello.jsp에서 jsp확장자를 발견하여 JSP 페이지임을 웹 서버에 있는 JSP 컨테이너에 전달합니다
- JSP 컨테이너는 JSP 페이지를 서블릿 프로그램인 Hell_jsp.java로 변환합니다
- JSP 컨테이너가 서블릿 프로그램을 컴파일하여 Hello_jsp.class로 만들고 이를 웹 서버에 전달합니다
- 웹 서버는 정적 웹 페이지처럼 *.class의 실행 결과를 웹 브라우저에 응답으로 전달하므로 웹 브라우저는 새로 가공된 HTML 페이지를 동적으로 처리한 결과를 보여줍니다.
서블릿과 JSP 생명 주기
- 로딩
- 초기화 init()
- 실행 service(): doGet() doPost()
- 소멸 destroy()
JSP 생명 주기
- 번역: JSP 컨테이너가 JSP 소스 파일을 자바 코드(서블릿)로 변환합니다
- 컴파일: 삽입된 자바 코드의 구문 오류를 검사
- 로딩 및 초기화 jspInit(): 초기화는 한 번만 수행
- 실행 _jspService()
- 소멸 jspDestroy()
번역 단계는 JSP 파일이 변경된 경우에만 수행
02 JSP 개발 환경 구축
> 실습으로 대체
'도서 > 프로그래밍' 카테고리의 다른 글
[03] 쉽게 배우는 JSP 웹 프로그래밍 (0) | 2024.01.16 |
---|---|
[02] 쉽게 배우는 JSP 웹 프로그래밍 (1) | 2024.01.14 |
[09][完] Do it! 데이터 분석을 위한 판다스 입문 (0) | 2024.01.09 |
[08] Do it! 데이터 분석을 위한 판다스 입문 (0) | 2024.01.08 |
[07] Do it! 데이터 분석을 위한 판다스 입문 (0) | 2024.01.08 |