lala9663
Bump into
lala9663
전체 방문자
오늘
어제
  • 분류 전체보기 (158)
    • JavaScript (1)
    • Java (39)
    • Spring (28)
    • IntelliJ (7)
    • Git,Github (2)
    • CS (22)
    • Algorithm (23)
      • Algorithm 문제 (13)
    • 공부방 (9)
    • 그 외 (27)
      • TIL (24)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • was
  • thread
  • jsp
  • 백준 벌집
  • Til
  • Intellij
  • 백준 2292
  • 1193
  • try-catch
  • 자바 람다
  • servlet
  • 동적
  • 웹서버
  • Get
  • 스트림(Stream)
  • 정적
  • Java
  • Spring
  • 자바
  • Post
  • 웹 3.0
  • 백준

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
lala9663

Bump into

[JSP] EL 과 JSTL 정리
Spring

[JSP] EL 과 JSTL 정리

2022. 10. 26. 00:54

EL과 JSTL을 사용하는 이유는?

design tool에서는 jsp 코드 <% %>가 깨질 수 있다.
EL(Expression Language)과 JSTL(Jsp Standard Tag Library)는 JSP파일에 자바 형식의 코드를 사용하면 불편한 점을 해결하기 위해 사용하는 방법이다.

EL 이란?

  • JSP 2.0에서 새롭게 추가된 스크립트 언어
  • 기존의 Script tag의 표현식(<%= 정보 %>) tag에서 업그레이드된 버전 ( ${ 정보 } )
  • 주요 특징
    1) JSP 속성영역 (request, response, session, application) 저장된 속성 객체의 property를 출력한다
    2) 리터럴 데이터, 다양한 연산 결과 출력이 가능하다
    3) JSTL과 연동이 가능하다

[기존 방식 scriptlet]

<!--  mvo instance의 name 변수 출력 -->
<% MemberVO vo = (MemberVO) request.getAttribute("mvo"); %>
<%= vo.getName()%>

[EL 방식]

<!--  mvo instance의 name 변수 출력 -->
${requestScope.mvo.name} 

<!-- requestScope는 생략 가능 -->
${mvo.name}

equestScope는 생략이 가능하지만,
실행 속도가 느려지고, 구분이 헷갈릴 수 있기 때문에 기재해 주는 것이 권장된다.

문법

Attribute형식에서는 <%= cnt + 1 %>를 쓰지 않고 ${cnt + 1}로 쓰고 Parameter형식에서는 ${param.abc}으로 쓴다.
여기서 cnt는 자바에서는 변수 이름이고, EL 식에서는 Attribute의 이름으로 해석된다.. 값을 찾을때 Attribute는 작은 Scope에서 큰 Scope로 찾는다.(page → request → session → application)

[attribute란? : 메소드를 통해 저장되고 관리되는 데이터]
PageContext / Request에서 사용될 때
setAttribute("key", value) → 값을 넣는다.
getAttribute("key") → 값을 가져온다.
removeAttribue("key") → 값을 지운다.
session에서 사용될 때
set / get / remove 동일하고 추가로 ++invalidate( ) → 값을 전부 지운다.

EL 연산자

JSTL 이란?

JSP는 자신만의 태그를 추가할 수 있는 기능을 제공하고 있다. jsp:include나 jsp:usebean과 같은 커스텀 태그처럼 연산이나 조건문이나 반복문인 if문, for문, DB를 편하게 처리할 수 있는 것이 JSTL이다.

  • JSP Standard Tag Library의 약자로 JSP 표준 라이브러리이다.
    : JSP에서 자주 사용하는 기능(반복문과 조건문, 데이터 표현 등)을 미리 구현해 놓은 커스텀 태그 라이브러리 모음이다.
    : JSTL은 EL을 사용하여 표현한다.
  • Apache 재단에서 진행하는 custom tag library 프로젝트
    – 스크립트 릿으로 작성해야 할 로직을 태그로 대신 처리 가능
    – apache에서 다운받아 lib에 추가.
  • 환경설정
    1) https://mvnrepository.com/artifact/javax.servlet/jstl/1.2 에서 jstl lib(jstl-1.2.jar)를 다운받아
    웹 애플리케이션의 WEB-INF/lib 에 추가 (jstl-1.2.jar)
    2) custom tag는 지시자 태그 taglib를 통해 prefix 설정 필요
    : <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
  • 참고 사이트
    – http://java.sun.com/products/jsp/jstl
    – http://jakarta.apache.org/taglibs

태그 종류

  1. Core(prefix:c)
  • 가장 자주 사용되는 JSTL 태그
  • 일반적은 프로그래밍에서 사용되는 기능 제공
  • 프로그래밍에서 기본적으로 필요한 변수 선언, 제어문, 일반적인 로직 등의 기능 제공
  • 페이지 이동 기술 제공
  • Core 태그 사용하기 위해서 taglib 지시자 선언해야 함
    <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
  1. Formatting(prefix:fmt)
  • 국제화된 웹 사이트에 대한 날짜, 시간 및 숫자 텍스트를 포맷하고 표시하는 데 사용되는 기능 제공
  • 날자, 시간, 숫자, 텍스트 포맷, 국제화에 따른 언어 설정 기능 제공
  • Formatting 태그 사용하기 위해서 taglib 지시자 선언해야 함
    <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
  1. DataBase(prefix:sql)
  • DB의 데이터를 입력/ 수정/ 삭제/ 조회하는 기능을 제공
  • SQL 태그 사용하기 위해서 taglib 지시자 선언해야 함
    <%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql"%>
  1. XML(prefix:x)
  • XML 문서를 생성하고 조작하는 방법 제공
    URI → http://java.sun.com/jsp/jstl/xml
  1. Function(prefix:fn)
  • 일반적인 문자열을 가공하고 조작하기 위한 표준 함수 제공
  • Functions 사용하기 위해서 taglib 지시자 선언해야 함
    <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>

JSTL 선언

<%@ page language="java" contentType="text/html; charset=EUC-KR"    
pageEncoding="EUC-KR" isELIgnored="false"%>    
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"
><title>테스트</title>
</head>
<body> 
</body>
</html>

출처: https://hunit.tistory.com/203 [HunIT Blog:티스토리]

'Spring' 카테고리의 다른 글

[Spring] 스프링에서 자주 사용하는 Annotation  (0) 2022.11.24
[Spring] MVC 구조 이해  (0) 2022.11.01
[JSP] 기초 문법  (0) 2022.10.25
[Spring] DAO, DTO, VO, Entity 란?  (0) 2022.10.22
[JSP] Java Beans  (0) 2022.10.22
    'Spring' 카테고리의 다른 글
    • [Spring] 스프링에서 자주 사용하는 Annotation
    • [Spring] MVC 구조 이해
    • [JSP] 기초 문법
    • [Spring] DAO, DTO, VO, Entity 란?
    lala9663
    lala9663
    초보의 험난한 공부

    티스토리툴바