[JSP]EL 태그 사용하기 (Attribute, Parameter값 편하게 사용하기)

JSP

 

EL (Expression Language)

JSP에서 EL을 통해 Attribute, Parameter에 실려있는 값들을 편리하게 사용할 수 있다.
Attribute는 page,request,session,application의 스코프로 범위별로 값을 저장할 수 있다.

 

Attribute EL

setAttribute("key", "value")의 형태로 값을 설정 했을 때
jsp페이지에서 ${key} 를 작성하면 웹 페이지에서 value가 출력된다. 

단 4가지의 스코프에 동일한 이름으로 attribute가 존재한다면 앞에 각 영역의 이름을 붙이고 사용해야 한다
(안 붙이면 가장 작은 영역에 있는 scope의 attribute가 선택된다)

각각의 scope에 따른 key값 출력 예시
page - ${key}
request - ${requestScope.key}
session - ${sessionScope.key}
application - ${applicationScope.key}

<%
	pageContext.setAttribute("most","티모");
	request.setAttribute("most","가렌");
	session.setAttribute("most","다리우스");
	application.setAttribute("most","야스오");
%>

그냥 출력 (가장 좁은 범위의): ${most }   <!--티모-->
request 출력 : ${requestScope.most }  <!--가렌-->
session 출력 : ${sessionScope.most }  <!--다리우스-->
application 출력 : ${applicationScope.most }  <!--야스오-->

위와 같이 most라는 키에 각 스코프 별로 다른 값이 존재한다고 했을 때 원하는 영역의 값을 뽑기 위해서는 앞에 원하는 scope를 붙여주어야 한다.

 


Parameter EL

Parameter로 받은 값을 EL태그로 출력할 때는 ${param.name}과 같은 형식으로 출력한다.

 

출력 예제

<input type="text" name="name">
<input type="text" name="age">
<input type="text" name="hobby">

위와 같이 파라미터로 넘어온 값들을 꺼낼 때 param.key로 꺼낼 수 있다.

${param.name}, ${param.age}, ${param.hobby}

 

만약 여러 가지의 값을 같은 name으로 받는다면 (checkbox 등) paramValues를 이용하여 배열의 인덱스에 접근하는 방식으로 사용할 수 있다.

${paramValues.hobby[0]}, ${paramValues.hobby[1]}, ${paramValues.hobby[2]}

 


EL의 리터럴 종류와 예시

boolean ${true}, ${false}
정수 ${123}, ${123+456}, ${5*30}
실수 ${123.123 * 3}
문자열(따옴표써야함) ${'hello,world'}  




EL의 산술 연산자

표현식 결과
${11 + 7} 18
${11 - 7} 4
${11 * 7} 77
${11 / 7} 1
${11 % 7} 4
${11 mod 7} 4

 

 

EL의 논리 연산자

표현식 결과
${true and false} false
 ${true && false} false
 ${true or false} true
 ${true || false} true
${not true} false
${!true} false

 

 

EL의 empty연산자

값이 null이거나 "" 일 때 (문자열, 배열, 객체 등 크기가 0 일 때) true를 반환한다. 

<%
pageContext.setAttribute("value1", null);
pageContext.setAttribute("value2", "");
pageContext.setAttribute("value3", "티모");
%>
${empty value1 }, ${empty value2 }, ${empty value3} 
<!-- true, 			true, 			false -->

값이 없는 데이터의 비교 연산이 자바에서 처리하는 것보다 비교적 편하다.

 

댓글

Designed by JB FACTORY