ILoveCoffee, ILoveJava/JSP

EL Expression Language

jeeyong 2010. 7. 28. 12:54
2011-12-14 : 추가 : 빈(bean) 임의의 method 호출
===============================================================================================

EL Expression Language 은 

 &{memberName} 

 이렇게 써놓으면 

 <%=pageContext.getAttribute("memberName") %> 
 <%=request.getAttribute("memberName") %> 
 <%=session.getAttribute("memberName") %> 
 <%=application.getAttribute("memberName") %> 

 모든 부분의 속성을 검색해서 찾아냅니다. 
 페이지->요청->세션->컨텍스트 순서대로요 

 그리고 

 <%=person.getName()%> 

 이렇게 빈 프로퍼티를 읽어오는 스크립틀릿 표현식을 

 ${person.name} 
 바로 이렇게 읽어올 수 있습니다. 
 자바 빈 set/get 으로 된 프로퍼티 말이죠.. ^^ 

빈의 임의의 메소드에 접근 방법은
만약 Person 이라는 빈에 아래 메소드가
public boolean hasCar(String car){
return getCarCollection().hasCar(car);
}

있다고 했을 경우
 
${person.hasCar("Ferrari")}

와 같이 EL표현식으로 접근할수있다. 만약 getCarCollection() 에 "Ferrari" 가 있다면 true, 없다면 false 로 boolean 객체를 리턴한다.

 책에서 본내용 생각나는데로 적어두었는데.. 
 도움이 될지는..  

  
 참 좋은것은 

 모든부분의 속성을 쉽게 접근할 수 있다는 겁니다. 
 ${param.id} 파라미터도 읽어올 수 있습니다. 
 ${paramValues.id[0]} 
 파라미터 하나에 여러값이 들어있을때는 저렇게 배열식으로도 
 접근할 수 있습니다... 

 암튼 좋습니다... ^^; 

 잘 머리쓰면 서블릿+JSP 에서  

 <% %> 스크립틀릿은 거의 없앨 수 있습니다. 

 디자이너 , 개발자의 분리를 더 확실히 하기 위함이라고 하네요.. 


 저도 잘 몰라서 더 설명하기는 힘들고 ^^; 

 jsp 스크립틀릿에서도 session, request, out, pageContext 와 같은  
 내장객체가 있어서 쉽게 사용하잖아요 
  
 EL 에도 있습니다. 

 속성부분( 검색기능이 있지만 직접 접근하기 위해서..) 
 pageScope 
 requestScope 
 sessionScope 
 applicationScope 

 파라메터부분 
 param 
 paramValues 

 헤더부분 
 header 
 headerValues 

 쿠키부분 
 cooke 

 컨텍스트 파라미터 부분 
 initParam 

 페이지 컨텍스트 부분 
 pageContext 


 pageContext 만빼고 모두 Map 객체입니다.. 

 ${left.right} 
  
 left - 내장객체, 맵 
 right - 속성이름, 맵키 


 ---------- 
 EL 을 통해 속성,파라미터등 값과 객체를 모두 받아올 수 있습니다. 
 하지만 스크립틀릿의  
 <% if(...... %> 
 조건문은 대체하지 못해요. 

 JSTL 태그를 사용하면 조건문, 반복문 사용할 수 있습니다. 

 그럼 스크립틀릿은 사라지겠죠... 

 출처는 헤드퍼스트 서블릿&jsp