일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- props
- Web API
- css layout
- setState
- SQL
- JavaScript
- Servlet
- 부스트코스
- 프로그래밍
- 웹 프로그래밍
- setTimeout
- DBMS
- web
- 부스터
- 웹
- react
- 비동기식
- JSP
- Spring
- HTML
- DOM
- 부스터코스
- State
- BOOSTER
- CSS
- JDBC
- 웹 UI 애니메이션
- 리액트
- Ajax
- API
- Today
- Total
땅콩이 맛난고 먹이자
[부스트코스]{2. DB 연결 웹 앱}(6. JSTL & EL -BE)_EL 본문
EL(Expression Language)
jsp에서 표현식을 이용해 값을 출력할 때 변수의 값이 null이면 화면에 null이 출력되었다.
이 경우 null인지를 check한 후 null이면 아무것도 없는 문자열을 출력해야 하는 등 불편한 과정을 거쳐야 한다.
이때 EL을 사용하면 좀 더 편리하게 변수를 JSP에서 사용할 수 있다.
#표현언어란?
값을 표현하는 데 사용되는 스크립트 언어로서 JSP의 기본 문법을 보완하는 역할을 한다. 보통 jsp에 쓰이는 스크립트릿 등을 줄여 영역값을 일일이 받아 출력하는 수고로움을 덜 수 있으며 코드도 간결해진다.
=> 기본적으로 스크립트릿 <% %> 안이 아닌 HTML 영역에 ${ }을 사용한다.
표현 언어가 제공하는 기능
JSP의 스코프(scope)에 맞는 속성 사용 |
집합 객체에 대한 접근 방법 제공 |
수치 연산, 관계 연산, 논리 연산자 제공 |
자바 클래스 메소드 호출 기능 제공 |
표현언어만의 기본 객체 제공 |
#표현 언어의 표현 방법
#표현 언어의 기본 객체
#표현 언어의 기본 객체 사용 예시
#표현 언어의 데이터 타입
불리언 타입 | true와 false |
정수타입 | 0~9로 이루어진 정수 값 음수의 경우 '-'가 붙음 |
실수타입 | 0~9로 이루어져 있으며, 소수점('.')을 사용할 수 있고, 3.24e3과 같이 지수형으로 표현 가능 |
문자열 타입 | 따옴표( ' 또는" )로 둘러싼 문자열. 만약 작은 따옴표(')를 사용해서 표현할 경우 값에 포함된 작은 따옴표는 \' 와 같이 \ 기호와 함께 사용 |
\ 기호 | \ 기호 자체는 \\ 로 표시 |
널 타입 | null |
#문법
객체 접근 규칙 |
표현 1이나 표현 2가 null이면 null을 반환한다. |
표현1이 Map일 경우 표현2를 key로한 값을 반환한다. |
표현1이 List나 배열이면 표현2가 정수일 경우 해당 정수 번째 index에 해당하는 값을 반환한다. |
만약 정수가 아닐 경우에는 오류가 발생한다. |
표현1이 객체일 경우는 표현2에 해당하는 getter메소드에 해당하는 메소드를 호출한 결과를 반환한다. |
표현 언어의 수치 연산자 |
+ : 덧셈 |
- : 뺄셈 |
* : 곱셈 |
/ 또는 div : 나눗셈 |
% 또는 mod : 나머지 |
숫자가 아닌 객체와 수치 연산자를 사용할 경우 객체를 숫자 값으로 변환 후 연산자를 수행 : ${"10"+1} → ${10+1} |
숫자로 변환할 수 없는 객체와 수치 연산자를 함께 사용하면 에러를 발생 : ${"열"+1} → 에러 |
수치 연산자에서 사용되는 객체가 null이면 0으로 처리 : ${null + 1} → ${0+1} |
비교 연산자 |
== 또는 eq |
!= 또는 ne |
< 또는 lt |
> 또는 gt |
<= 또는 le |
>= 또는 ge |
문자열 비교: ${str == '값'} str.compareTo("값") == 0 과 동일 |
논리 연산자 |
&& 또는 and |
|| 또는 or |
! 또는 not |
#empty 연산자
#비교 선택 연산자
#연산자 우선순위
#표현 언어 비활성화: JSP에 명시하기
<%@ page isELIgnored = "true" %>
실습(JSP 파일)
#Scope별 표현 언어의 사용
각 scope별 저장 값들을 EL로 출력하기
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
pageContext.setAttribute("p1", "page scope value");
request.setAttribute("r1", "request scope value");
session.setAttribute("s1", "session scope value");
application.setAttribute("a1", "application scope value");
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
pageContext.getAttribute("p1") : ${pageScope.p1 }<br>
request.getAttribute("r1") : ${requestScope.r1 }<br>
session.getAttribute("s1") : ${sessionScope.s1 }<br>
application.getAttribute("a1") : ${applicationScope.a1 }<br>
<br><br>
pageContext.getAttribute("p1") : ${p1 }<br>
request.getAttribute("r1") : ${r1 }<br>
session.getAttribute("s1") : ${s1 }<br>
application.getAttribute("a1") : ${a1 }<br>
</body>
</html>
예제 코드 설명
0. Scope별로 값들 저장
pageContext.setAttribute("p1", "page scope value");
request.setAttribute("r1", "request scope value");
session.setAttribute("s1", "session scope value");
application.setAttribute("a1", "application scope value");
1. JAVA --> EL
pageContext.getAttribute("p1") --> ${pageScope.p1 }
request.getAttribute("r1") --> ${requestScope.r1 }
session.getAttribute("s1") --> ${sessionScope.s1 }
application.getAttribute("a1") --> ${applicationScope.a1 }
2. 변수 내용이 겹치지 않다면 더 간단하게 EL 코드로 작성 가능함
(*겹친다면 가장 작은 Scope 먼저 찾아냄)
pageContext.getAttribute("p1") --> ${p1 }
request.getAttribute("r1") --> ${r1 }
session.getAttribute("s1") --> ${s1 }
application.getAttribute("a1") --> ${a1 }
#표현 언어의 연산
k, m에다 값 저장 후 이를 불러와서 계산 한 값을 화면에 출력하기
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
request.setAttribute("k", 10);
request.setAttribute("m", true);
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
k : ${k } <br>
k + 5 : ${ k + 5 } <br>
k - 5 : ${ k - 5 } <br>
k * 5 : ${ k * 5 } <br>
k / 5 : ${ k div 5 } <br>
k : ${k }<br>
m : ${m }<br>
k > 5 : ${ k > 5 } <br>
k < 5 : ${ k < 5 } <br>
k <= 10 : ${ k <= 10} <br>
k >= 10 : ${ k >= 10 } <br>
m : ${ m } <br>
!m : ${ !m } <br>
</body>
</html>
결과
=>만약 EL문법을 무시하고 그대로 출력하려면
<%@ page isELIgnored = "true" %>
#부스트코스 강의
https://www.edwith.org/boostcourse-web/lecture/16714/
[LECTURE] 1) EL(Expression Language) : edwith
들어가기 전에 jsp에서 표현식을 이용해 값을 출력할 때 변수의 값이 null이면 화면에 null이 출력되었습니다. 이 경우 null인지를 check한 후 null이면 아무것도 없... - 부스트코스
www.edwith.org
'edwith_부스트코스_웹 프로그래밍' 카테고리의 다른 글
[부스트코스]{2. DB 연결 웹 앱}(7. MySQL - BE)_DB와 DBMS (0) | 2020.03.02 |
---|---|
[부스트코스]{2. DB 연결 웹 앱}(6. JSTL & EL - BE)_JSTL (0) | 2020.03.01 |
[부스트코스]{2. DB 연결 웹 앱}(5. scope - BE)_SCOPE (0) | 2020.03.01 |
[부스트코스]{2. DB 연결 웹 앱}(4. redirect & forward - BE)_3. Servlet & JSP 연동 (0) | 2020.02.29 |
[부스트코스]{2. DB 연결 웹 앱}(4. redirect & forward - BE)_2. forward (0) | 2020.02.29 |