Chapter 1 웹과 JSP 프로그래밍 이해하기

Ruinak·2021년 5월 7일
1

JSP 웹 프로그래밍

목록 보기
1/5
post-thumbnail

1-1 인터넷과 웹의 개요

  1. 인터넷(internet)과 웹(web)은 대개 동의어로 쓰이지만 서로 다른 개념
  • 인터넷 : 컴퓨터가 서로 연결되어 TCP/IP라는 통신 프로토콜을 이용하여 정보를 주고 받는 전세계의 컴퓨터 네트워크
  • 웹 : 인터넷을 통해 광범위한 정보를 제공할 수 있는 서비스 중 하나
    - 인터넷에 연결된 컴퓨터들을 통해 사람들이 정보를 공유할 수 있는 정보 공간
    - 월드 와이드 웹(world wide web)의 줄임말
  • 인터넷의 활용에서 웹의 비중이 절대적 위치를 차지하여 흔히 인터넷과 웹을 같은 의미로 사용
    인터넷 내부에 이메일, 웹, 파일송수신, 텔넷 등이 포함되어 있다.

1-2 웹의 동작 원리

  • 웹은 기본적으로 클라이언트/서버 방식으로 동작
  • 클라이언트(웹 브라우저)가 특정 페이지를 웹 서버요청(request)하면 이를 처리한 후 그 결과를 클라이언트에게 보내어 응답(response)하는 것
  • 즉 웹브라우저에 원하는 웹 서버 주소를 입력(요청)하면 웹 서버가 웹 브라우저를 통해 해당 웹 페이지를 제공(응답)
    요청하는 쪽이 클라이언트(사용자)이고 응답하는 쪽이 서버(제공자)가 된다.
    가장 널리쓰이는 웹 서버로 아파치(Apache), 톰캣(Tomcat), IIS(Internet Information Server) 등이 있다.

1-3 정적 웹 페이지와 동적 웹 페이지

  1. 정적(static) 웹 페이지
  • 컴퓨터에 저장된 텍스트 파일을 그대로 보는 것
  • HTML(Hyper Text Markup Language)과 같은 웹 언어로 작성
    - 가장 단순한 형태의 웹 언어
  • 정적 웹 페이지의 동작 방식
    1) 클라이언트가 웹 브라우저를 통해 웹 서버에 웹 페이지(URL) 요청
    2) 해당 URL의 웹 서버가 수신된 .html 파일을 검색
    3) 이미 준비된 HTML 문서를 클라이언트에게 그대로 전송
    4) 웹 브라우저가 HTML 문서를 보여줌
  • 장점
    - 동적인 요소가 없기 때문에 데이터베이스가 필요없음
    - 구축하기 쉬우며, 단순 문서로만 이루어져 있어 서버 간 통신이 거의 없고 속도가 빠름
    - 정적 문서로만 이루어져 있기 때문에 모든 호스팅 서버에서 동작할 수 있음
  • 단점
    - 미리 만들어 놓은 정보만 보여주기 때문에 고객의 취향이나 변화에 적응할 수 없음
    - 새로운 것을 추가, 수정, 삭제하는 작업을 모두 수동으로 해야 하므로 관리가 어려움
    기술이 발전함에 따라 사용자의 기호에 맞게 능동적으로 변화하는 웹 페이지가 필요해져서 이를 위해 동적 웹 페이지를 제공하는 PHP, ASP, JSP와 같은 언어가 개발되었다.
  1. 동적(dynamic) 웹 페이지
  • 저장된 내용을 다른 변수로 가공 처리하여 보는 것
  • PHP(Personal Home Page), ASP(Active Server Page), JSP와 같은 웹 언어로 작성
  • 사용자가 웹 페이지에 글을 작성하거나 환경 설정 등을 바꾸면 그내용이 서버에 있는 데이터베이스에 저장되고 결과가 웹 페이지에 반영되는 형태로 동작
  • 동적 웹페이지 동작 방식
    1) 클라이언트가 웹 브라우저를 통해 웹 서버에 웹 페이지(URL) 요청
    2) 해당 URL의 웹 서버가 요청을 분석하여 처리
    3) 결과를 HTML 문서로 생성
    4) 요청에 맞게 정제된 HTML 문서를 클라이언트에게 전달
    5) 웹 브라우저가 HTML 문서를 보여줌
    로그인하면 개인에 대한 정보와 개인만의 화면으로 구성되는 웹 사이트가 동적 웹 페이지의 대표적인 예입니다.

1-4 웹 프로그래밍과 JSP

  • 웹 프로그래밍 언어는 클라이언트 측 실행 언어와 서버측 실행 언어로 구분되며, 자바를 기반으로 하는 JSP는 서버 측 웹 프로그래밍 언어 중 하나
  • 원래 자바를 기반으로 하는 서버 측 프로그래밍 방식인 서블릿을 먼저 개발했으나, 서블릿 개발 방식이 쉽지 않아 HTML 코드에 직접 삽입할 수 있도록 개발된 기술이 JSP임
  • 실제로 웹 애플리케이션 서버에서 클라이언트에게 서비스 될 때는 JSP가 서블릿으로 변경됨
  • JSP 특징
    1) JSP는 서블릿 기술의 확장
    - JSP에서는 서블릿의 모든 기능을 사용 가능
    - 서블릿과 마찬가지로 API를 사용할 수 있음
    (= API : JDBC, JNDI, EJB 등을 모두 포함하고 있는 강력한 엔터프라이즈 자바)
    - 쉽게 개발할 수 있도록 JSP에서는 내장 객체, 미리 정의된 태그, 표현식 언어와 사용자 정의 태그를 사용할 수 있음
    2) JSP는 유지 관리가 용이
    - 서블릿 기술에는 프레젠테이션 로직과 비스니스 로직이 섞여있음
    - JSP 기술의 경우 프레젠테이션 로직과 비즈니스 로직을 분리할 수 있기 때문에 관리가 쉬움
    3) JSP는 빠른 개발이 가능
    - 코드를 수정했을 때 서블릿에서는 업데이트를 하고 다시 컴파일 해야함
    - JSP의 경우 다시 컴파일하고 프로젝트를 배포할 필요가 없음
    4) JSP로 개발하면 코드 길이를 줄일 수 있음
    - JSP에서는 액션 태그, JSTL(JavaServer Pages Standard Tag Library), 사용자 정의 태그 등의 다양한 태그와 표현 언어, 내장 객체 등을 사용함으로써 서블릿보다 코드를 줄일 수 있음

