일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
- 스프링시큐리티
- 게시판댓글
- SCOPE
- 스프링회원정보수정
- 내장객체
- page영역
- 게시판댓글수
- 스프링
- RPTLANFTN
- 회원정보수정
- application영역
- request영역
- ResponseEntity
- Security
- session영역
- 게시판프로젝트
- 댓글수처리
- 시큐리티
- Spring
- 회원정보
- jsp
- Today
- Total
코코무의 코딩캔버스
[JSP] EL(Expression Language) 본문
EL(Expression Language) 표현언어
이전에는 불편하게 <%%>으로 값을 가져왔었다. 하지만 이제는 EL을 사용하여 백단의 데이터를 좀 더 간단하고 간편히 가져올 수 있다.
변수의 값을 표현식보다 편하게 출력할 수 있도록 한다. JSP의 기본 문법을 보완하는 역할을 하며 4가지 영역에 저장된 속성도 더 쉽게 읽을 수 있다.
모델 2 방식으로 웹 애플리케이션을 개발할 때 주로 사용한다.
MVC를 이용한 서블릿에서 사용한다. 저장된 4가지 영역에 속성을 접근할 때 순서 JSP에서 사용하는 것이 불편하다. EL을 배우고 난 후 JSTL, 서블릿과 응용하여 좀 더 간결한 코드로 웹 구현하는 것이 목표이다.
객체 표현 방식
EL에서 객체를 표현할 때 . 이나 [ ]를 사용한다.
${ param.name }
${ param["name"]}
${ param['name']}
속성명에 특수기호나 한글이 포함될 때는 대괄호만 사용한다.
${ header["user-agent"]} //가능
${ header.user-agent } //불가능
${ King['한글']} //가능
${ King.한글 } //불가능
대괄호 사용 시 속성명에서는 큰 따옴표와 작은 따옴표 모두 사용 가능하다.
내장객체를 사용할 수 있다.
- pageScope: page 영역에 저장된 속성 값을 읽어온다.
- requestScope: request 영역에 저장된 속성 값을 읽어온다.
- sessionScope: session 영역에 저장된 속성 값을 읽어온다.
- applicationScope: application 영역에 저장된 속성 값을 읽어온다.
4가지 영역 테스트(page, request, session, application)
<%
pageContext.setAttribute("scopeValue", "페이지 영역");
request.setAttribute("scopeValue", "리퀘스트 영역");
session.setAttribute("scopeValue", "세션 영역");
application.setAttribute("scopeValue", "애플리케이션 영역");
//4가지 영역에 scopeValue라는 같은 이름으로 속성을 저장 후
//EL의 내장 객체를 통해 각 영역에 저장된 속성 값을 출력해본다.
%>
<body>
<h2>ImplicitObjMain</h2>
<h3>각 영역에 저장된 속성 읽기</h3>
<ul>
<li>페이지 영역: ${ pageScope.scopeValue }</li>
<li>리퀘스트 영역: ${ requestScope.scopeValue }</li>
<li>세션 영역: ${ sessionScope.scopeValue }</li>
<li>애플리케이션 영역: ${ application.scopeValue }</li>
</ul>
<h3>영역 지정 없이 저장된 속성 읽기</h3>
<ul>
<li>scopeValue: ${ scopeValue }</li>
</ul>
</body>
영역에는 모든 객체가 Object 타입으로 저장되어 읽어올 때는 반드시 형 변환 후 사용해야 하고, 게터로 멤버 변수의 값을 가져온다.
EL을 사용하면 이런 번거로운 절차를 생략할 수 있다.
- 형 변환이 필요없고
- 게터 호출 대신 멤버 변수 이름만 쓰면 원하는 값을 출력할 수 있다.
EL 내장객체
- cookie
쿠키를 읽을 때 사용(처음 접속 시에는 없지만 다음 접속부터 활성화됨)
- header
request.getHeader(헤더명)와 동일하게 헤더값을 읽을 때 사용
- headerValues
헤더값을 배열로 읽을 때 사용
- initParam
web.xml에 설정한 컨텍스트 초기화 매개변수를 읽을 때 사용
- pageContext
JSP의 pageContext 내장 객체와 동일
컬렉션 EL 사용
EL을 통해서 컬렉션을 자바코드보다 훨씬 간단하게 이용할 수 있다.
EL의 연산자
자바와 동일한 기능의 연산자를 제공한다. 다른 점은, 자바에서 사용하는 특수 기호 형태의 연산자 이외에 EL에서는 문자 형태의 연산자도 함께 사용할 수 있다.
- 할당 연산자: = 연산자를 통해서 변수에 값을 할당한다.
1. ${ numberVar = 10 } → 할당과 동시에 출력
2. ${ numberVar = 10;""} → 할당만 하고 출력은 안 함
- 산술 연산자
1. + - *: 덧셈, 뺄셈, 곱셈
2. / | div: 나눗셈
3. % | mod: 나머지
- 비교 연산자
1. > | gt: Greater Than(~보다 크다)
2. > = | ge: 이상
3. < | lt: Less Than(~보다 작다)
4. < = | le: 이하
5. == | eq: 같다
6. != | ne: 같지 않다
- 논리 연산자
1. && | and: 논리 and
2. || | or: 논리 or
3. ! | not: 논리 not
'JSP' 카테고리의 다른 글
[JSP] JSTL 사용을 위한 jar 파일의 필요성 (0) | 2024.07.19 |
---|---|
[JSP] MVC 패턴을 위한 서블릿(Servlet) (0) | 2024.02.13 |
[JSP] 내장 객체 | getAttribute()와 getParameter()의 차이점 (0) | 2024.02.01 |
[JSP] 내장 객체 | response, out, exception 메서드 (0) | 2024.02.01 |
[JSP] 내장 객체 | Scope: page, request, session, application (0) | 2024.02.01 |