*servlet & jsp*

[sevlet&jsp] EL(Expression Language) 표현 언어

깐부로부터 2022. 2. 8. 01:41
EL(Expression Language) 표현 언어

 

기존에 사용했던 표현식(출력식) <%= name %>과 같이
JSP상에서 표현하고자 하는 값을 ${ name }의 형식으로 표현해서 작성하는 것

 

EL => JSP내장객체(== Scope 내장객체)

requestsessionapplicationpage에 담았음

 

* 데이터를 담을 수 있는 JSP 내장객체 종류 4가지

1. ServletContext(application scope)
- 어플리케이션 당 1개 존재하는 객체
- 이 영역에 데이터를 담으면 어플리케이션 전역에서 사용 가능
=> 공유 범위가 가장 큼

2. HttpSession (session scope)
- 브라우저당 1개 존재하는 객체
- 이 영역에 데이터를 담으면 jsp/servlet단에서 사용가능
- 값이 한번 담기면 서버가 멈추거나, 브라우저가 닫히기 전까지 사용 가능(로그인 기능)
=> 공유범위가 다소 제한적

3. HttpServletRequest(request scope)
- 요청 및 응답 시 매번 생성되는 객체
- 이 영역에 데이터를 담으면 해당 request객체를 
포워딩 받는 응답 jsp에서만 사용가능(1회성)
=> 공유범위가 해당 요청에 대한 응답 jsp 단 한나뿐

4. PageContext(page scope)
- 현재 그 jsp 페이지에서만 사용 가능
=> 공유 범위가 가장 작음(해당 페이지에서만 쓰임)

=> 위의 객체들에 값을 담을때는 .setAttribute("키", "벨류");
=> 값을 뽑고자 할 때는 .getAttriobute("키"); (Object 형태로)
=> 지우고자 할 때는 .removeAttribute("키");

 

EL은 getXXX(getAttribute, getter메소드)을 통해 값을 빼올 필요 없이 키값만 제시하면 바로 값에 접근 가능
내부적으로 해당 Scope영역에 해당 키값에 해당하는 벨류값을 가져올 수 있음
기본적으로 EL은 JSP 내장 객체 종류(4가지)를 구분하지 않고
자동적으로 모든 내장객체에 키값을 검색해서 존재하는 경우 값을 가져옴

 

 

 

1. 서블릿에서 키값 담아오기

 

 

2. 응답페이지로 가서 값 뽑기 (EL로~)

 

 

 

다른 Scope에 동일 키값으로 데이터를 담게 되면?

 

 

=> 제일 좁은 범위부터 키값을 찾기때문에 request가 출력된다

 

 

 

 

잘못된 접근 예시(session의 classRoom이라는 키값으로 접근할 경우) : ${sessionScope.classRoom }
=> 아무것도 출력이 되지 않음. 

 

(왠만하면 내가 찾고자하는 키값의 scope를 앞에 명시해주는게 좋다; 안그럼 무조건 pageScope부터 찾아들어감)


* EL의 산술연산 *

 

 

 

 

 

 

★핵중요!