ye._.veloper

[ Java ] JSP(Java Server Pages) 란? 본문

Java

[ Java ] JSP(Java Server Pages) 란?

ye._.veloper 2023. 4. 30. 13:00

☁ JSP (JavaServer Pages) 란 ?

 

    · HTML 코드에 JAVA 코드를 넣어 동적 웹 페이지를 생성하는 웹 애플리케이션 도구

    · JSP 가 실행되면 자바 서블릿(Servlet)으로 변환되며 웹 애플리케이션 서버(WAS)에서 동작되면서 필요한 기능을 수행하고

        그렇게 생성된 데이터를 웹페이지와 함께 클라이언트로 응답한다.

 

 

☁ JSP 특징

    · HTML 페이지에 Java 코드를 직접 사용

    · Servlet Container에 의해 관리되는 내장 객체들의 LifeCycle을 이용한 페이지 간의 속성 관리

    · Custom Tag 기술을 사용한 코드의 태그화(action, JSTL 등)

    · EL(Expression Language)를 통한 데이터 표현

 

☁ JSP의 구조와 동작 원리

    ◽ 구조

    · 기본적으로 HTML 문서의 형식을 가짐

    · 서블릿 컨테이너는 JSP 파일을 서블릿 구조의 .java 소스코드로 변환하며 컴파일을 수행
    · 컴파일이 완료되면 JSP는 더이상 파일로 부터 처리되는 구조가 아니라 컨테이너에 로드된 서블릿으로 동작하는 구조

JSP 동작 과정

        1 ) JSP 소스 코드 작성 ➡ 웹 애플리케이션 배포

         2 ) 사용자 요청 시, 컨테이너는 해당 JSP의 클래스 변환 여부 확인

         3 ) 변환되지 않았다면 xxx_jsp.java 파일 생성 및 .class로 컴파일

         4 ) jspInit( ) 메서드를 통해 사용자 요청 처리 

         5 ) _jspService() 메서드를 통해 사용자 요청 처리

         6 ) 이후 요청에 대해 메모리 상의 Servlet으로 서블릿과 같이 서비스

         7 ) 컨테이너 종료 혹은 관리 도구에 의해 서블릿 jspDestroy( ) 메서드 호출하여 종료

 

    ◽ 과정

         1 ) 브라우저가 웹 서버에게 JSP에 대한 요청 정보를 전달

         2 ) 브라우저가 요청한 JSP가 최초 요청 시에만 JSP로 작성된 코드 ➡ Servlet 코드로 변환(java 파일 생성)

         3 ) Servlet 코드를 컴파일해서 실행 가능한 byte코드로 변환 (class 파일 생성)

         4 ) Servlet이 실행되어 요청을 처리하고 응답 정보를 생성

 

☁ JSP의 장 · 단점

        ◽ 장점

          · HTML 파일에 자바 기술을 거의 무한대로 사용할 수 있다.

          · 비교적 쉽게 개발이 가능하다.

          · 커스텀태그 라이브러리 등 JSP 개발에 도움을 주는 확장 태그 구조를 사용할 수 있다.

          · 서블릿으로 변환되어 실행 되므로 서블릿 기술의 장점을 모두 가진다.

          · MVC 패턴, 스프링프레임워크등 잘 설계된 구조를 적용할 수 있어 체계가 잡히면 개발 생산성이 향상되고 성능이 보장 된다.

          · 모든 개발이 서버에서 이루어지므로 개발의 집중화를 통한 효율이 있을 수 있다.

 

    ◽ 단점

          · 화면 구성요소의 변경은 jsp -> java -> class -> 서블릿 실행의 과정을 거치게 되므로 개발 과정에서 사소한 UI 변경도

              매 번 확인하는데 시간이 소요된다.

          · 개발자와 디자이너간의 역할 분담에 제약이 있다.

          · jsp 파일의 화면 디자인 확인을 위해서도 반드시 서블릿 컨테이너의 실행이 필요하다.

 

💡 전반적으로 JSP 자체의 단점이라기 보다는 SSR(Server Side Rendering) 방식의 백엔드 웹 개발의 문제라 볼 수 있다.

    · 

 

☁ JSP 구성요소 (기본 태그)

종 류 사용 용도 형 식
지시자(Directive) JSP 파일의 속성을 기술(지정)함
JSP 컨테이너에게 해당 페이지를 어떻게 처리해야 하는지 전달하기 위한 내용
 · page 지시어
        <%@ page  ~~ %>
 · include 지시어
        <%@ include ~~ %>
 · taglib 지시어
         <%@ taglib ~~ %>
주석(Comment) JSP 페이지 설명을 넣음 <% --  -->
선언(Declaration) 변수와 메소드를 선언함 <%!  %>
표현식(Expression)  · 브라우저를 통해 클라이언트에 전달될(html 응답에 포함될) 자바 표현식 포함
 · 계산식이나 함수를 호출한 결과를 문자열 형태로 출력함
 · EL 로 대체 가능
<%=  %>
스크립틀릿(Scriptlet) Java 코드를 기술함
➡ MVC패턴 적용과 JSTL + EL로 대체 가능
<%  %>
액션 태그(Action Tag) Java Bean이나 애플릿 서버 모듈과 연결함 jsp:forward
jsp:include

jsp:useBean
jsp:setProperty
jsp:getProperty
jsp:param

    · <%  %> 안에 코드를 작성하면 서버에서도 Java 코드로 인식하게 된다.

 

☁ Servlet 이란?

    · 웹 페이지를 동적으로 생성하기 위한 서버측 프로그램

    · Java 언어를 기반으로 만들어지며 웹 애플리케이션 서버(WAS; Web Application Server) 위에서 컴파일되고 동작한다.

 

☁ JSP와 Servlet

    · JSP는 HTML 내부에 Java 소스 코드가 들어감으로 인해 HTML 코드를 작성하기 간편

    · Servlet은 Java 코드 내에 HTML 코드가 있어서 읽고 쓰기가 불편하기 때문에 작업의 효율성이 떨어진다.

 

 

 

 

Ref.

JSP(Java Server Pages)란 무엇인가?

JSP

 

Comments