본문 바로가기
PROGRAM/JAVA / JSP

EL에 대해서 알아봅시당!

by ojava 2011. 3. 21.
반응형


EL
은 무엇일까영???? EL은 Expression Language의약자로 JSP 객체의 출력을 단순화하는 용도로 사용됩니다.
이는 JSP에서 지원하는 스크립트릿 (<%  %>) 보다 사용법이 간단합니다.(물론 사용법을 익혔을 때 얘기지영!)

EL의 특징에 대해서 간략하게 알아봅시당.  

  • JSP 2.0에서 새롭게 추가된 스크립트 언어! JSTL 1.1버전에 포함된 기능을 제공!

  • EL JSP의 기본적인 4가지 영역의 속성의 내부 객체에 접근하여 출력을 처리하며, 기본적으로 자바의 문법이 적용됩니다.

  • 데이터 뿐만 아니라 다양한 연산결과의 출력이 가능합니당.

  • EL을 사용하겠다는 설정은 기본적으로 설정이 되어있지만, 만약 인식이 안되면 페이지 상단에
    <%@ pageisELIgnored="false"%>
    라고 선언하면 됩니다. 또한 EL을 사용하지 않는 방법 역시 존재합니당!

    ex) <%@ pageisELIgnored="false" contentType = "text/html;charset=euc-kr" %>

  • 만약 null 값인 경우"null"이라고 값을 출력하지 않습니다.



1.  EL 사용에 필요한 연산자 알아보기!

 
-   자바의 문법을 따르므로 자바 문법과 비슷한 내용이 많습니다.

 연  산  자 설    명 
 . (온점)  빈의 프로퍼티나 맵(Map)의 엔트리 접근
 [ ]  배열이나 리스트(List) 엘리먼트 접근 
 ( )  괄호표현식의 연산 순서를 바꿔서 연산하게 할 때  
 a ? b : c  조건(a) true일 때 리턴 값 b ,false일 때 리턴 값 c 
 + , -, *   사칙연산 중 더하기, 빼기, 곱하기 
 / 또는 div  사칙연산 중 나누기
또는 Mod   나머지 값을 구함
 ==   같다 (equal)
 !=  같지 않다
 < 또는 lt  보다 작다 
 > 또는 gt  보다 크다 
 <= 또는 le  작거나 같다
 >= 또는 ge  크거나 같다
 && 또는 and  논리연산자 AND. 두쪽 모두가 true여야 true
 || 또는 or  논리연산자 OR. 한쪽만 true여도 true
 ! 또는 not  값을 반대로 만듬. true를 false로, false를 true로   
 empty   빈 변수 값 체크, null, 빈 문자열, 빈 배열 등인지를 확인한다.
ex) ${empty param.name} name이 빈 내용이라면 
 func(매개변수)  함수를 호출한다.
 func에는 함수 이름이 들어가고, 매개변수라고 써있는 부분에는
 매개변수가 들어갈 수도 있고 아닐 수도 있으며, 때에 따라 쉼표(,)를
 통해 구분 되는 매개변수 여러개가 들어갈 수도 있다. 


 

2. JSP 내부 객체에 접근하기 위해 EL에서 제공하는 객체

EL 11개의 기본객체를 제공하며 별다른 추가 코드 없이 사용할  있다. 

 pageContext   PageContext 객체 접근시 사용 
 pageScope   page 영역에 포함된 객체 접근시 사용  
 requestScope   request 영역에 포함된 객체 접근시 사용  
 sessionScope       session 영역에 포함된 객체 접근시 사용  
 applicationScope   application 영역에 포함된객체 접근시 사용  
 param              HTTP의 파라미터들로 요청 파라미터(form data) 읽어   사용 
 paramValues        하나의 파라미터의 값들. 요청 파라미터(form data) 읽어   
 
사용같은 이름으로 여러 개가 넘어  경우 사용.
 
 header             요청정보의 Header 값을 읽어올  사용. 
 headerValues       요청정보의 Header 값을 읽어올  사용같은 이름으로 여러 개의 
 
값이 저장되었을 경우 사용.
 
 cookie             client에서 넘어온 쿠키의 값을 조회시 사용 
 initParam          name-value 저장된 초기 파라미터값을 읽어올  사용.  ServletContext 부터 읽어 온다.  
 

* pageContext 제외하고 모두 Map형식입니다.

(이 내용은 JSP에 대한이해가 있어야 쉽게 이해하실 수 있지영.)

 

 

3.  EL을 사용해 봅시당.

- 기존의 스크립트릿과의 사용법을 비교해 봅시당.

   request name 속성(스크립틀릿 방식):<%=request.getAttribute("name")%>

   request name 속성(EL): ${requestScope.name}

