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