Coding/JSP

[쉽게 배우는 JSP 웹프로그래밍] - Ch1. JSP 기초 지식

서머스 2025. 1. 12. 14:34

Chapter01. JSP 개요 : 원리를 이해하고 개발 환경 구축하기

 

1. 웹과 JSP 프로그래밍의 이해

1. 인터넷과 웹의 개요

인터넷과 웹

  • 인터넷(internet) : 컴퓨터가 서로 연결되어 TCP/IP 통신 프로토콜을 이용하여 정보를 주고받는 전 세계 컴퓨터 네트워크, 인터넷을 통해 광범위한 정보와 서비스를 제공할 수 있는데, 그중 하나가 .
  • 웹(web) : World Wide Web의 줄임말, 인터넷에 연결된 컴퓨터들을 통해 사람들이 정보를 공유할 수 있는 정보 공간

웹의 동작 원리

  1. 클라이언트(웹 브라우저)가 특정 페이지를 웹 서버에 요청한다(request)
  2. 이를 처리한 후 그 결과를 클라이언트에게 보내어 응답(response) 한다.
  • 요청하는 쪽 == 클라이언트(사용자)
  • 응답하는 쪽 == 서버(제공자)
  • 클라이언트가 서버에 HTML이나 파일을 요청하면 서버가 이에 응답하여 HTML 페이지나 파일을 클라이언트에게 제공하는 장소 == 웹

웹서버는 주로 아파치, 톰캣, IIS 등을 사용한다.

 

2. 정적 웹페이지와 동적 웹페이지

정적(static) 페이지 동적(dynamic) 페이지
컴퓨터에 저장된 텍스트 파일을 그대로 보는 것 저장된 내용을 다른 변수로 가공 처리하여 보는 것
HTML과 같은 웹 언어로 작성 PHP, ASP, JSP와 같은 웹 언어로 동작

 

HTML : 가장 단순한 형태의 웹 언어.

 

정적 웹페이지는 서버에 HTML, 이미지, 자바스크립트 등을 저장해두고, 클라이언트가 특정 HTML 문서를 요청하면 전송한다.

 

정적 웹페이지 동작 방식

  1. 사용자가 웹 브라우저에 URL을 입력하여 요청한다.
  2. 해당 URL의 웹 서버에서 수신된 파일을 검색한다.
  3. 이미 준비된 HTML 문서를 클라이언트에게 그대로 보낸다.
  4. 웹 브라우저가 HTML 문서를 보여준다.

동적 웹페이지는 사용자가 웹 페이지에 글을 작성하거나 환경 설정 등을 바꾸면 그 내용이 서버에 있는 데이터베이스에 저장되고 결과가 웹 페이지에 반영되는 형태로 동작한다.

 

동적 웹페이지 동작 방식

  1. 사용자가 웹 브라우저에 URL을 입력하여 요청한다.
  2. 해당 URL의 웹 서버에서 요청을 분석하여
  3. 데이터베이스 연동이 있다면 이를 처리한 후
  4. 웹 서버는 그 결과를 전송받아 HTML 문서로 생성하여
  5. 요청에 맞게 정제된 HTML 문서를 클라이언트에게 보내고
  6. 웹 브라우저가 HTML 문서를 보내준다.

하나의 서버로부터 다른 결과를 응답받음으로써 사용자마다 요청에 따라 처리된 HTML 문서를 볼 수 있다.

ex. 로그인했을 시 개인에 대한 정보와 개인만의 화면으로 구성되는 웹사이트

 

 

3. 서블릿과 JSP

웹 프로그래밍 언어는 클라이언트 측 실행 언어와 서버 측 실행 언어로 구분되며, 자바를 기반으로 하는 서블릿과 JSP는 서버 측 웹 프로그래밍 언어이다.

서블릿 : 자바를 기반으로 하는 서버 측 프로그래밍 방식. 개발 방식이 쉽지 않다. 

자바 코드 안에 HTML 코드를 추가한다.

 

