< 값을 담을 수 있는 JSP 내장객체 >
1. ServletContext (application scope)
- 한 어플리케이션(웹사이트)당 단 1개 존재하는 객체
- 이 영역에 데이터를 담으면 어플리케이션 전역에서 사용 가능
=> 공유범위가 가장 큼
2. HttpSession (session scope)
- 한 브라우저당 1개 존재하는 객체
- 이 영역에 데이터를 담으면 jsp/servlet단에서 사용 가능
- 값이 한 번 담기면 서버가 멈추거나, 브라우저가 닫히기 전까지는 사용 가능 (로그인 기능)
=> 공유범위가 다소 제한적
3. HttpSerlvetRequest (request scope)
- 요청 및 응답시에 매번 생성되는 객체
- 이 영역에 데이터를 담으면 해당 request객체를 포워딩받는 응답 jsp에서만 사용 가능(1회성)
=> 공유범위가 해당 요청에 대한 응답 jsp 단 하나뿐
4. PageContext (page scope)
- 현재 그 jsp페이지에서만 사용 가능
=> 공유범위가 가장 작음(해당 페이지에서만 쓰임)
=> 객체들에 값을 담을 때 .setAttribute("키", 밸류);
값을 뽑을 때 .setAttribute("키"); (Object 형태로)
지우고자 할 때 .removeAttribute("키");
< EL구문 (Expression Language) >
- 기존에 사용했던 표현식(출력식) <%= %>과 같이 JSP상에서 표현하고자 하는 값을
${ name }의 형식으로 표현해서 작성하는 것
- getXXXXX(getAttribute, getter메소드들)을 통해 값을 빼올 필요없이 키값만 제시하면 바로 값에 접근 가능
- 내부적으로 해당 Scope영역에 해당 키값에 해당하는 밸류값을 가져올 수 있음
- 기본적으로 EL은 JSP내장 객체 종류 (4가지)를 구분하지 않고
자동적으로 모든 내장객체에서 키값을 검색해서 존재하는 경우 값을 가져옴
- 객체의 필드에 담긴 값을 출력하고자 한다면 키값.필드명으로 접근
(내부적으로 getter메소드를 찾아서 호출을 해서 값을 가져오는 구조)
- EL 구문은 공유범위가 가장 작은 Scope에서부터 해당 키값을 검색함
(page → request → session → application 순으로 키값을 찾음)
- 모든 영역에서 해당 키에 대한 값을 못찾았을 경우, 아무것도 출력하지 않음
- 직접 Scope영역을 지정해서 접근 권장
< EL 연산 >
// request.setAttribute("big", 10);
// request.setAttribute("small", 3);
1. 산술 연산
10 + 3 = ${ big + small }
10 - 3 = ${ big - small }
10 * 3 = ${ big * small }
10 / 3 = ${ big / small } 또는 ${ big div small }
10 % 3 = ${ big % small } 또는 ${ big mod small }
2. 숫자간 대소 비교 연산
10 > 3 : ${ big > small } 또는 ${ big gt small }
10 < 3 : ${ big < small } 또는 ${ big lt small }
10 >= 3 : ${ big >= small } 또는 ${ big ge small }
10 <= 3 : ${ big <= small } 또는 ${ big le small }
3. 동등 비교 연산
10과 3이 일치합니까? : ${ big == small } 또는 ${ big eq small }
big에 담긴 값과 10이 일치합니까? : ${ big == 10 } 또는 ${ big eq 10 }
sOne과 sTwo가 일치합니까? : ${ sOne == sTwo } 또는 ${ sOne eq sTwo }
<!-- EL에서의 문자열의 == 비교는 자바에서의 equals() 메소드와 같은 동작을 함 (내용물 비교) -->
sOne과 sTwo가 일치하지 않습니까? : ${ sOne != sTwo } 또는 ${ sOne ne sTwo }
<!-- ne : not equals -->
sOne에 담긴 값과 "안녕"이 일치합니까? : ${ sOne == '안녕' } 또는 ${ sOne eq "안녕" }
<!-- EL에서의 문자열 리터럴 제시 시 홑따옴표 / 쌍따옴표 상관 없음 -->
4. 객체가 null인지 또는 리스트가 비어있는지 체크하는 연산
* 기존 방식
- 객체가 null인지 알고싶을 경우 객체명 == null로 비교 : true 또는 false
- 리스트가 비어있는지 알고싶은 경우 리스트명.isEmpty() : true 또는 false (혹은 리스트명.size() == 0)
* EL 연산
객체가 null인지 알고싶을 경우 : ${ empty pTwo } 또는 ${ pTwo == null } 또는 ${ pTwo eq null }
객체가 null이 아닌지 알고싶을 경우 : ${ !empty pOne } 또는 ${ pOne != null } 또는 ${ pOne ne null }
리스트가 비어있는지 알고싶은 경우 : ${ empty lOne }
5. 논리연산자
* 기존 방식
&&(AND), ||(OR)
* EL연산
AND 연산 : ${ true and true }
OR 연산 : ${ true or false }
'개발 > Web' 카테고리의 다른 글
[Java] JSP - JSTL Core Library (0) | 2022.12.13 |
---|---|
[Java] JSP - JSP 구성 인자 / JSP 액션 태그 (0) | 2022.12.13 |
[Java] Servlet - Request / Session / Application / Page 객체 (0) | 2022.11.18 |
[Java] Sevlet/JSP - 일반게시판 - 게시글 수정 (첨부파일 1개) (0) | 2022.11.18 |
[Java] Sevlet/JSP - 일반게시판 - 게시글 작성 (첨부파일 1개 업로드) (0) | 2022.11.18 |