ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [헤드퍼스트 Servlet&Jsp] 8-2. EL로 파라미터 불러오기
    개발입문/Servlet&JSP 2017. 2. 26. 15:38

    javaBean 은 jsp 에서 객체를 다루는 방법입니다.

    객체의 상태값에 따라서 웹페이지를 동적으로 출력하게끔 도와줍니다.

    (물론 Servlet에서 객체의 상태값에 따라 액션 자체도 바뀌게 됩니다.) 


    EL 은 객체의 멤버변수를 직관적으로 불러올 수 있게 합니다. 직관적으로.

    물론 함수도 가능합니다. (EL 함수를 통해)


    자바를 안다고 방심하면 안됩니다.

    자바와 비슷하게 생겼는데 자바에서는 되는데, EL 에서는 안되는 경우도 있다고 합니다. +_+ 



    EL

    Expression Language


    EL 표현식은 항상 중괄호 {} 로 묶고,

    제일 앞에 달러 기호 $ 를 붙입니다.


    ${person.name}


    표현식의 첫번째 변수는

    내장 객체 or 속성입니다.



    . 연산자


    ${person.name}


    person

    EL 내장객체 or 속성  / Map 또는 JavaBean


    name
    Map 의 Key or Bean 의 property

    자바 명명규칙을 반드시 따라야 합니다.
    즉, ${musicList.1} 는 안됩니다.



    [] 연산자

    (배열 연산자 아님)

    ${musicList["Gravity"]}

    ${musicList[1]} or ${musicList["1"]}


    musicList

    EL 내장객체 or 속성  / Map 또는 JavaBean

    그리고 리스트나 배열


    Gravity / 1 / "1"
    Map 의 Key or Bean 의 property
    배열과 리스트인 경우 인덱스
    (문자열도 숫자로 자동 변환)

    " "가 없다면 (!)
    [Genre] Genre 라는 속성으로 해석, 즉 참조값 지칭
    ["Ambient"] HashMap 의 Key

    [] 안 내장표현식 가능
    Music is ${musicMap[MusicType[0]]}
    Music is ${musicMap["Ambient"]}
    Music is zero7



    EL 내장 객체


    어떤 정보에 대한 하위 값을 가져올 수 있을까? 


    우선 pageContext 외 모든 내장객체는 MAP 입니다.

    즉, key-value 로 구성된 값의 집합입니다.


     생존범위 속성 맵 

     pageScope, requestScope,

     sessionScope, apllicationScope 

     요청 파라미터 맵

     param, paramValues 

     요청 헤더 맵

     header, headerValues 

     쿠키 맵

     cookie 

     컨텍스트 초기화 파라미터 맵

     initParam 

     pageContext 객체 참조 (빈)

     pageContext 



    - 요청 파라미터 맵

    Request param food is: ${param.food} <br>


    First food request param: ${paramValues[0]} <br>
    First food request param: ${paramValues[1]} <br>


    - 요청 헤더 맵

    Host is: ${header["host"]} <br>

    Host is: #{header.host} <br>



    - 쿠키, 초기화 파라미터

    ${cookie.userName.value}

    email is: ${initParam.mainEmail}



    생존범위 속성 맵과

    pageContext 객체 참조 (빈) 의 차이


    생존범위 속성 맵 (e.g. requestScope)

    requestScope 에 바인딩 된 속성 Attribute 의 집합


    pageContext 빈 

    request 자체의 정보 (e.g. request.getMethod() 의 메소드)

    pageContext 의 프로퍼티 request 의 (또, 내장) 프로퍼티 method


    Method is: <%= request.getMethod() %> // 스크립트

    ${pageContext.request.method} //EL


    request? requestScope? 

    request 라는 내장객체는 존재하지 않고,

    requestScope은 request 에 바인딩 된 속성들을 담은 맵일 뿐.





    프로퍼티 Property 와 속성 Attribute @___@

    Property는 괜히 한국말로 직역하면 속성 같지만.

    절대~ 헷갈리지 맙시다~



    그 다음 시간에는 EL 함수를 정리해봅니다~

    댓글

Designed by Tistory.