JSP : HTML 코드에 직접 삽입할 수 있도록 개발된 기술

HTML 코드 안에 자바 코드를 추가한다.

 

서블릿(servelet)의 개념과 특징

서블릿이란, 자바를 사용하여 웹 페이지를 동적으로 생성하는 서버 측 웹 프로그래밍이다.

웹 서버의 성능을 향상하기 위해 사용되는 자바 클래스의 일종이다.

자바 코드 안에 HTML 코드를 추가한다.

  • 서블릿은 이식가능하다 : 자바 기반이기 대문에 플랫폼 독립적이다.
  • 효율적이고 확장 가능하다 : 서블릿이 웹 서버에 배포되고 로드되면 클라리언트의 요청을 즉시 이행하기 시작할 수 있다.
  • 견고하다 : 자바의 주요 기능을 상속함으로써 메모리 관리 문제 및 메모리 낭비를 줄일 수 있다.

 

JSP의 개념과 특징

JSP(Java Server Page/Jakarta Server Pages)

자바 언어를 기반으로 하는 스크립트 언어

HTML 내에 자바 코드를 삽입하여 웹 서버에서 동적으로 웹 페이지를 생성하여 웹 브라우저에 전달하는 서버측 스크립트 언어

실행 시에는 자바 서블릿으로 변환되어 실행되므로 서블릿과 거의 유사하다.

HTML 표준에 따라 작성되므로 웹 디자인하기에 편리하다.

JSP 태그 라이브러리를 사용하는 경우 자바 코딩 없이 태그만으로 간략히 기술이 가능하므로 생산성이 높다.

  • JSP는 서블릿 기술의 확장이다 : 서블릿의 모든 기능을 사용할 수 있다.(JDBC, JNDI, EJB 등)
  • 유지 관리가 용이하다 : 프로젠테이션 로직과 비즈니스 로직을 분리할 수 있다.
  • 빠른 개발이 가능하다 : 서블릿에서는 코드 수정 시 업데이트 후 다시 컴파일해야 하나, JSP는 그럴 필요가 없다.
  • 코드 길이를 줄일 수 있다 : 액션 태그, JSTL, 사용자 정의 태그 등의 다양한 태그와 표현 언어, 내장 객체 등을 사용함으로써 서블릿보다 코드를 줄일 수 있다.

 

4. 서블릿과 JSP의 동작 과정

 

서블릿의 동작 과정

1. 클라이언트가 URL을 입력하면 해당 HTTP Request를 서버의 서블릿 컨테이너로 전송한다. HTTP Request를 전송받은 서블릿 컨테이너는 HttpServeletRequest, HttpServletResponse 두 객체를 생성한다.

2. 배포 서술자 web.xml을 기반으로 사용자가 요청한 URL을 분석하여 어느 서블릿 객체에 대한 요청인지  찾는다.

3. 해당 서블릿 객체에서 service 메소드를 호출하며, 클라이언트의 POST, GET 여부에 따라 doGet(), doPost()를 호출한다. doGet(), doPost() 메소드는 동적 페이지를 생성한 후 HttpServletResponse 객체에 응답을 보낸다.

4. 웹 서버는 정적 웹페이지처럼 *.class의 실행 결과를 웹 브라우저에 응답으로 전달하므로 웹 브라우저는 새로 가공된 HTML 페이지를 동적으로 처리한 결과를 보여준다. 웹 브라우저는 응답이 완료되면 HttpServletRequest, httpServletResponse 두 객체를 소멸시킨다.

 

JSP의 동작 과정

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

서블릿 프로그램과 *.class를 생성하는 역할은 JSP 컨테이너(JSP 엔진)가 담당한다.

JSP 컨테이너는 웹 서버와 분리하여 설치할 수도 있고, 웹 서버에 포함할 수도 있다.

 

1. 웹 브라우저가 웹 서버에 JSP를 요청한다. 웹 서버는 요청된 Hellojsp에서 jsp 확장자를 확인하여 웹서버의 JSP 컨테이너로 전달한다. 

