라롸 2020. 3. 17. 10:13

1. 개요

  JSP(JavaServer Pages)는 HTML, DHTML, XHTML, XML과 같은 동적 웹 콘텐츠를 생성하는 애플리케이션을 만들기 위한 J2EE 플랫폼에 속하는 자바 기술. 

  동적인 콘텐츠를 만들 때는 어떠한 형태로든 "콘텐츠를 어떻게 생성할지"를 지시하는 프로그래밍이 필요하다. 그런데 서블릿처럼 프로그램 소스 안에 HTML 태그를 처리하면, 변경이 일어날 때마다 매번 컴파일해줘야해서 동적인 콘텐츠를 만들기 어렵다. JSP 기술은 동적으로 콘텐츠를 생성하기 위해 프로그래밍 코드가 담긴 스크립트를 포함할 수 있게 하고, HTML과 유사한 태그를 통해 어려운 자바 코딩없이도 자바 객체를 사용할 수 있게 한다. 

 

 

2. 동작 원리

https://www.kdata.or.kr/info/info_04_view.html?field=&keyword=&type=techreport&page=18&dbnum=183776&mode=detail&type=techreport

클라이언트가 웹 브러우저를 통해 JSP를 요청했을 때,

  1. jsp 컨테이너는 태그로 만들어진 *.jsp 파일을 *.java 소스로 변환

  2. jsp 컨테이너는 변환한 *.java를 컴파일하여 *.class 파일로 만듦

  3. 컴파일된 자바 실행 파일은 서블릿 컨테이너에 의해 서블릿으로서 동작

  4. 변환과 컴파일 작업은 최초의 요청이거나 jsp 파일이 변경 되었을 때만 수행

C:\프로젝트 폴더\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\work\Catalina\localhost\프로젝트명\org\apache\jsp
의 경로에서 컴파일 된 class 파일을 확인할 수 있다.

 

 

3. 스크립트 기반 태그

 

  • 주석문

    • <%-- ... --%>

  • 지시자

    • JSP 컨테이너가 JSP페이지를 파싱하여 자바소스로 변환하는데 필요한 정보를 알려주기 위해 사용 

    • <%@ ... %>

  • 스크립트릿

    • JSP 페이지가 요청될 때마다 수행되어야 하는 자바 코드를 추가하고자 할때 사용

    • 자바 소스로 변환시 _jspService() 메소드 내에 그대로 옮겨짐.

    • <% ... %>

  • 표현식

    • 동적인 데이터를 응답 결과에 포함하기 위해 사용

    • <%= ... %>

  • 선언문

    • JSP페이지 내의 스크립트 코드에서 사용할 멤버 변수를 선언하거나 메소드를 정의하고자 할때 사용

    • 자바 코드로 변환시 멤버로 선언됨

    • <%! ... %>

 

 

4. XML 기반 태그

 

  • 표준 액션 태그

    • 미리 정해진 기능들을 JSP 스펙에 명시함으로써 모든 컨테이너가 동일하게 구현하는 태그
    • JSP 컨테이너에서 기본으로 제공한다.
    • <jsp:body /> , <jsp:forward /> <jsp:useBean /> 등등
  • 커스텀 태그

    • 개발자의 목적에 따라서 태그를 정의하고 해당 태그를 작동하게 해주는 확장 기술

 

 

 


참고 

1.  책 - 처음 해보는 Servlet & JSP 웹 프로그래밍