처음부터 차근차근
EL 본문
EL
Expression Lanuage의 약자로, 저장 객체에서 값을 추출할 때 간편하게 추출할 수 있도록 하는 언어이다.
requsest 저장 객체에 'fruit'라는 이름으로 apple값을 가진 데이터가 저장되었다고 가정하면
원래는
<%=request.getAttribute("fruit"); %>
이렇게 썼어야 했는데 EL을 사용하면
${fruit}
라고 간단하게 쓰면 된다.
리스트 예시
// list 생성과 request 저장 객체에 데이터 저장
List<String> list = new ArrayList<String>();
list.add("a");
list.add("b");
request.setAttribute("my_list", list);
// 데이터 추출
<%=((List)request.getAttribute("my_list")).get(0); %>
// el방식으로 데이터 추출
${my_list[0]}
HashMap예시
// hashmap 생성과 request 저장 객체에 데이터 저장
HashMap<String, String> map = new HashMap<String, String>();
map.put("flower", "rose");
request.setAttribute("map", map);
// 데이터 추출
<%=((HashMap)request.getAttribute("map")).get("flower")%>
// el방식으로 데이터 추출
${map.flower}
서버 저장 객체의 우선순위
1. pageContext
2. request
3. session
4. application
예를들어 위의 4개에 모두 'test'라는 이름의 객체가 있다면 jsp 파일에서 ${test}를 쓰면 pageContext의 test 값이 나온다.
하지만 특정 저장 객체의 값을 가져오고 싶을 때가 있는데 이때는 Scope라고 하는 키워드(el 내장 객체)를 사용하면 된다.
${pageScope.test} : pageContext의 값 출력
${requestScope.test} : request의 값 출력
${sessionScope.test} : session의 값 출력
${applicationScope.test} : application의 값 출력
EL 내장 객체
${param.test} : == request.getParameter("test");
${paramValues.test} : 요청 파라메타의 값을 배열로 반환
${header.host} : 현재 host를 출력한다.
사용자가 요청할 때 불러온 헤더 정보를 출력(웹 브라우저 개발자 모드 네트워크 Request Header 정보)
${headerValues.test} : 요청 헤더명의 정보를 배열로 반환
${cookie.test.value} : 이름이 test인 cookie 값을 반환
${initParam.test} :
${pageContext.request.method} : == <%=pageContext.getRequest().getMethod%()>
결과로 get이나 post나옴
EL 연산자
[] : 배열 or 리스트 접근 연산자
. : 자바빈 or 맵 접근 연산자
! , not
empty : 객체의 값이 null이거나 비어있으면("") true 반환
* + -
/ , div
% , mod
< , lt
> , gt
<= , le
>= , ge
== , eq
!= , ne
&& , and
|| , or
( )?( ):( ) : 삼항연산자
주의 : ${5 / 2} 하면 소수 2.5 나옴
정수 / 정수 = 정수 아님!
EL 특징
EL은 저장소에 담겨있는 값만 출력할 수 있다.
즉, 저장 객체의 값만 출력할 수 있다는 뜻이다.
page 내에서 지역 변수를 사용하고 싶으면
pageContext.setAttribute("a", a);
${a}
이 방법이나 아님
이 방법 써야한다.
출처 : https://www.youtube.com/playlist?list=PLq8wAnVUcTFVOtENMsujSgtv2TOsMy8zd 변형 및 요약
'프로그래밍 > JSP' 카테고리의 다른 글
jstl (0) | 2022.01.10 |
---|---|
model1과 model2 방식 특징, 라이브러리의 위치, View 페이지 은닉 (0) | 2022.01.09 |
JSP (0) | 2022.01.06 |
get과 post 나눠서 처리하는 방법과 forward와 redirect의 차이 (0) | 2022.01.05 |
상태유지 방법 (0) | 2022.01.02 |