본문 바로가기

JSP

[JSP]JSP의 개념

JSP는 Servlet의 단점을 보완하기 위해 만들어졌으나, 결국에는 Servlet으로 변환되어 컴파일되므로 Servlet의 생명주기 및 동작되는 방법이 비슷하다. 

JSP(Java Server Page)

  • 동적 페이지 생성을 위한 서버측 스크립트 언어로, Servlet의 단점을 극복하기 위해 만들어졌다.
  • Servlet : JAVA소스코드 속에 HTML 소스코드가 들어가는 구조
  • JSP : HTML소스코드 속에 자바 소스코드가 들어가는 구조
  • HTML내에 <%@ ...%>, <% ...%>, <%= ...%>등과 같은 기호의 삽입을 통해 작성되며, 해당 기호는 프로그램이 수행된 결과와 치환됨으로써 사용자의 브라우저에는 순수한 HTML태그로만 구성된 페이지를 볼 수 있게 된다.
  • JSP페이지 내에서 작성된 자바 소스코드는 웹 브라우저로 보내지는 것이아니라 웹 서버에서 실행되어 치환된다.
  • 웹 프로그래머가 소스코드 수정시 디자인 부분을 제외하고 자바 소스코드만 수정하면 되기에 효율이 높아진다.

JSP의 특징

  • 동적 페이지를 생성하기 위한 프로그래밍 언어로, 서버측 스크립트 언어라고도 한다.
  • JSP 코드는 서버측에서 서블릿으로 변환된 후 컴파일되며, 생성된 결과는 순수한 HTML태그로만 구성되어있다.
  • 컴파일 과정 필요없이 JSP페이지를 작성하여 웹 서버의 디렉토리에 추가만 하면 사용이 가능하다.
  • 컴포넌트 기반에서 개발할 수 있도록 '자바 빈즈(Java Beans)'라는 기술이 제공됨으로써 개발 업무의 분업화가 가능해지고 조금 더 재활용이 가능한 코드의 작성이 가능해진다.

JSP 이클립스 개발시 주의점

  • JSP페이지가 호출되어 실행시 서블릿 코드로 변환이 되는데, 이클립스로 개발시 변환된 파일이 저장되는 위치는 Tomcat에서 실행을 했을 때와 다른 위치에 만들어진다.
  • 서블릿으로 변환된 위치를 찾기 위해서는 application객체의 getRealPath()메서드를 통해 이클립스로 실행시 실질적으로 실행되는 JSP 코드가 있는 위치파악을 한 후에, 그 위치에서 두 단계 상위로 올라간 뒤 work 폴더에서 8단계 하위로 들어가면 서클릿 코드로 변환된 소스를 발견할 수 있다.
  • 개발시점에 코드에 잘못된 부분을 수정하는 작업을 디버깅이라 하는데, 디버깅 작업시 서블릿 코드가 참조되는 경우가 많기 때문에 반드시 이 위치를 알아놓아야 한다.

Servlet과 JSP

  • 하나의 JSP 페이지는 하나의 Servlet으로 변환된다.
  • JSP와 Servlet은 대소문자를 구분한다는 특징이 존재한다.
  • Servlet은 하나의 완전한 자바 프로그램으로 컴파일을 거친 후에 실행 가능한 상태가 된다.
  • 어떻게보면 이 둘은 같다고 볼 수 있기에 HTML태그 사이에 스크립트 형태를 가진 JSP만으로 동적인 웹페이지를 생성하는 웹 사이트를 구성할 수 있고, 서블릿만으로도 이러한 웹 사이트를 구성할 수 있다.
  • HTML태그에 포함된 JSP는 브라우저에 표현이 될 부분에 보다 유용하다.
  • Servlet은 브라우저에 표시될 필요가 없지만, 내부적으로 처리되어야 할 부분에 보다 유용하게 사용할 수 있다.
  • 이러한 특성으로 인해 이 둘을 상호 보완적인 관계로 혼합하여 사용하기도 한다. 즉 JSP는 화면 출력 부분을, 서블릿은 처리 부분을 맡아서 처리함으로써 설계적인 측면에서 웹 사이트가 보다 효율적인 구성을 갖게 된다.

JSP 동작구조

  1. 클라이언트가 웹 서버에 요청을 보내면, 웹 서버는 Servlet/JSP 컨테이너에 요청을 넘긴다.
  2. 요청을 받은 컨테이너는 HttpRequest와 HttpResponse 객체를 만들어 이들을 서블릿 doPost()나 doGet()메서드 중 하나를 호출한다.
  3. 서블릿만 사용할 경우 out객체의 println 메서드를 사용하여 HTML 문서를 작성해야 하는데, 추가/수정이 어렵고 가독성도 떨어진다. 떄문에 JSP를 사용하여 비지니스 로직과 프레젠테이션 로직을 분리한다.
  4. 서블릿은 데이터의 입력, 수정 등에 대한 제어를 JSP에게 넘겨서 프레젠테이션 로직을 수행한 후 컨테이너에게 Response를 전달한다.
  5. 만들어진 결과물은 사용자가 해당 페이지 요청시 컴파일되어 자바파일을 통해 .class 파일이 만들어지고, 두 로직이 결합되어 클래스화 된다. (즉 out 객체의 println 메서드를 사용해서 구현해야하는 번거로움을 JSP가 대신 수행해준다.)

'JSP' 카테고리의 다른 글

[JSP]JSP의 지시자와 액션태그  (0) 2023.03.15
[JSP]JSP의 스크립트 요소  (0) 2023.03.14
[JSP]Model1, Model2  (0) 2023.03.14
[JSP]동적 페이지를 위한 기술 CGI  (0) 2023.03.10
[JSP]전체적인 흐름  (0) 2023.03.10