csmoon1010의 SW 블로그

JSP의 JSTL & EL - (부스트코스) 본문

웹/백엔드

JSP의 JSTL & EL - (부스트코스)

csmoon1010 2021. 4. 5. 23:51

1. EL(Expression Language, 표현 언어)

값을 표현하는 데 사용되는 스크립트 언어 (JSP의 기본 문법 보완 - Java 코드의 간단화 for 협업)

 

1) 기능

  • JSP의 스코프(scope)에 맞는 속성 사용 - Page, Request, Session, Application
  • 집합 객체에 대한 접근 방법 제공
  • 수치 연산, 관계 연산, 논리 연산자 제공
  • 자바 클래스 메소드 호출 기능 제공
  • 표현언어만의 기본 객체 제공

 

 

2) 기본 객체

 

 

 

3) 표현 방법

 

(1) 기본 표현 

  •  ${expr} 
  • 스크립트 요소(스크립트릿, 표현식, 선언부)를 제외한 나머지 부분에서 사용 가능
  • ex. <b>${sessionScope.member.id}</b>님 환영합니다.

 

 

(2) 객체 접근

  •  ${<표현1>.<표현2>} 
  • 표현 1이나 표현 2가 null 인 경우 : null을 반환
  • 표현1이 Map일 경우 : 표현2를 key로한 값을 반환
  • 표현1이 List나 배열인 경우
    • 표현2가 정수 : 해당 정수 번째 index에 해당하는 값을 반환
    • 표현2가 정수X : 오류 발생
  • 표현1이 객체인 경우 : 표현2에 해당하는 getter메소드를 호출한 결과를 반환

 

4) 연산자

 

(1) 수치 연산자

  • + : 덧셈
  • - : 뺄셈
  • * : 곱셈
  • / 또는 div : 나눗셈
  • % 또는 mod : 나머지
  • 숫자가 아닌 객체와 수치 연산자를 사용할 경우 객체를 숫자 값으로 변환 후 연산자를 수행 : ${"10"+1} → ${10+1}
  • 숫자로 변환할 수 없는 객체와 수치 연산자를 함께 사용하면 에러를 발생 : ${"열"+1} → 에러
  • 수치 연산자에서 사용되는 객체가 null이면 0으로 처리 : ${null + 1} → ${0+1}

 

(2) 비교 연산자

  • == 또는 eq
  • != 또는 ne
  • < 또는 lt
  • > 또는 gt
  • <= 또는 le
  • >= 또는 ge
  • 문자열 비교: ${str == '값'}  -- str.compareTo("값") == 0 과 동일

 

(3) empty 연산자

  •  empty <값> 
  • <값>이 null인 경우 : true 반환
  • <값>이 ""인 경우 : true 반환
  • <값>이 길이가 0인 배열인 경우 : true 반환
  • <값>이 빈 Map인 경우 : true 반환
  • <값>이 빈 Collection인 경우 : true 반환
  • 그 외 : false 반환

 

(4) 비교 선택 연산자

  •  <수식> ? <값1> : <값2> 
  • <수식>의 결과값이 true인 경우 : <값1> 반환
  • <수식>의 결과값이 false인 경우 : <값2> 반환

 

(5) 연산자 우선순위

 

① [] .

② ()

③ 부정, null 처리 : - not ! empty

④ 수치 연산 : * / div % mod

⑤ 수치 연산 : + -

⑥ 비교 연산 : < > <= >= lt gt le ge

⑦ 비교 연산 : == != eq ne

⑧ 논리 연산 : && and

⑨ 논리 연산 : || or

⑩ 비교 선택 여산 : ? :

 

 

 

5) ESTL 비활성화

<%@ page isELIgnored = "true" %>

- default는 "false"값

 

 

 

2. JSTL(JSP Standard Tag Library)

JSP 페이지에서 조건문 처리, 반복문 처리 등(로직)을 html tag 형태로 작성할 수 있게 도와주는 라이브러리

- 유지보수의 용이함 : 프론트 개발자의 편의

- JSP의 목적이 "결과를 출력만한다"이므로 적절한 선택

 

1) 사용 방법

http://tomcat.apache.org/download-taglibs.cgi

