어떡해 일단 해야지

JSP — 표현언어 EL & JSTL 본문

현대이지엘 JAVA 풀스택 개발자 아카데미 7회차

JSP — 표현언어 EL & JSTL

이혜니 2026. 3. 30. 11:33

 

 

 

 

📌 이번 주 학습 요약

  이번 주에는 JSP를 중심으로 서버에서 화면을 어떻게 구성하고 데이터를 표현하는지를 학습했다. 기존 Servlet에서는 Java 코드 안에 HTML을 작성하는 방식이었다면, JSP는 반대로 HTML 안에 Java 코드를 삽입하는 구조로 되어 있어 화면 구성에 훨씬 직관적이라는 것을 느꼈다. 특히, JSP의 구성 요소 (지시어, 스크립트 요소, 액션태그), request / response / out과 같은 내장 객체 <jsp:include>, <jsp:forward> 등의 페이지 흐름 제어 EL(Expression Language)을 통한 데이터 표현 방식 JSTL을 활용한 가독성 높은 코드 작성을 학습하면서 단순히 데이터를 처리하는 것을 넘어서 화면과 데이터를 어떻게 분리하고 관리할 것인가에 대한 개념을 이해할 수 있었다.

JSP와 Servlet의 차이 요약

 

 


 

JSP [Java Server Page]

  Java기반으로 HTML 문서 내에 자바코드를 삽입 <% JSP 코드 영역 %>
서블릿(Java코드 내에 HTML)과의 차이점 : HTML 내부에 Java 소스 코드가 들어가 있으며 사용이 편리하다.

동작 구조

 

  • HTML 문서 내용 / JSP 태그
  • JSP의 페이지 구성
    ① 지시어 : 페이지의 전체적인 속성 지정시 이용, 컨테이너에게 전달하는 JSP페이지 관련 메시지. (page, include, taglib)
    ② 스크립트 요소: 선언문, 표현식, 스크립트릿, 액션태그

  • 구분 태그 표기법 설명
지시어 <%@ %> JSP페이지의 속성 지정
선언부 <%! %> 변수 선언 및 메소드 정의
표현식 <%= %> 계산식, 함수 호출 결과 등 출력
스크립트릿 <% %> 자바 코드 기술
주석 <%-- --%> JSP 페이지에 설명 추가
액션태그 <jsp: 액션> </jsp: 액션> 자바빈, include / fotward / param 등
  • JSP 내장 객체
    클라이언트에서 웹서버에게 JSP 페이지를 요청하면 자동으로 생성, 객체 생성하지 않고 바로 사용 가능하다.
  1. request 객체: HTML 태그의 name 속성 값을 받는다.
  2. response 객체: 처리한 결과를 웹 브라우저 응답에 사용, 헤더 설정, 코드 상태, 쿠키 등 정보 포함 되어있다. 응답 콘텐츠 설정, 헤더 설정, 상태 코드 설정과 관련된 메소드 제공한다.
  3. out객체 : 출력 스트림으로 응답. 표현식 <%= 출력문자열 %>과 동일하며 데이터 타입은 문자열

 

  • 액션태그 
      JSP 페이지 내에서 어떤 동작을 지시하는 태그. 어떤 동작 또는 액션이 일어나는 시점에 페이지와 페이지사이에서 제어 이동 또는 다른 페이지의 실행 결과를 현재 페이지에 포함하는 기능 제공한다. 
    • jsp:include : 다른 페이지의 실행 결과를 현재 페이지에 포함 시킬 때
    • jsp:forward : 현재 페이지에서 다른 특정 페이지 전환, 페이지 간의 제어 이동시킬 때 이용
    • jsp:param: 이동하는 페이지에 파라미터 값을 전달할 때 사용
    • jsp:useBean: 자바빈을 JSP 페이지에서 이용 시 사용 (DTO/VO)에 해당
    • jsp:setProperty: 프로퍼티의 값을 세팅시 이용
    • jsp:getProperty: 프로퍼티의 값 게터시 이용
