EL(Expression Language) 표현 언어
기존에 사용했던 표현식(출력식) <%= name %>과 같이
JSP상에서 표현하고자 하는 값을 ${ name }의 형식으로 표현해서 작성하는 것
EL => JSP내장객체(== Scope 내장객체)
request, session, application, page에 담았음
* 데이터를 담을 수 있는 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의 산술연산 *
★핵중요!
'*servlet & jsp*' 카테고리의 다른 글
[jsp] JSP(Java Server Page) (0) | 2022.01.03 |
---|---|
[servlet] POST 방식으로 요청 (0) | 2022.01.03 |
[servlet] GET방식으로 요청 (0) | 2022.01.02 |
[servlet] web.xml (배포 서술자) (0) | 2022.01.02 |
[servlet] Dynamic Web Project만들기 (동적인 웹 어플리케이션) (0) | 2022.01.02 |