2013. 8. 16. 09:43

EL, Expression Language


목차

■ 개요
■ 작성규칙
■ 연산자
■ 내장객체


■ 개요

 EL은 JSTL 1.0 스펙에서 소개되었던 것으로 JSP 2.0부터 공식적으로 포함되었으며,  JSP 페이지에 사용되는 자바코드를 대신해서 액션태그 엘리먼트

(예:<jsp:setProperty>)의 속성에 값을 지정하는  역할을 한다. 


${object}


request 객체에 전달한 vo라는 자바빈즈에 getEmail() 메소드가 존재할 때 JSP의 스크립릿으로


<%Test vo = (Test)request.getAttribute("vo");%>

<%= vo.getEmail()%>


라 작성했다면 EL은 다음과 같다 :


${vo.address};


졸라 편하다.



■ 작성규칙

EL은 숫자, 문자열, boolean 값과 null 같은 상수 값(리터럴) 들도 포함할 수 있다.⋅

EL은 $ 와 표현식 그리고 브레이스 { }를 사용해서 표현한다.


- 표현 언어(EL)는 항상 『${』 로 시작해서 『}』로 끝난다.

- JSP 스크립트 내부에서 쓸 수 없다. 즉, <%  %>, <%!  %>, <%=  %> 안에는 사용할 수 없다.

- 표현식 안에 연산식도 작성이 가능 하다. 

   ${num  +  1}

- 프로퍼티 접근 연산자 닷(dot(.)) 은 표현 언어(EL)에게 자바 빈이나 컬렉션 객체에서 다음에 오는 이름과 같은 프로퍼티를 찾게 한다.

   ${article['num']  +  1}  or  ${article["num"]  +  1}

- 브라켓 연산자(bracket([ ]) operator) 를 사용해도 된다. 닷(dot(.)) 과 같다. 즉, 브라켓 연산자의 배열 형태로 객체의 변수에 접근한다.



■ 연산자 

.

 빈의 프로퍼티나  맵(Map)의  엔트리 접근 

[]

 배열이나  리스트(List)  엘리먼트 접근 

()

 괄호. 표현식의  연산 순서를  바꿔서 연산하게 할  때

a ? b : c

 EL의 삼항연산자. a가 true면 b, false면 c 

+    -

*   /

%   !

==   !=

<   >

<=   >=

&&   ||

 자바와 같다.

empty

 빈 변수값 체크. null 혹은 빈문자열, 빈배열, 엔트리가 없는 맵이나 컬렉션이면 true 

func(args)

 함수 호출 



■ EL에서 제공하는 내장객체 

● pageScope, requestScope, sessionScope, applicationScope
 : 각 영역 객체들에 대한 컬렉션
${scope.데이터_명}
예를 들어 session 객체로 전달받은 email에 접근할 때, 구문이 다음과 같다면 :
session.setAttribute("email", "noname@site.com"); 

전달받은 데이터에 접근하려면 :
${sessionScope.email} 라고 작성한다.

scope를 명시하지 않으면 requestScope에서 찾는다.

● param
 : 모든 request  파라미터들을  문자열로 가진 컬렉션(request.getParameter() 메소드) 
${param.데이터_명} 
혹은 ${param["데이터_명"]}
param은 html의 form을 통해 입력된 데이터를 가져올 때 사용한다.  

<form action="test2.jsp" method="post">
<input type="text" name="num"><br/>
<input type="submit" value="보내기">

위 폼에서 넘어온 num을 찾으려면 :
${param.num}

● paramValues 
 : 모든 request 파라미터들을 파라미터당 문자열 배열로 가진 컬렉션 
${paramValues.데이터_명[0]},  ${paramValues["데이터_명"][0]})
form을 이용한 입력 중 checkbox, select 등 같은 name 애트리뷰트를 가진 데이터를 가져올 때는 paramValues를 사용한다. 
사용 형식은 param과 비슷하나 여러 개의 입력 값이 있으므로 배열 형태가 된다

<form action="test2.jsp" method="post">
<input type="checkbox" value="first_value" name="ck"/>
<input type="checkbox" value="first_value" name="ck"/>
<input type="submit" value="보내기">

위 폼에서 넘어온 첫번째 값을 찾으려면 :
${paramValues.ck[0]}

배열 순서는 form 태그에 작성 된 순서를 따른다.

● cookie
 : cookie는 웹 브라우저가 웹 서버로 보낸 쿠키를 가져올 때 사용한다.
${cookie.쿠키_명}  
혹은 ${cookie["쿠키_명"]}
주의 할 것은 반환되는 타입이 쿠키의 값이 아니라 쿠키 객체라는 점이다.  
따라서 쿠키의 값을 출력하기 위해서는 :

${cookie.쿠키_명.value  }  
혹은  ${cookie["쿠키_명"]["value"]} 
라고 해주어야 한다. 
쿠키의 값 대신 쿠키의 다른 정보를 얻기 위해 쿠키명 뒤에  .domain  .path  .maxAge 등을 사용할 수도 있다.

● initParam
  : 모든 어플리케이션의 초기화 파라미터의 이름의 컬렉션
 ${initParam.파라미터_명} 
혹은 ${initParam["파라미터_명"]}
initParam은 웹 애플리케이션의 초기화 파라미터를 가져오는데 사용한다. 
이 값을 얻기 위해서는 해당 이름의 초기화 파라미터가 web.xml 에 등록되어 있어야 한다.

● pageContext
  : 현재 페이지를 위한  javax.servlet.jsp.PageContext.  JSP 페이지의 환경 정보
${pageContext.메서드_명}
혹은 ${pageContext.메서드_명}
⋅pageContext는 java.servlet.jsp.PageContext 클래스 타입의 객체로, 이 클래스에 속하는 get 메소드들의 호출에 사용된다. 
그 중에서도 파라미터가 사용되지 않는 메소드들만 실행할 수 있다. 사용 형식은  pageContext 뒤에 마침표나 대괄호를 붙혀 사용하나, 메소드 명에서 get을 버리고 난 후, 가장 첫 문자를 소문자로 고쳐 사용한다.

PageContext 클래스의  getRequest 메소드를 사용한다고 하면 :

${pageContext.request} 
혹은 ${pageContext["request"]} 
의 형식이 된다. 각 메소드의 리턴 값은 각각의 객체가 돌아오므로 필요한 필드를 불러와 출력할 수 있다.

⋅request.getContextPath() 가져오기  :  ${pageContext.request.contextPath}
⋅URI : ${pageContext.request.requestURI}

● header, headerValues
 : HTTP 요청 헤더들을 문자열이나 문자열배열로 가진 컬렉션 
 ${header["헤더_명"]}
자바의 식별자 명명규칙을 따르지 않는 헤더는 반드시 위의 형식으로 가져와야 한다.
HTTP 요청 메시지 안에 같은 이름의  HTTP 헤더가 둘 이상 있는 경우는  headerValues 내장 객체를 사용한다. 사용 형식은 paramValues 의 형식과 같다.


'JSP > Jsp 내장객체' 카테고리의 다른 글

JSP 내장객체의 스코프  (0) 2013.08.16
HTML 문서에서 인자로 사용  (0) 2013.08.16
Session  (0) 2013.07.29
Request  (0) 2013.07.29
JSP 개요  (0) 2013.07.29
Posted by 1+1은?