2025-09-29

오늘 배운 것

EL & JSTL, include, Paging

EL & JSTL

EL & JSTL 개요

  • JSP를 더 JSP답게 만드는 요소
  • JSP에서 프로그래밍 요소를 최대한 제거 → 태그 중심
  • EL (Expression Language)
    • JSP의 <%= … %> 표현식을 대체
    • 웹 스코프에 저장된 attribute 접근에 용이
  • JSTL (JSP Standard Tag Library)
    • 자주 사용되는 기능을 정형화된 태그로 제공
    • 별도 라이브러리 설치 필요

EL

EL 기본

  • 4가지 웹 스코프(page, request, session, application)에 저장된 attribute를 쉽게 출력
  • 기본 문법: ${attribute_name}
  • 작은 범위에서 큰 범위로 확장하며 attribute 검색
  • 값이 없을 경우 null이 아닌 공백으로 출력
  • JS의 $와 혼용 주의 → EL은 서버 측, JS는 클라이언트 측

EL 내장 객체

  • JSP처럼 EL도 기본 내장 객체 제공 (pageScope, requestScope, sessionScope, applicationScope 등)

객체 접근법

  • JavaBeans property 접근: getter/setter를 통한 접근
  • Record: property 이름 그대로 접근
  • Map: key로 접근
  • 접근 방식: . 표기법 또는 [] 표기법

객체 메서드 호출

  • property뿐만 아니라 일반 메서드도 호출 가능

EL 연산자

  • 문자열 + 결합 불가 (자동 캐스팅만 지원)
  • 나누기 연산 /, div는 정수끼리 연산해도 소수점 결과 반환
  • 비교 연산자: 숫자, 문자열 모두 비교 가능
  • empty는 null, 빈 문자열, 길이 0 배열/컬렉션에 대해 true

JSTL

JSTL 개요

  • Tag Library: JSP에서 재사용 가능한 태그를 모듈화
  • JSTL: 코어, 포맷팅, XML 처리, DB 활용, 국제화 등 제공
  • EL과 함께 사용 → Scriptlet 대비 간결한 JSP 작성 가능

JSTL 선언

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
  • prefix: JSP 내에서 사용할 접두사
  • uri: 태그 라이브러리 식별자

변수 지원

  • <c:set> : 웹 스코프에 변수 저장
  • <c:remove> : 변수 제거
  • scope 지정 가능 (page, request, session, application)

조건문

  • <c:if> : 단일 조건
  • <c:choose> + <c:when> + <c:otherwise> : 다중 조건 분기

반복문

  • <c:forEach> : 횟수 기반 반복 또는 collection 순회
  • 속성
    • items: 대상 collection
    • var: 각 반복에서의 값
    • varStatus: 루프 상태(index, count 등)

include directive

페이지 모듈화

  • JSP 공통 영역(header, footer 등)을 별도 파일로 분리 후 include

include directive

<%@ include file="header.jsp" %>
  • include 되는 JSP는 최종적으로 하나의 Servlet으로 합쳐짐
  • 공통 모듈에 root 변수, CSS, JS 등을 포함시켜 재사용

Paging

페이징을 위한 구성 요소

  1. SearchCondition: 검색 조건(name, email 등)
  2. Page: 페이징 정보 관리(page 번호, size, total 등)

화면 처리

  1. 링크 호출 / 검색 조건(form 전송) / 페이지 링크 호출 구분
  2. form submit 시 검색 조건 반영
  3. 페이지 링크 호출 시 Bootstrap Pagination 활용
  4. JavaScript로 페이지 이동 시 form 전송 방식과 연계

results matching ""

    No results matching ""