위 사이트에서 3가지 jar 파일 다운로드 후 복사

 

 

2) 태그 종류

(1) 변수 지원 - set, remove

  • 설정 : <c:set var="EL변수명" scope="변수값 저장 영역(page,request,session,application) value="변수값"/>
    • <c:set var="varName" scope="session" value="someValue"/>
    • <c:set var="varName" scope="session">someValue</c:set>
  • 제거 : <c:set var="EL변수명" scope="변수값 저장 영역(page,request,session,application) value="변수값"/>
    • <c:remove var="varName" scope="request"/>
  • 프로퍼티 설정 : <c:set target="${변수객체명}" property="프로퍼티 이름" value="새로 지정할 값"/>
    • <c:set target="${some}" property="propertyName" value="anyValue"/>
    • some객체가 자바빈 : some.setPropertyName(anyvalue) ____ property의 첫 문자가 대문자로 바꿔 setter 형성하는 규칙有
    • some객체가 맵(map) : some.put(propertyName, anyValue);

 

(2) 흐름제어 태그 - if, choose, forEach, import, redirect

  • if : <c:if test="조건">
    • test의 조건이 true이면 처리. else는 제공하지 않음
    • <c:if test="${param.name=='bk'}"> 수행문 </c:if>
    • "조건"은 EL표기법을 활용해 나타냄 __ ${expr}
  • choose : <c:choose> <c:when test="조건">...</c:when>...<c:otherwhise>...</c:otherwise> </c:choose>
    • 여러 개의 조건 처리
    • "조건"은 EL표기법을 활용
<c:choose>
	<c:when test="${score >= 90 }">
		A학점입니다.
	</c:when>
	<c:when test="${score >= 80 }">
		B학점입니다.
	</c:when>
	<c:when test="${score >= 70 }">
		C학점입니다.
	</c:when>
	<c:otherwise>
		D학점입니다.
	</c:otherwise>
</c:choose>

 

  • forEach : <c:forEach var="변수" items="아이템" [begin="시작번호] [end="끝번호"]> "수행문" </c:forEach>
    • "items" : 배열 및 Collection에 저장된 요소를 차례대로 처리
    • "수행문"은 EL표기법 ${변수}를 활용
    • begin, end는 생략 가능 (처음부터 끝까지)
  • import : <c:import url="URL" charEncoding="캐릭터인코딩" var="변수명" scope="범위"> <c:param name="파라미터이름" value="파라미터값"/> </c:import>
    • 특정 URL에 연결하여 결과를 지정한 변수에 저장
    • url : 결과를 읽어올 URL
    • charEncoding : 읽어온 결과의 인코딩 형식
    • scope : 변수 저장 영역
    • <c:param> : URL에 연결할 때 전송할 파라미터 입력
  • redirect : <c:redirect url="URL"> <c:param name="파라미터이름" value="파라미터값"/> </c:redirect>
    • 특정 URL로 리다이렉트 = response.sendRedirect()
    • <c:param> : 리다이렉트한 페이지에 전달할 파라미터
<c:redirect url="/ifTag.jsp">
    <c:param name="name" value="bk"/>
</c:redirect>

 

 

(3) 기타태그 - out

  • out : <c:out value="value" escapeXml="{true|false}" default="defaultValue" />
    • JspWriter에 데이터를 출력함
    • value : 출력할 값. 대부분의 경우 String 활용. 만약 java.io.Reader의 한 종류라면 Reader에서 데이터를 읽어옴
    • escapeXml : true인 경우 문자 변환 (태그로 인식X)
      < (&lt;)  > (&gt;)  & (&amp;)  ' (&#039;)  " (&#034;)
    • default : value 속성에서 지정한 값이 존재하지 않는 경우
  • ++ 커스텀 태그

 

' > 백엔드' 카테고리의 다른 글

JDBC - (부스트코스)  (0) 2021.04.08
Maven - (부스트코스)  (0) 2021.04.08
JSP의 Scope - (부스트코스)  (0) 2021.03.30
JSP의 redirect & forward - (부스트코스)  (0) 2021.03.23
JSP의 기초 - (부스트코스)  (0) 2021.03.13
Comments