표현 언어(Expression Language)
1. EL 표현식
- EL: Express Language
- 화면을 출력할때 사용한다.
- 실무에서는 자바와 HTML을 분리해서 사용한다.
- HTML만으로는 자바에서 가지고 오는 데이터를 출력할 수 있는 기능이 없기 때문에, 출력할 수 있는 기능을 제공해주는 대표적인 프로그램이 EL이다.
- 제어문이 HTML에는 존재하지 않기 때문에 태그 형식으로 제어문을 제공하는 것을 JSTL이라고 한다.
- JSTL : Java Standard Tag Library
- EL + JSTL = 스프링에서 출력용으로 사용하는 프로그램
- 스프링은 데이터베이스와 기타 자바 기능을 관리하고 출력은 JSP가 담당한다. 이때 JSP에서 사용되는 것이 EL과 JSTL이다.
- EL을 사용하게 되면
<%= %>
이 사라지고${}
를 사용한다.- JSP 출력 태그 종류 :
<%= %>
,out.println
- JSP 출력 태그 종류 :
- 선언문(
<%@ %>
)은 사라지지 않는다. -
${자바의 일반변수}
(X) ,${requestScope.key명}
(O) <% request.getParameter() %>
대신${key명칭}
을 사용하는 것을 EL표현식이라고 한다.- request, session, application에 데이터 값을 담아줘야 한다.
- {}사이에는 key이름이 들어가야 한다.
- key를 입력하면 결과값을 출력한다.
- 변수명을 작성하지 않도록 유의한다.
- (request/session/application)Scope. 부분은 생략이 가능하다.
-
이때 key명칭이 중복된다면 [1. request ▶ 2. session ▶ 3. application] 순으로 값을 출력한다.
- 문자열 결합 :
${i+="문자열"}
${i}문자열
으로 보통 작성한다.
2. EL표현식의 종류
2.1 ${requestScope.id}
request.getAttribute("id")
와 같은 코딩- 한 개의 JSP에서 사용이 가능하다.
- 한 번 사용하고 버리는 경우에
request.setAttribute()
2.2 ${sesisonScope.id}
sesison.getAttribute("id")
와 같은 코딩- 프로젝트 내 모든 JSP에서 사용이 가능함
- 여러 개의 JSP에서 공통으로 사용되는 데이터가 있는 경우에
session.setAttribute()
2.3 ${applicationScope.id}
application.getAttribute("id")
와 같은 코딩
2.4 ${parm.id}
= request.getParameter("id")
- set/getParameter는 사용자가 요청한 데이터를 받을 때 사용한다.
- set/getAttribute는 사용자가 요청한 데이터 외의 다른 데이터를 받을 때 사용한다.
<h1>request에 있는 데이터 출력</h1>
이름(방식1):<%=request.getAttribute("name") %> <br>
이름(방식2):${requestScope.name} <br>
이름(방식3):${name} <br>
성별:${sex }<br>
<h1>session에 있는 데이터 출력</h1>
이름(방식2):${sessionScope.name1} <br>
이름(방식3):${name1} <br>
성별:${sex1 }<br>
<h1>application에 있는 데이터 출력</h1>
3. EL에서 사용하는 연산자
- 제어문(조건문) 사용 시에 필요하다.
3.1 산술연산자
3.1.1
+
- 순수하게 숫자만 계산한다 (문자열 결합의 기능은 없다!)
- 문자열이 있는 경우 자동으로 숫자형으로 변환한다(
Integer.parseInt()
) - null이 있는 경우 0으로 취급한다.
${10+10}=20 ${10+"10"}=20 ${null+10}=10 ${10+"10 "}=오류 ${10+="10"}=1010
3.1.2 -
${10-10}=0
${10-"10"}=0
${null-10}=-10
3.1.3 /
- 0으로 나눌 수 없다
- 정수/정수=실수
- div를 사용할 수 있다.
${5/2}=2.5 ${5 div 2}=2.5
3.1.4 %
- 나머지를 구한다
- mod라고 사용할 수 있다.
${5%2}=1 ${5 mod 2}=1
3.2 비교연산자
- 결과값이 true / false
- 조건문에 사용된다.
3.2.1 ==
- 문자열도 ==으로 비교한다.
- eq로 대체 사용할 수 있다.
3.2.2 !=
- 문자열도 !=으로 비교한다
- ne로 대체 사용할 수 있다.
3.2.3 <=
${7<=8}
${7 le 8}
3.2.4 >=
${7<=8}
${7 ge 8}
3.2.5 < , >
- < 는 lt이다.
-
는 gt이다.
${7<8} ${7 lt 8}
3.3 논리연산자
3.3.1 &&
- and로 대체사용 가능하다
3.3.2 ||
- or로 대체사용 가능하다
3.3.3 !
- not으로 대체사용 가능하다
3.4 삼항연산자
<c:set var="sex" value="1"/>
${sex==1?"남자":"여자" }
<!-- 결과값 : 남자 -->
3.5 문자열 결합
<c:set var="msg1" value="Hello"/>
<c:set var="msg2" value="JSP(JSTL,EL)"/>
${msg1+=msg2 }