이런식으로 사용할 수 있습니다${expr} 

${   } 기호는 기본적으로request 자원에 접근합니다.

 

1) 표현방법
 

${expression} - ${}
에서 {} 사이에 표현 하고자 하는 내용을 넣어봅시당.

 ${value1.value2.[value3…]}
 
${value1[“value2”]} ${value1[value2[“value3”]]

value1 EL 내장객체나 속성명을 적어줍니다
JSP
script(scriptlet, 표현식, 선언부)요소를 제외한 나머지 부분에서 사용된다.

)
<jsp:include page="/abc/${dir.pageURL}"/>
${sessionScope.userInfo[“id”]}
환영합니다.
입력하신 값은 ${requestScope.answer} 입니다.

2) 값 출력 메커니즘
 

EL
표현식은 객체에 접근할때  ‘.’ 또는 [] 이용합니다. 자세한 설명은 위의 표를 참조하세영.

) ${mvo.name} ${mvo["name"]} 동일한 값을 받아냅니다.


3)  
4개의 저장영역에서 가져오기

EL
4개의 저장영역(page, request, session, application scope)에서 값을 쉽게 가져와 출력 있게 합니다.
접근 할 수 있는 11가지 방법은 위에서 자세하게 소개하였으므로 그것을 참고하세요.

 
${cust.name} 4영역의 scope에서 cust 저장된 객체를 참조하여 getName() 호출한 값을 출력.
 
동일한 이름의 객체가 여러영역에 있는 경우 내장객체를 사용하여 확실하게 선언하면 값을 불러올 수 있습니다.
 
 이렇게 
${requestScope.cust.name} 를 통해 명시적으로 접근합니다.


4)  Collection
에서 가져오기
 

Collection에서 값을 불러올 때는 []
연산자 사용합니다.

예) 

String [] fruit = {"grape", "berry", "orange"};
Map mp = new HashMap();
mp.put("name1", "value1");
session.setAttribute("array", fruit);
session.setAttribute("map", mp);

----------- 불러와 볼까요?
 

${array[1]}, ${array[2]}, ${array[3]};
${map["name1"]}



4.  산술 연산


- EL은 숫자연산도 가능합니다. 오예!


ex) ${"10"+1} – "10"
숫자로 변환 계산
 

      ${"
"+1} – 오류 발생

      ${null+1} – null
0으로 처리된다.


비교연산자와 논리연산자는 위에 정리해두었으니 참고하쎄영!


5.  EL 비활성화
 

- EL을 사용하고 싶지 않을 때가 있겠지영? 그럴 때 설정하시는 방법이 있습니당.
 

 1) web.xml <el-ignored> true 지정

<jsp-config>
      <jsp-property-group>
         <url-pattern>*.jsp</>
         <el-ignored>true</>
      </>
</>


2) JSP 페이지의 page 지시자 태그에서 isELIgnored="true" 주어 비활성화 시킨다.

(상단에 EL 활성화하는 법을 참조하시면 더 쉬울 겁니당) 



흑.. 드디어 EL에 대해서 간단하게 짚고 가네요. 사실 JSP를 쓰면서 스크립트릿을 더 많이 썼는데, 어느 순간 EL이 더 편하고
값에 접근하는 방식이 JSP 지원 스크립트릿보다 훨씬 낫다는 것을 느꼈습니다. 사용은 역시 해본 사람만이 장점과 단점을 잘 알겠죠.

스크립트릿의 사용이 많이 줄어들게 된 이유로는, JSP로 페이지의 구조를 잡는 것과 JAVA단의 Logic 구성을 완전히 분리시키면서부터
스크립트릿은 거의 사용하지 않게 되었네요. 이전에 과제로 프로젝트를 진행했을 때는 정말 많이~ 많이~
HTML 구조와 Logic. 그리고 SQL을 불러오기 위한 JDBC까지 섞여있는 모습을 볼 수 있었는데.. 음.. 정말 지금이라도 이렇게
분리해서 사용할 수 있다는게 다행이네영.


다음 포스팅은 어떤 글로 찾아와야 하는지 고민해봅시당. 빨리 봄이 왔으면 좋겠네용.


 
2011.03 오혜영 작성!

반응형

'PROGRAM > JAVA / JSP' 카테고리의 다른 글

java.net.SocketException : Broken pipe  (0) 2015.09.16
final과 static의 다양한 사용 방법  (2) 2012.04.13
equals와 ==의 차이점  (9) 2011.02.28
eclipse에서 Javadoc을 만들어봅시당.  (1) 2011.02.18
CKEditor 사용법  (2) 2011.01.25