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
: 요청 헤더 이름을 여러 값(배열)으로 반환
쿠키
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);
<%
Person person = new Person();
person.setName("홍길동");
person.setAge(30);
pageContext.setAttribute("person", person);
%>
<div>이름 : ${person.name}</div> <%-- EL은 person.name을 person.getName() 방식으로 호출해서 보여준다. --%>
<div>나이 : ${person.age}</div> <%-- EL은 person.age를 person.getAge() 방식으로 호출해서 보여준다. --%>
Map 사용하기
<%
Map<String, Object> book = new HashMap<>();
book.put("title", "소나기");
book.put("price", 10000);
pageContext.setAttribute("book", book);
%>
<div>제목 : ${book.title}</div> <%-- Map과 객체를 생성해서 사용하는 두 방법 모두 동일하다. (둘 중 하나 선택해서 사용) --%>
<div>가격 : ${book.price}</div>
EL 연산자
- el 은 내부에서 지원되는 자체 연산도 가능하다.
- el 연산자 특징 : 영문 영산자가 있다.
산술 연산
크기 비교
>
또는 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 연산자
request 사용 시 주의사항
- 속성(Attribute)을 저장한 경우
request
에 데이터를 저장할 때 대부분 사용하는 방법
속성 | ⇒ | 표기 |
---|
request.setAttribute("name", "홍길동"); | ⇒ | ${name} |
- 파라미터(Parameter)를 저장한 경우
param
: 파라미터를 받는 내장객체, 파라미터 name과 속성 name은 다르게 구분
파라미터 | ⇒ | 표기 |
---|
/ContextPath/URLMapping?name=홍길동 | ⇒ | ${param.name} |
👉EL 활용 예제(깃허브 클릭)