JSP_6강_2_EL(Expression Language)

열라뽕따히·2024년 3월 22일

JSP

목록 보기
30/43

EL(Expression Language : 표현 언어)

  • 표현 언어라고 함.
  • 변수의 값을 출력할 때 사용하는 스크립트 언어.
  • JSP 2.0 이후 버전부터 사용이 가능함.
  • 자바 코드가 들어가는 표현식(<%= %>)을 좀 더 편리하게 사용하는 데이터 출력 기능임.
  • 사용법이 간결하고, 예외와 형변환에 관대함.
    예를 든다면 자바에서 값이 null인 변수를 사용하면 예외가 발생하지만 표현 언어를 사용하면 예외가 발생하지 않음.
  • 자바 코드를 사용해야 했던 모든 곳에 표현 언어를 사용할 수 있음.
  • 라이브러리 없이 사용이 가능함.

표현 언어의 특징

  • 기존의 표현식보다 편리하게 값을 출력할 수 있음.
  • 변수와 여러 가지 연산자를 포함할 수 있음.
  • JSP 내장 객체에 저장된 속성도 표현 언어로 출력할 수 있음.
  • 표현 언어 자체의 내장 객체도 지원이 됨.
  • 산술 연산, 비교 연산, 논리 연산이 가능함.

표현 언어 형식

예) <%=변수 %> ==> ${변수 or 수식 }

표현 언어 연산자의 종류

  • 산술연산자 : +, -, *, /(div), %(mod)

  • 관계(비교)연산자 :
    == or eq : 두 수의 값이 같은지 비교함.
    != or ne : 두 수의 값이 다른지 비교함.
    >= or ge : 값(좌측)이 다른 값(우측)보다 크거나 같은지 비교함.
    > or gt : 값(좌측)이 다른 값(우측)보다 큰지 비교함.
    <= or le : 값(좌측)이 다른 값(우측)보다 작거나 같은지 비교함.
    < or lt : 값(좌측)이 다른 값(우측)보다 작은지 비교함.

  • 논리연산자
    && or and : 논리곱 연산을 함.
    || or or : 논리합 연산을 함.
    ! or not : 부정 연산을 함.

  • empty 연산자

  • 값이 null 이거나 빈 문자열이면 true 값을 반환함.
  • 또한 List, Map 같은 저장 객체에 값(데이터)이 존재하는지
    여부를 판단하는 연산자임.

표현 언어에서 사용할 수 있는 기본 객체

pageContext

  • JSP의 page 기본 객체와 동일함.

pageScope

  • pageContext 기본 객체에 저장된 속성의 <속성, 값> 매핑을 저장한 Map 객체임.
  • 현재 페이지의 범위에만 한정됨. 페이지가 끝나면 값이 유효하지 않음.

requestScope

  • request 기본 객체에 저장된 속성의 <속성, 값> 매핑을 저장한 Map 객체임.
  • request 생명 주기는 request 요청을 받고, 요청에 대한 처리를 완료하는 시점까지만 한정됨.

sessionScope

  • session 기본 객체에 저장된 속성의 <속성, 값> 매핑을 저장한 Map 객체임.
  • session의 생명 주기는 설정된 유효 시간이 기준이 됨.

applicationScope

  • application 기본 객체에 저장된 속성의 <속성, 값> 매핑을 저장한 Map 객체임.
  • 웹 사이트가 실행되는 동안만 유효하게 됨. 애플리케이션이 종료가 되면 유효하지 않게 됨.

param

  • 요청 파라미터의 <파라미터 이름, 값> 매핑을 저장한 Map 객체임.
    파라미터 값 타입은 String이며, request.getParameter(이름)의 결과와 동일함.
  • 파라미터 값을 얻어올 때 사용됨.

paramValues

  • 요청 파라미터의 <파라미터 이름, 값> 매핑을 저장한 Map 객체임. 파라미터 값 타입은 String[]이며, request.getParameterValues (이름)의 결과와 동일함.
  • 파라미터 값을 배열로 얻어올 때 사용됨.

※ 내장 객체를 사용할 때는 map 자료 구조 형태로 key, value 값으로 저장.
setAttribute(String key, Object value)
getAttribute(String key)



예시1


=============================코드=============================

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    
<%
	int su = 236;

	request.setAttribute("Su", su);

%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	
	<h2>여러 가지 데이터 출력하기</h2>
	
	<h3>
		JSP 표현식 >>> <%=su %> <br/>
		
		EL언어 >>> ${Su  }
	</h3>
	
	<hr>
	
	<h3>
		\${123 + 50 } >>> ${123 + 50 } <br/> <!-- \표시는 이 다음 입력한 값이 그대로 출력 -->
		
		\${"방가방가" } >>> ${"방가방가" } <br/>
		
		<%-- 숫자형 문자열 숫자를 더하면 문자열을 자동으로 숫자로 변환하여 더해줌 --%>
		\${"20" + 55 } >>> ${"20" + 55 } <br/>   
		
		<%-- 피연산자가 null이면 0으로 처리가 됨. 따라서 덧셈연산이 진행됨 --%>
		\${null + 45 } >>> ${null + 45 } <br/>
	</h3>

</body>
</html>

=============================실행=============================



예시2


=============================코드=============================

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>

	<h2>여러 가지 산술 연산자</h2>
	
	<h3>
	
		\${15 + 10} >>> ${15 + 10} <br/>
		
		\${15 - 10} >>> ${15 + 10} <br/>
		
		\${15 * 10} >>> ${15 + 10} <br/>
		
		\${15 / 10} >>> ${15 + 10} <br/>
		
		\${15 % 10} >>> ${15 + 10} <br/>
		
		\${15 div 10} >>> ${15 div 10} <br/>
		
		\${15 mod 10} >>> ${15 mod 10} <br/>
		
	</h3>

</body>
</html>

=============================실행=============================



예시3


=============================코드=============================

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>

	<h2>여러 가지 관계(비교) 연산자</h2>
	
	<h3>
		\${10 == 10 } >>> ${10 == 10 } <br/>
		\${10 eq 10 } >>> ${10 eq 10 } <br/>
		
		\${"Hello" == "hello" } >>> ${"Hello" == "hello" } <br/>
		\${"Hello" eq "hello" } >>> ${"Hello" eq "hello" } <br/>
		
		\${20 != 10 } >>> ${20 != 10 } <br/>
		\${20 ne 10 } >>> ${20 ne 10 } <br/>
		
		\${20 < 10 } >>> ${20 < 10 } <br/>
	</h3>

</body>
</html>

=============================실행=============================



예시4


=============================코드=============================

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>

	<h2>여러 가지 논리 연산자</h2>
	
	<h3>
		\${(10 == 10) && (20 == 20) } >>> ${(10 == 10) && (20 == 20) } <br/>
		
		\${(10 == 10) && (20 == 10) } >>> ${(10 == 10) && (20 == 10) } <br/>
		
		\${(5 == 10) || (20 == 20) } >>> ${(5 == 10) || (20 == 20) } <br/>
	</h3>

</body>
</html>

=============================실행=============================

0개의 댓글