Chillax in dev

[JSP&Servlet] JSP의 EL 기초 문법 사용법 정리 본문

Java 공부/JSP&Servlet

[JSP&Servlet] JSP의 EL 기초 문법 사용법 정리

Seong Story 2020. 9. 2. 23:34
728x90

[ JSP&Servlet ] 표현 언어(EL) 문법 사용법 정리

- EL이란 무엇인가?

표현 언어(EL, Expression Language)로 JSP 2.0 버전부터 지원되는 jsp페이지의 전달 값이나 변숫값 등 자료를 출력할때의 번거로움을 해결하고 좀 더 효율적으로 데이터를 표현하기 위해 만들어진  기술입니다.

 

- EL의 이해 

페이지를 구현하는 개발을 할 때 가장 중요한 것은 코딩 실력도 있지만 대화와 커뮤니케이션 능력이라고 생각합니다. 특히 EL은 JSP 페이지 내에서 데이터의 표현에 사용되는 기술입니다.  좀 더 효율적이고 간결한 문장을 지향하는 JAVA의 관념에 맞도록 문장의 최소화를 통해 웹 디자이너나 개발자 사이의 작업 어려움에 도움을 주는 기술입니다.

 

-웹 애플리케이션의 저장소

웹 애플리케이션은 크게 4개의 저장소(scope)를 가지고 있습니다. 종류는 page, request, session, application이고, 이러한 저장소에는 데이터를 공유 및 유지할 수 있게 "속성=값"의 형태를 이용하여 데이터를 저장하고 이를 EL문법으로 표현할 수 있습니다.

사용범위 넒은순서 page request session application

- EX) 

request.setAttribute("name", "aaaaa"); //request 내장 객체에 name속성으로 aaa 저장.

${name} //EL문법 표현식으로 JSP 페이지에 aaaaa 가 출력됩니다.

- 각 저 정위치 확인 예제 

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
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>scope</title>
</head>
<body>
<!--이들에 따라각각의 저장 위치는 다르지만.. 순서를 매겨보면 1~4   -->
<%
request.setAttribute("name""request man");//2
session.setAttribute("name""session man");//3
application.setAttribute("name""application man"); //4
pageContext.setAttribute("name""page man"); //1
%>
<h2></h2>
<!--사실 이들이 겹칠일을 없지만아래와 같이 지목할 수도 있다.  -->
name: ${name}<hr>
page속성: ${pageScope.name }<br>
request 속성: ${requestScope.name}<br>
session 속성: ${sessionScope.name}<br>
application 속성 : ${applicationScope.name}<br>
 
</body>
</html>
cs

- EL 영역에도 JSP의 내장 객체처럼 꼭 필요한 객체들이 11개 제공됩니다. 이들은 임포트 없이 그냥 사용할 수 있겠죠.

내장 객체 사용법
pageScope page영역에 존재하는 객체를 참조 할때 사용
requestScope request 영역에 존재하는 객체를 참조할때 사용
sessionScope session 영역에 존재하는 객체를 참조할때 사용
applicaionScope application 영역에 존재하는 객체를 참조할때 사용
param 파라미터 값을 얻어올때 사용
header Header 정보를 언어올때 사용
headerValues Header의 정보를 배열로 얻어올때 사용
cookie 쿠키 객체를 참조 할때 사용
initParam 컨텍스트의 초기화 파라미터를 의미함
pageContext pageContext 객체를 참조할때 사용

- (EL) 표현 언어의 연산자

실제로 EL의 연산자는 자바뿐 아니라 일반적인 프로그래밍 언어에서 사용하는 연산자와 거의 유사합니다.

아래 간단한 예시를 참고해봅니다.

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>EL</title>
</head>
<body>
<p>#표현 언어(EL,Expression Language : JSP의 전달값이나 변수값등 자료를 출력할때의 번거로움
을 해결하기위해 만들어진 출력 문법입니다.<p>
 <h2>표현언어</h2>
 1.JSP문법사용 1 : <%="Hello"%><br>
 2.JSP문법사용 2 : <%="Hello"%><br>
 3.EL 문법사용 :${"Hello"}<br>
 
  <h2>EL : 문법</h2>
 정수형:${10}<br>
 실수형:${3.141592}<br>
 문자열형:${"홍길동"}<br>
 논리형:${true}<br>
 null: ${null}(비어있어서 아무것도 안보임.)<br> 
 
<h2>EL : 산술연산자</h2>
10과2의 합 :${10+2 }<br>
<!-- 역슬러시 활용   \${10-2}는 모양을 출력, ${10-2}는 계산결과 출력.  -->
\${10-2 } : ${10-2}<br>
\${10*2 } : ${10*2}<br>
\${10/2 } : ${10/2}<br>
\${10%3 } : ${10%3}<br>
\${10 mod 3 } :${10 mod 3 }<br>
<h2>EL : 비교연산자</h2>
10과2의 합 :${10+2 }<br>
\${10==2 } : ${10==2}<br>
\${10 eq 2 } : ${10 eq 2}<br>
\${10<2 } : ${10<2}<br>
\${10 lt 15 } : ${10 lt 15}<br>
<!--10보다 15가 초과냐? 반대는 GT   -->
\${5 >= 4 } :${5 >= 4 }<br>
\${empty("") } :${empty("") }<br>
<!--empty("")잘 사용한다. 로그인 값 비었나 확인시  -->
<h2>EL : 서로다른 자료형간의 연산</h2>
 
<%--
\${2+"5" } : ${2+"5"}<br>
\${2*"5" } : ${2*"5"}<br>
\${null +1} : ${null +1}<br> 
--%>
 
<!--숫자로 자동연산됨!  -->
 
<%--
   //error
 \${"나라"+"사랑" } : ${"나라"+"사랑" }<br> 
 \${"일"+5 } : ${"일"+5}<br> 
 
 --%>
 
 
  <h2>EL : 문자열의 연결(EL:3.0추가)</h2>
\${"문자"+="열"+="연결" } = ${"문자"+="열"+="연결" }<br>
<h2>셋어트리뷰트하고 페이지에선 \${name} 만쓰면 겟에트리뷰트 한것과 같다.</h2>
<%
    request.setAttribute("name""홍길동");
    pageContext.setAttribute("name""강감찬");
%>
<%=request.getAttribute("name"%><br>
${name }<br>
${requestScope.name }<br>
</body>
</html>
cs

- 실행 예시

 

#표현 언어(EL, Expression Language : JSP의 전달 값이나 변숫값 등 자료를 출력할 때의 번거로움 을 해결하기 위해 만들어진 출력 문법입니다.

표현 언어

1.JSP문법 사용 1 : Hello
2.JSP문법 사용 2 : Hello
3.EL 문법 사용 :Hello

EL : 문법

정수형:10
실수형:3.141592
문자열형:홍길동
논리형:true
null: (비어있어서 아무것도 안 보임.)

EL : 산술 연산자

10과 2의 합 :12
${10-2 } : 8
${10*2 } : 20
${10/2 } : 5.0
${10%3 } : 1
${10 mod 3 } :1

EL : 비교 연산자

10과 2의 합 :12
${10==2 } : false
${10 eq 2 } : false
${10 <2 } : false
${10 lt 15 } : true
${5 >= 4 } :true
${empty("") } :true

EL : 서로 다른 자료형 간의 연산

EL : 문자열의 연결(EL:3.0 추가)

${"문자"+="열"+="연결" } = 문자열 연결

셋 어트리뷰트 하고 페이지에선 ${name} 안 쓰면 겟 에트리 뷰트 한 것과 같다.

홍길동
강감찬
홍길동

728x90
LIST
Comments