1-5 JSP 페이지의 처리 과정

  • JSP 페이지는 하나의 서블릿 프로그램으로 변환되어 실행
  • JSP 페이지의 처리과정
    1) 웹 브라우저가 웹 서버에 JSP를 요청. 웹 서버는 요청된 Hello-jsp에서 jsp 확장자를 발견하여 JSP 페이지임을 확인하고 웹 서버에 있는 JSP 컨테이너에 전달
    2) JSP 컨테이너는 JSP 페이지를 서블릿 프로그램인 Hello_jsp.java로 변환
    3) JSP 컨테이너가 서블릿 프로그램을 컴파일하여 Hello_jsp.class로 만들고 이를 웹 서버에 전달
    4) 웹 서버는 정적 웹 페이지처럼 *.class의 실행 결과를 웹 브라우저에 응답으로 전달하므로 웹 브라우저는 새로 가공된 HTML 페이지를 동적으로 처리한 결과를 보여줌
    웹 컨테이너(Web Container)
    - JSP와 서블릿을 실행할수 있는 프로그램으로 서블릿 컨테이너 라고도 불림
    - 웹 서버에서 JSP를 요청하면 톰캣에서는 JSP 파일을 서블릿으로 변환하여 컴파일을 수행하고, 서블릿의 수행 결과를 웹 서버에 전달함
    - 서블릿 컨테이너의 개념과 동일한 JSP 컨테이너가 탑재되어 있는 WAS(Web Application Server)는 JSP 페이지를 컴파일하여 동적 페이지를 생성합니다.

1-6 JSP 생명 주기

  • JSP 페이지를 컴파일한 *.class에는 jspInit( ), _jspService( ), jspDestroy( ) 메소드가 존재하며, JSP 생성부터 파괴까지의 과정에서 다음과 같은 역할을 수행함
  • JSP 생명 주기
    1) 번역(translation) 단계
    - JSP 컨테이너가 JSP 소스 파일을 자바 코드(서블릿)로 변환
    - 번역 단계에서 JSP 컨테이너는 JSP 파일을 일고 구문을 분석함
    - JSP 컨테이너는 JSP 페이지와 페이지에 사용된 태그 라이브러리를 참조하는 사용자 정의 태그와 표준 디렉티브, 액션 태그의 구문 정확성을 검증함
    2) 컴파일(Compilation) 단계
    - JSP 컨테이너가 번역 단계에서 생성된 자바 코드인 서블릿을 컴파일하여 클래스 파일을 생성함
    - 컴파일 단계에서는 자바 코드의 모든 구문을 검사함
    - JSP 내의 선언문, 처리문, 표현문 등의 스크립트 태그를 사용하여 삽입된 자바 코드의 구문 오류를 검사
    3) 로딩(loading) 및 초기화(initialization) 단계
    - JSP 컨테이너가 앞의 두 단계에서 생성된 *.class를 로디아고 클래스의 인스턴스를 작성
    - JSP 컨테이너는 서블릿의 init( ) 메서드, 즉 jspInit( )를 호출하여 인스턴스가 된 객체를 초기화
    - 일반적으로 초기화는 한 번만 수행되고 데이터베이스 연결, 파일 열기, 룩업 테이블 생성 등을 초기화함
    4) 실행(execution) 단계
    - 각 클라이언트의 요청에 대해 JSP 컨테이너가 요청 및 응답 객체를 전달하는 _jspService( ) 메서드를 실행함
    - JSP 생명 주기가 끝날 때까지 모든 클라이언트의 요청에 대해 상호 작용을 함
    5) 소멸(destruction) 단계
    - JSP 생명 주기를 완료함
    - JSP 컨테이너는 실행되고 있는 JSP를 jspDestroy( ) 메서드를 사용하여 제거함
    - jpsDestroy( ) 메서드는 서블릿의 destroy( ) 메서드에 해당
    - 데이터베이스 연결 해제 또는 열려 이쓴 파일 닫기 등을 수행해야 할 때 jspDestroy( ) 메서드를 오버라이딩함
    - JSP 컨테이너가 해당 서블릿 인스턴스를 제거할 떄 어떤 활동을 정리하기 위해 jspDestroy( ) 메서드를 호출함
    jspInit( )와 jspDestroy( ) 메서드는 컨테이너가 기본 기능을 제공하기 때문에 오버라이딩이 선택 사항이지만, 기본적으로 _jspService( ) 메서드는 컨테이너가 추가하기 때문에 오버라이딩할 수 없습니다.
profile
Nil Desperandum <절대 절망하지 마라>

0개의 댓글