SPRING

3. JSP

ggomjiu 2025. 5. 24. 22:37

JSP(Java Server Pages)

: 동적 웹 페이지를 개발하기 위한 프로그래밍 기술

- Java를 사용하여 서버 측에서 웹 페이지를 생성해 웹 브라우저로 전송

- 장점 )

  • 짧은 코드로 동적인 웹 페이지를 생성할 수 있음
  • 기본적인 예외는 자동으로 처리됨
  • 많은 확장 라이브러리를 사용할 수 있음
  • 스레드 기반으로 실행되어 시스템 자원을 절약해줌

- JSP는 JavaEE의 핵심요소 -> JavaEE는 대한민국 정부 표준 프레임워크의 근간

 

탄생 배경

1. 정적 웹 페이지(Static Web Page)

: 클라이언트가 어떤 형태로 요청을 하던 항상 동일한 모습을 보여주는 웹 페이지

 

2. 동적 웹 페이지(Dynamic Web Page)

: 동일한 페이지라 할지라도 클라이언트의 요청에 따라 그때 그때 적절한 웹 페이지를 생성해 보여주는 기술

3. 기술의 발전

- 동적 웹 페이지를 구현하는 기술은 전처리를 어떻게 하야네 따라 구분

 1) 애플릿

: 앱을 동적으로 만들기 위한 고대의 자바 기술

- 지금은 더 이상 지원되지 않음

 

2) 서블릿

: 클라이언트 요청에 따라 서버에서 처리 후 응답으로 결과값만 보여주는 구조

- Java 코드 내에서 결과로 보여줄 HTML 코드로 생성 & 조립하는 방식

- 너무 많은 코드가 필요하다는 단점이 존재

 

3) JSP

: 서블릿의 단점을 보완하여 기본을 HTML로 하고 필요한 부분만 Java 코드를 삽입하는 형태

- 장점 )

  • JSP 파일 -> 서블릿
    • 한 번 서블릿으로 컴파일된 JSP 파일은 캐시되므로 실질적 성능 저하 없이 사용 가능
    • 서블릿 기술도 여전히 사용 가능
    • 주로 클라이언트 단은 JSP,  서버 단은 서블릿 요소가 주로 사용됨

cf) 서블릿 vs JSP

▶ 서블릿
- Java 코드 안에서 HTML 페이지를 생성
- 변수 선언 및 초기화가 반드시 선행되어야 함
- 컨트롤러를 만들 때 사용

▶ JSP
- HTML 코드 안에서 필요한 부분만 Java 코드를 스크립트 형태로 작성
- 자주 쓰이는 기능을 내장 객체로 제공 -> request, response, session 등
- 처리된 결과를 보여주는 뷰를 만들 때 사용

 

기본 구조

- JSP 파일은 웹 브라우저에 띄울 HTML 문서를 생성하는 것

- 기본적인 HTML 구조 + JSP 요소가 혼합된 상태

- JSP 요소

  • 지시어
  • 스크립트 요소
    • 선언부
    • 스크립트릿
    • 표현식

1. 지시어

: JSP 페이지를 Java 코드로 변환하는데 필요한 정보를 JSP엔진에게 알려주는 부분

- 주로 스크립트 언어나 인코딩 방식 등을 설정

- 종류)

  • page : JSP 페이지에 대한 정보를 설정하는 지시어
  • include : 외부 파일을 현재 JSP 파일에 포함시키는 지시어
  • taglib : 표현 언어에서 사용할 자바 클래스나 JSTL을 선언하는 지시어

1) page

: JSP 페이지에 대한 정보를 설정하는 지시어

- 문서의 타입, 에러 페이지 같은 정보를 설정

 

2) include

: 별도의 문서를 필요한 페이지에서 포함시킬 수 있음

- 웹 사이트 헤더나, 푸터 등 처럼 해당 사이트 내 모든 페이지에서 반복되어 사용되는 경우

- 세션 확인 같은 작업처럼 모든 페이지에서 삽입되어야 할 요소의 경우

 

3) taglib

: 표현 언어에서 자바 클래스의 메서드를 호출하거나 JSTL을 사용하기 위한 지시어

 

2. 스크립트 요소

1) 선언부

: 표현식, 스크립트릿에서 사용할 변수나 메서드를 선언

- _jspService() 메서드 외부에 위치

 

2) 스크립틀릿

: JSP 페이지가 요청을 받을 때 실행되어야 할 Java 코드를 작성

- _jspService() 메서드 내부에 위치

 

3) 표현식

: 화면에 값을 하나씩 표현해줄 때 사용

- _jspService() 메서드 내부에 위치

- 실행결과 값이 하나만 나오는 값을 화면에 표시해줄 때 사용

 

 

 

 

 

 

 

 

 

 

Reference

https://velog.io/@wkdwl578/JSP-JSP%EC%9D%98-%EA%B8%B0%EB%B3%B8%EA%B0%9C%EC%9A%94%EC%99%80-%EA%B5%AC%EC%A1%B0