스프링 (EL, JSTL)

테디·2022년 9월 14일
0

EL

Expression Language
JSP 스크립트 태그를 제거하기 위해 나온 개념.
ex) : ${parameter.key(name)}
목적 : 저장 객체의 출력을 단순화

EL의 특징

  • page, request, session, application 등의 객체에 접근해 출력을 처리
  • 해당값이 null이거나 공백이라해도 에러는 발생하지 않음
  • EL은 JSP에서는 기본으로 지원하고 JSTL은 따로 호출해야한다.

EL의 예시들

<%= request.getParameter("name")%> -> ${param.name}
<%= userDTO user = (UserDTO)request.getAttribute("user")%>
-> ${user}

EL의 내장객체

${pageScope}
${requestScope}
${sessionScope}
${applicationScope}
${param}
${cookie}
${header}
${pageContext}
${initParam}

JSTL

Java Standard Tag Library
view(jsp)에서 스트립팅 없이 조건, 반복등을 처리하기 위함.
jsp에서 자주 사용하는 기능을 구현해 놓은 tag library 모음
JSTL 또한 EL과 연계하여 사용이 가능
JSTL은 JSP 내장 객체에 쉽게 접근할수 있음

JSTL 대표 라이브러리

  • core(c) : 변수선언, 조건, 제어, 반복등의 기능을 제공
  • formatting(fmt) : 숫자, 날짜 시간을 포메팅, 국제화, 다국어 지원기능 제공.
  • function(fn) : 문자열을 처리하는 함수를 제공.
  • database(sql) : DB 데이터 입력 수정 삭제 조회
  • xml(x) : xml문서 처리시 사용

JSTL 코어 태그

<c:set> : 변수에 값을 할당
 - set으로 객체 프로퍼티값을 설정할때는 setter의 리턴타입이 반드시 void 
<c:out> : 값 출력(무조건 문자열 출력)
<c:if> : 일반적 if(else if, else x)
 - jstl 연산자 표현
   +, * 
   jstl  연산부호 
   div :    /
   or :     ||
 and : \&\&
  eq  :  ==
  ne  :  !=  
  ge  :   <
   lt   :   >
  ge  :  <=
   le  :   >=
   
   
   
<c:forEach>: 반복문.
 - <c:forEach var ="변수명" items="목록 데이터" begin="시작 인덱스 end ="종료인덱스">
     컨텐츠
     items에 들어올수 있는 데이터 타입
     - 배열
     - 컬렉션
     - iterator
     - Map
     - 콤마로 나열된 문자열들(JSON)
<c:choose> : swich와 동일
<c:when> : else if / case문 
<c:otherwise> default
<c:url>: url 생성 
<c:redirect> : redirect 처리 


Core	<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
XML	<%@ taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml" %>
I18N	<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
Database	<%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>
Functions	<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>

prefix는 꼭 c, fmt 등으로 지정해야하는 것은 아니지만 JSTL에서 권장하는 접두사.

<c:if test="조건식" var ="변수명" scope = "page|request|session|application">
</c:if>  

c:out, el

c:out : 어떤값을 넣어도 문자열을 출력해야할때
태그 규칙을 지키기 위해

js와 jstl

js와 jstl중 먼저 동작하는것은?

jstl

  • JSTL에서는 JS의 값을 받을수 없다
  • JS에서는 JSTL의 값을 받을수 있다

0개의 댓글