2. JSP 컨테이너는 JSP 페이지를 서블릿 프로그램인 Hello_jsp.java로 변환한다.

3. JSP 컨테이너가 서블릿 프로그램을 컴파일하여 Hello_jsp.class 로 만들고 이를 웹서버로 전달한다.

4. 웹서버는 정적 웹페이지를 *.class의 실행 겨로가를 웹 브라우저에 응답으로 전달하므로 웹 브라우저는 새로 가공된 HTML 페이지를 동적으로 처리한 결과를 보여준다.

 

 

 

5. 서블릿과 JSP 생명 주기

서블릿의 생명 주기

서블렛 인터페이스의 init(), service(), destroy()가 있다.

 

1. 로딩 단계

서블릿 객체가 처음 요처왼 경우라면 서블릿 크래스를 메모리에서 로딩하여 객체를 생성해야 한다. 생성된 객체는 메모리에 계속 존재하기 때문에 처음 이후부턴 메모리에 있는 서블릿 객체를 사용한다.

2. 초기화 단계 : init() 메소드

서블릿이 처음 요청될 때 초기화하는 메소드. 객체가 생성되면서 최초에 한 번만 호출된다. 

3. 실행 단계 : service() 메소드

서블릿 컨테이너가 요청을 받고 응답을 줄 때 필요한 서블릿의 메소드. 서블릿 인터페이스를 구현한 HttpServlet 클래스의 doGet(), doPost() 등의 메소드가 호출된다. 클라이언트의 요청이 있을 때 GET, POST 여부에 따라 실행된다. 여러 클라이언트가 동시에 요청하더라도 스레드가 생성되므로 수행 속도가 빠르다.

4. 소멸 단계 : destroy()

서블릿 클래스가 더 이상 사용되지 않으면 주기적으로 destory() 를 통해 제거한다. 다시 사용하려면 init()을 하면 된다.

 

 

 

JSP 생명 주기

 

1. 번역(translation)

JSP 컨테이너가 JSP 소스 파일을 자바 코드로 변환한다. 이 단계에서 JSP 컨테이너는 JSP 파일을 읽고 구문을 분석한다. 

2. 컴파일

자바 코드인 서블릿을 컴파일하여 클래스 파일을 생성한다.

3. 로딩 및 초기화 단계 : jspInit() 메소드

JSP 컨테이너가 클래스 파일을 로딩하고 클래스의 인스턴스를 작성합니다. 이 때, 인수가 없는 생성자를 사용한다. 이 때, jspInit() 메소드를 호출하여 인스턴스가 된 객체를 초기화한다. 이는한 번만 수행한다.

4. 실행 단계 : _jspService() 메소드

각 클라이언트의 요청에 대해 JSP 컨테이너가 요청 및 응답 객체를 전달하는 _jspService() 메소드를 호출하여 응답 객체를 전달한다. 이 단계는 JSP 생명 주기가 끝날 대까지 모든 클라이언트의 요청에 대해 상호 작용한다.

5. 소멸 단계 : jspDestory()

JSP 컨테이너는 JSP를 jspDestroy()를 사용하여 제거한다. 이 메소드는 데이터베이스 연결 해제 또는 열려 있는 파일 닫기 등을 수행해야할 때 jspDestory() 메소드를 오버라이딩한다.

 

 

 

 

[그림 출처]

 

https://www.geeksforgeeks.org/life-cycle-of-jsp/

 

Life cycle of JSP - GeeksforGeeks

A Computer Science portal for geeks. It contains well written, well thought and well explained computer science and programming articles, quizzes and practice/competitive programming/company interview Questions.

www.geeksforgeeks.org

https://www.geeksforgeeks.org/life-cycle-of-a-servlet/

 

Life Cycle of a Servlet - GeeksforGeeks

A Computer Science portal for geeks. It contains well written, well thought and well explained computer science and programming articles, quizzes and practice/competitive programming/company interview Questions.

www.geeksforgeeks.org