Front-End/Jsp

표현언어 EL표기1.

EverJunior Minjoo 2022. 9. 15. 11:06

1. 표현언어란?

표현언어(Expression Language, EL)은 변수의 값을 출력할때 사용하는 스크립트 언어이다. 

표현식( <%= %> ) 만으로도 값은 출력할수 있다.

그러나 표현식과 표현언어는 값을 출력하는건 같지만ㅇ ㅕㄱ할이 다르다.

표현언어는 4가지 영역 (page, request, session, application)에 저장된 속성에 접근할때 사용한다. 

(표현언어는 이 4가지 영역에 저장된 값을 출력할때 사용한다.)

사용법이 간결하고, 예외와 형변환에 관대하다

표현언어의 기능

1_ JSP내장 객체의 영역에 담긴 속성을 사용할수있다.

2_ 산술연산, 비교연산, 논리연산이 가능하다.

3_ 자바 클래스에 정의된 메서드를 호출할수있다.

4_ 표현언어만의 객체를 통해 JSP와 동일한기능을 수행할수있다.

 

2. EL 기본 사용법

${ 속성 }

여기서 속성은 영역에 저장된 속성을 뜻한다. 즉 변수나 값을 바로 쓸수있던 표현식과는 다르다.

jsp에서 생성한 변수에 접근하려면 반드시 영역에 저장후 사용해야한다. 예를들어 request영역에 저장했다면,

${requestScope.var} 로 출력할수있다.

EL은 html태그나 자바스크립트, css 어디든 사용할수있다. 또 액션태그나 jstl의 속성값으로도 사용할수있다.

그러나 jsp 스크립트 요서(선언부, 표현식, 스크립틀릿에서는 사용할수없다.

객체 표현 방식

EL에서 객체를 표현할때는 . (점)이나 [] 대괄호를 사용한다. ${var.name} , ${var[ "name" ]}  대괄호를 사용할때 속성명에는 "큰따옴표와 '작은따옴표 모두 사용할수있다.

 

3. EL의 내장객체

EL에서 4가지 영역에 접근하기 위한 내장객체

1. pageScope : pageContext 내장객체와 같이 page영역에 저장된 속성값을 읽어온다

2. requestScope : request내장객체와 같이 request영역에 저장된 속성값을 읽어온다.

3. sessionScope : session 내장객체와 같이 session영역에 저장된 속성값을 읽어온다.

4. applicationScope : application내장객체와 같이 application 영역에 저장된 속성값을 읽어온다.

 

폼값 처리하는 내장객체

jsp에서는 전송방식(get/post)에 상관없이 request.getParameter()로 폼값을 받을수 있는데 EL도 가능하다.

param : request.getParameter("매개변수명") 과 동일하게 요청 매개변수의 값을 맏아온다.

paramValues : request.getParameterValues("매개변수명") 과 동일하게 요청매개변수의 값을 문자열배열로 받아온다. (checkbox처럼 다수값을 전송하니까 이런것 주로 받음)

 

** EL은 null을 출력해도 예외가 발생하지 않지만 null을 표현식으로 출력하면 예외가 발생한다.

 

객체 전달하기

문자열은 폼으로 전송할수있지만,  전송할 대상이 객체라면 영역을 사용해야한다.

객체를 영역에 저장한후에 내장객체의 영역이 공유되는 특징을 이용해서 전송하고자 하는 페이지로 전달하면된다 .

객체를 영역에 저장해 전달하는 방식은 서블릿에서 자주 사용한다. 서블릿 코드는 자바로 작성하고 결과출력은 jsp에서 한다. 이때 서블릿에서 처리한 내용을 영역에 저장한후 jsp파일로 포워드 해 출력한다.

 

쿠키 HTTP헤더, 컨텍스트 초기화 매개변수 출력

EL은 쿠키나 헤더값을 읽을수 있도록 내장객체를 제공한다.

  • cookie : 쿠키를 읽을때 사용한다.
  • header : request.getHeader(헤더명)과 동일하게 헤더값을 읽을 때 사용한다.
  • headerValues : request.getHeaders(헤더명)과 동일하게 헤더값을 배열로 읽을때 사용한다.
  • initParam : web.xml에 설정한 컨텍스트 초기호 ㅏ매개변수를 읽을 때 사용한다.
  • pageContext : jsp의 pageContext내장객체와 동일한 역할을 한다.

컬렉션 사용하기

EL은 컬렉션도 편리하게 사용할수 있는 기능을 제공한다. (list 배열 다 사용가능)

EL 연산자

  • 할당연산자 : =연산자를 써서 변수에 값을 할당할수있다. 다만 할당과 동시에 출력이 되기때문에 할당만 하고싶다면 세미콜론과 작은따옴표를 함께 사용해야한다.  ex) ${ numVar = 1} or ${numVar = 1; ' '} -- 할당만되고 출력은안됨
  • 산술연산자 :
    • +-* 덧셈뺄셈 곱셈
    • / 또는  div: 나눗셈
    • % 또는  mod : 나머지
  • 비교연산자
    • > 또는 get : greater than( ~보다 크다)
    • >=  또는 ge : greater than or Equal(~보다 크거나 같다)
    • <  또는 lt : less than( ~보다 작다)
    • <=  또는 le : less than or Equal(~보다 작거나 같다)
    • ==  또는 eq : Equal(같다)
    • !=  또는 ne : not equeal (같지않다)
  • 논리연산자
    • && 또는 and = 논리 AND
    • ||  또는 or = 논리 Or
    • !  또는  not  = 논리 not
  • empty 연산자 : 다음과 같이값이 없을 때 true를 반환한다. 
    • null, 빈문자열, 길이가 0인 배열, size가 0인 컬렉션
  • 삼항 연산자 : ${ 조건 ? "true일때 선택" : "false일때 선택" }
  • null일때 연산 : 자바에서는 null을 조작하거나 연산에 사용하려하면 nullpointException이 발생하지만 EL에서는 0으로 인식되어 예외가 발생하지 않는다.