본문 바로가기
컴퓨터과학[3-2]/J.S.P

JSP - [제12강] 표현 언어

by boolean 2016. 7. 22.
728x90

JSP - [제12강] 표현 언어

기본 문법, 표현 언어의 데이터, 내장 객체 사용하기, 자바 메서드 사용

JSP 용어정리

  • 표현언어 (Expression Language)
    간단히 EL이라고 하며 간결한 문법으로 수식 표현을 제공하는 언어이다. JSP 페이지에서 표현 언어로 작성된 수식을 사용할 수 있다. JSP 2.0부터 정식으로 표현 언어가 JSP 스펙에 포함되었다.
  • EL 수식
    JSP 페이지를 구성하는 요소의 하나로 표현 언어를 이용하여 작성된 수식을 말한다. EL 수식은 JSP 템플릿 데이터 내부에서 또는 태그의 속성 값을 지정할 때 사용된다. EL 수식에서 연산자, 메소드 호출, 내장 객체를 사용할 수 있으며 집합 객체의 원소를 간편하게 다룰 수 있다. 문법적으로 ${expr} 또는 #{expr} 형태로 구분된다.
  • 표현 언어의 내장객체
    EL 수식에서 사용될 수 있는 내장 객체를 말한다. param, paramValues, header, headerValues, cookie, intiParam은 요청을 통해 서버에게 전달된 데이터를 다루기 위한 Map 유형의 내장 객체이다. pageScope, requestScope, sessionScope, applicationScope는 영역에 존재하는 변수를 다루기 위한 Map 유형의 내장 객체이다. pageContext는 JSP 내장 객체 pageContext와 일치한다.
  • TLD
    Tag Library Descriptor의 약자로 태그 라이브러리에 관한 정보를 기술한 XML 문서이다. 커스텀 태그를 정의하거나 EL 수식에서 함수를 사용하려면 그것에 대한 정보를 TLD 파일에 기술하여야 한다. TLD 파일의 확장자는 .tld 이다.

요점정리

  1. 표현 언어(Expression Language)는 JSP 2.0 버전부터 공식적으로 채택되었다. 웹 컨테이너가 직접 표현 언어를 해석할 수 있으며, 표현식을 사용하는 모든 곳에서 표현 언어를 사용한 수식을 사용할 수 있다.
  2. 표현 언어는 JSP의 스크립트 요소인 스크립트릿, 표현식, 선언부를 제외한 나머지 부분에서 사용될 수 있으며 기존의 표현식 보다 간단하게 값을 표현할 수 있다는 장점을 가지고 있다.
  3. 표현 언어에서 객체에 저장된 속성에 접근할 때 ‘.’이나 ‘[]’를 사용한다. 예를 들어 ${cookie.name}과 ${cookie[’name‘]}은 똑같이 이름이 “name”인 Cookie 객체를 리턴한다.
  4. 표현 언어에서 page, request, session, application 영역에 저장된 속성에 접근할 때는 pageScope, requestScope, sessionScope, applicationScope 내장 객체를 사용한다.
  5. 영역을 나타내는 내장 객체를 사용하여 ${requestScope.name}처럼 사용하지 않고 ${name}와 같이 속성의 이름만 지정한 경우, page, request, session, application 영역을 순서대로 검색해 이름이 “name”인 속성이 존재하는지 확인하고 존재하면 해당되는 값(객체)을 출력하게 된다.
  6. 자바 클래스의 메서드를 표현 언어로 호출하려면 다음과 같은 절차를 거쳐야 한다. 

연습문제

  • 연습문제1
    표현 언어의 사용에 관한 설명이다. 잘못된 것은?
    답을 체크하세요
    정답 :
    해설 :
    표현 언어로 작성된 수식은 스크립트 요소 밖에서 사용해야 한다. 표현 언어 수식을 태그의 속성 값을 지정할 때 사용할 수 있으며 또한 템플릿 데이터가 위치하는 곳에서 사용할 수 있다.
  • 연습문제2
    표현 언어에서 제공하는 내장 객체 param을 이용하여 다음과 같은 수식을 작성하였다. 이것과 의미가 다르게 잘못 작성된 것을 고르시오.
    ${param.code}
    답을 체크하세요
    정답 :
    해설 :
    보기 2과 3은 같은 의미의 표현이다. 보기 4는 표현식을 이용하여 작성된 것이다. param 내장 객체는 Map 유형이며 ${param.속성이름}의 결과는 param이 가지고 있는 해당 속성의 값이 된다.
  • 연습문제3
    다음과 같이 쿠키가 생성되어 클라이언트로 보내진 후, 이 쿠키가 다시 서버로 전송되었다고 하자. 템플릿 데이터가 위치하는 곳에 보기의 수식이 위치했을 때, 결과가 “Jimmy”가 되는 것은 무엇인가?
    <% Cookie cookie = new Cookie("firstname", "Jimmy");
    response.addCookie(cookie); %>
    답을 체크하세요
    정답 :
    해설 :
    보기 3을 정답으로 오해할 수 있으나 ${cookie.firstname}의 결과는 문자열이 아니라 Cookie 객체이다. Cookie 객체는 name 속성과 value 속성을 가지고 있다. 따라서 보기 4가 정답이다. 한편 ${cookie.firstname.name}의 결과는 “firstname”이다.
  • 연습문제4
    표현 언어 수식에서 자바 메소드를 호출하고자 할 때 필요한 준비 작업을 설명한 것이다. 잘못된 것은?
    답을 체크하세요
    정답 :
    해설 :
    보기 3은 JDBC를 이용하여 데이터베이스 프로그래밍을 할 때 필요한 작업이다.
  • 연습문제5
    표현 언어 수식에서 자바 메소드를 호출하고자 다음과 같은 taglib 지시어를 사용하였다. 이것에 관한 설명으로 잘못된 것은?
    <%@ taglib prefix="elfunc" uri="/ElFuncions" %>
    답을 체크하세요
    정답 :
    해설 :
    커스텀 태그를 사용할 때만 taglib 지시어가 필요하다. 표현 언어 수식에서 자바 메소드를 호출할 때도 커스텀 태그를 사용하는 것과 같이 taglib 지시어를 작성해 주어야 한다. 


댓글