용도 내장 객체 타입(상속 되는 클래스 또는 인터페이스)
입출력 관련 request HttpServletRequest - 클라이언트의 요청 정보 전달
response HttpServletResponse - 요청에 대한 처리 결과 응답
out JspWriter - 출력 스트림으로 출력
서블릿 관련 page HttpsJspPage - 현재 페이지에 대한 클래스 정보
config ServletConfig - 서블릿 초기화 환경 정리
컨텍스트 관련 session HttpsSession - 세션정보 관리하는 객체
application ServletContext - 애플리케이션에 관한 환경 정보 지원
pageContext PageContext - JSP 페이지에 대한 정보를 저장하는 객체
예외처리 exception Throwable - 예외처리

 

jsp:include 액션 태그와 include 지시어의 차이점

형식 <jsp:include page=”…” /> <%@ include file=”…” %>
처리 시점 실행 시 자바 소스로 변환시
기능 별도의 파일로 처리 제어권이 이동했다가 다시 돌아온다. 현재 파일에 삽입 (합쳐서 하나의 java 파일 생성)
데이터 구성 동적 데이터로 구성 정적 데이터로 구성
용도 화면 레이아웃 모듈화 시(top/bottom페이지 include) 여러페이지에서 사용하는 변수 지정하고 include

 

 

 jsp:forward 액션 태그의 흐름 이동

 


 

표현언어 : EL

  화면에 대한 요구사항이 복잡해지면서 자바코드를 대체하는 액션 태그가 등장했고 복잡한 자바 코드를 제거하는 방향으로 발전했다. 현재 JSP 페이지는 스크립트 요소보다 표현언어(EL)이나 JSTL 사용한다.

EL - 표현언어로 액션태그 또는 표현식 대신 값을 표현한다.(<%= 값%> ⇒ ${값} )
attribute 또는 paramaeter 등을 JSP 파일에서 출력할 용도로 사용한다.

  • 연산자: 산술, 관계, 논리, 조건, empty 연산자

 

JSTL [JSP Standard Tag Library]

JSP 표준 태그 라이브러리. 가독성을 보완하고자 만들어졌으며 사용하기 위한 별도 라이브러리가 필요하다.

  • 라이브러리 Prefix 설명
core c 변수, 제어문, URL 등 처리
format 국제화 fmt 숫자/날짜/시간 지정, 국제화, 다국어 처리
Sql (database) sql 데이터베이스 작업 처리
xml x XML 문서 처리
functions fn 함수 기능
  • Core
    • <c:set> = setAttribute() 같은 역할로 page,request,session,application 범위의 변수(속성) 설정
    • <c:out> =화면 출력
    • <c:redirect> = response.sendRedirect() 대체 태그 페이지 이동
    • <c:choose> = switch 문과 같지만 문자열 비교도 가능하며 쓰임 범위가 넓다. 서브태그를 가짐.
      • <c:when> = 조건 비교시 만족한 경우
      • <c:otherwisw> = else
    • <c:forEach> , <c:forToken>

이번 주를 정리하며 ✍️

 

이번 주 학습을 통해 느낀 점은 웹 개발에서 ‘화면과 로직을 분리하는 것’이 얼마나 중요한지였다. 초반에는 JSP에서 Java 코드를 직접 작성하는 방식이 익숙했지만, 학습을 진행하면서 스크립트릿이 아니라 EL / JSTL 사용 으로 발전하는 이유가 단순한 문법 변화가 아니라 유지보수와 가독성을 위한 구조적인 선택이라는 것을 이해하게 되었다. 또한 <jsp:forward>와 <jsp:include>를 사용하면서 페이지 흐름이 단순 이동이 아니라 데이터를 어떻게 전달하고 유지할 것인가의 문제라는 점이 인상 깊었다. 이번 학습을 통해
단순히 기능 구현이 아닌 “왜 이 방식이 더 좋은가?”, “더 효율적인 구조는 무엇인가?” 를 고민하게 되었고, 조금 더 백엔드 개발자의 시각으로 사고할 수 있게 된 것 같다.