[JSP] 표현언어 EL

Gabriela·2023년 9월 15일
0

JSP

목록 보기
13/20

Jsp binding 영역

(어떤 값을 속성(Attribute)의 형태로 저장할 때 사용하는 영역)


  • pageContext : this, 현재 페이지에서만 접근할 수 있다.
  • request : HttpServletRequest, 응답 전까지 접근할 수 있다.
  • session : HttpSession, 브라우저를 닫기 전까지 접근할 수 있다.
  • application : ServletContext, 애플리케이션 종료 전까지 접근할 수 있다.

Jsp binding 우선 순위

  • 동일한 이름의 속성이 서로 다른 영역에 존재하는 경우 먼저 사용되는 속성이 있다.
높음>>>낮음
pageContext>request>session>application
  • Jsp binding 영역에 저장된 속성(Attribute)은 모두 표현언어(EL)로 표현할 수 있다.

표현언어(EL)

Expression Language


  • 퍼블리싱에서도 공용적으로 사용되는 언어이다.
  • Jsp에 존재하는 각종 스크립트 요소로 인해 웹 디자이너들은 여전히 작업을 어려워 하는 상황이 발생했고,
  • 스크립트 요소 중 데이터 출력을 담당하던 JSP 표현식<%=값%>대체하기 위해 표현 언어가 등장한다.
  • 궁극적으로는 모두 표현언어로 바꿔서 사용하는것이 좋다.

형식

${값}

표현 언어 주요 특징

  • 기존의 표현식보다 쉬운 형태를 제공
  • 연산자 사용 가능
  • 표현 언어 자체 내장 객체를 제공
  • binding 영역(Jsp 저장 영역)에 저장된 값(주로 속성, Attribute)을 나타낼 때 사용할 수 있는 언어이다.

표현 언어 자료형

  • bool(true / false)
  • 정수
  • 실수
  • 문자열('hello' / "hello")
  • 널(null)

binding 영역 EL 내장 객체

스코프

  • pageContext 를 의미하는 pageScope 객체 (우선순위 1)
  • request 를 의미하는 requestScope 객체 (우선순위 2)
  • session 을 의미하는 sessionScope 객체 (우선순위 3)
  • application 을 의미하는 applicationScope 객체 (우선순위 4)

파라미터

  • param : 요청 파라미터를 참조할 때 사용(변수)
    • request.getParameter() 대신 사용
  • paramValues : 요청 파라미터를 참조할 때 사용(배열)
    • request.getParameterValues() 대신 사용

헤더

  • header : 요청 헤더 이름을 단일 값으로 반환
  • headerValues : 요청 헤더 이름을 여러 값(배열)으로 반환

쿠키

  • Cookies : 쿠키 값을 반환

Jsp 페이지

  • pageContext : pageContext 객체를 참조할 때 사용

표현언어 EL 사용법


각 영역에 속성 msg 저장하기

  <%
    pageContext.setAttribute("msg", "pageContext");
    request.setAttribute("msg", "request");
    session.setAttribute("msg", "session");
    application.setAttribute("msg", "application");
  %>

우선 순위 확인하기

  <div>${msg}</div>

각 영역의 속성 확인하기

  <div>${pageScope.msg}</div>
  <div>${requestScope.msg}</div>
  <div>${sessionScope.msg}</div>
  <div>${applicationScope.msg}</div>

객체 사용하기

  • el에서 사용하는건 getter호출하는 것과 같다.
  • 속성에 저장되는건 모두 Object타입이다.
    • setAttribute(name, vlaue);
  <%
    // 객체를 만든 뒤 EL 사용이 가능한 binding 영역에 넣는다.
    Person person = new Person();
    person.setName("홍길동");
    person.setAge(30);
    pageContext.setAttribute("person", person);  // pageContext 영역에 person을 넣음
  %>
  <div>이름 : ${person.name}</div>  <%-- EL은 person.name을 person.getName() 방식으로 호출해서 보여준다. --%>
  <div>나이 : ${person.age}</div>   <%-- EL은 person.age를 person.getAge() 방식으로 호출해서 보여준다. --%>

Map 사용하기

  • 객체Map 모두 동일하게 사용 가능하다.
  <%
    // Map을 만든 뒤 EL 사용이 가능한 binding 영역에 넣는다.
    Map<String, Object> book = new HashMap<>();
    book.put("title", "소나기");
    book.put("price", 10000); 
    pageContext.setAttribute("book", book);  // pageContext 영역에 book을 넣음
  %>
  <div>제목 : ${book.title}</div>  <%-- Map과 객체를 생성해서 사용하는 두 방법 모두 동일하다. (둘 중 하나 선택해서 사용) --%>
  <div>가격 : ${book.price}</div>

EL 연산자

  • el 은 내부에서 지원되는 자체 연산도 가능하다.
  • el 연산자 특징 : 영문 영산자가 있다.

산술 연산

  • +
  • -
  • *
  • / 또는 div
  • % 또는 mod

크기 비교

  • > 또는 gt (greater then)
  • < 또는 lt (less then)
  • >= 또는 ge (greater then equal)
  • <= 또는 le (less then equal)
    -== 또는 eq
  • != 또는 ne (not equal)

논리 연산

  • 논리 AND : && 또는 and
  • 논리 OR : || 또는 or
  • 논리 NOT : ! 또는 not

조건 연산

  • (조건식) ? ture일 때 : false일 때

empty 연산자

  • empty 값
    • 값이 null 또는 빈 문자열이면 true

request 사용 시 주의사항

  • 속성(Attribute)을 저장한 경우
    • request데이터를 저장할 때 대부분 사용하는 방법
속성표기
request.setAttribute("name", "홍길동");${name}
  • 파라미터(Parameter)를 저장한 경우
    • param : 파라미터를 받는 내장객체, 파라미터 name과 속성 name은 다르게 구분
파라미터표기
/ContextPath/URLMapping?name=홍길동${param.name}

👉EL 활용 예제(깃허브 클릭)



profile
개발이 세상에서 제일 재밌어요

0개의 댓글