비전공자 공부일기/:: WEB & Front-End

[Web:] 자바 표현언어 EL(Expression Language)

와니_ 2019. 8. 19. 11:23

 

 

 

EL은 JSP 문서로 된 뷰 페이지에서만 쓰는 "출력 전용 언어"라고 보면 된다.

Spring을 할 때도 사용하기 때문에 꼭 알고있어야 한다!

 

무조건 객체가 공유되어야 사용할 수 있음

 

 

 

${ 공유속성명 } 또는 ${ 객체명.필드명 } 또는 ${ 공유속성명.맵키 } 형식으로 작성

>> 자동으로 getAttribute() 메소드가 호출되어 공유 인스턴스를 출력

 

${공유속성명.맵키} 형식으로 공유 인스턴스(Map)의 값을 반환받아 출력 
==> getAttribute() 메소드와 get() 메소드가 자동 호출

 

 

만약 공유 인스턴스가 존재하지 않을 경우 JS는 null을 출력하지만, EL은 아무것도 출력하지 않는다.

>> NullpointException이 절대 발생하지 않음

 

객체(클래스의 인스턴스)가 갖고 있는 필드값을 가져오기 위해서는 점 연산자(.) 활용 

 

car라는 이름으로 공유된 인스턴스가 값을 저장하는 게 아니라 점 연산자를 이용해 필드값을 출력하도록

 

 

 

 

포워드 이동을 할 시에

 

EL을 사용하지 않으면 getter() 메소드를 이용해  <%=>

EL을 사용하면 ${ 객체.객체.필드명 } 형식으로 이용 가능

 

 

그런대 대괄호 [ ] 를 써야 할 때가 있다. Array 또는 List를 쓸 때

 

 

EL 내장객체 - Scope Attribute

- 공유 인스턴스(page scope) = ${pageName}
- 공유 인스턴스(request scope) = ${requestName}
- 공유 인스턴스(session scope) = ${sessionName}
- 공유 인스턴스(application scope) = ${applicationName}

 

EL 표현식에서 공유 속성명을 사용할 경우 공유 인스턴스를 순차적으로 검색하여 출력
검색순서 : page >> request >> session >> application

 

EL 표현식에서 내장객체를 이용하여 공유 범위에 대한 명식적으로 표현하여 공유 인스턴스를 출력
=> pageScope, requestScope, sessionScope, pageScope

 

 

 

<%@page import="java.util.ArrayList"%>
<%@page import="java.util.List"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
	request.setAttribute("first", 20);	
	request.setAttribute("second", 10);	
	request.setAttribute("num", 15);
	
	Object object=null;
	request.setAttribute("object", object);
	
	String string="";
	request.setAttribute("string", string);
	
	String[] array={}; /* empty array : 비어있는 배열  ** 자바는 []를 쓰지만 여기선 {} */
	request.setAttribute("array", array);
	
	List<String>	list = new ArrayList<String>();
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<h1>EL 연산자 - 산술연산자, 관계연산자, 조건연산자</h1>
	
	<ul>	
		<!-- 산술연산자 -->
		<li>first = ${first }</li>
		<li>second = ${second }</li>
		<li>first * second = ${first * second }</li>
		<li>first / second = ${first / second }</li><!-- 결과가 정수가 아닌 실수로 출력됨 -->
		<li>first div second = ${first div second }</li><!-- 나누기는 div라는 연산자 키워드로도 표현 가능 -->
		<li>first % second = ${first % second }</li>
		<li>first mod second = ${first mod second }</li><!-- 퍼센티지는 mod라는 연산자 키워드로도 표현 가능 -->
		<li>first + second = ${first + second }</li>
		<li>first - second = ${first - second }</li>
		
		
		<!-- 관계연산자 ** boolean 값 반환 -->		
		<li>first > second = ${first > second }</li>
		<li>first gt second = ${first gt second }</li>
		<li>first < second = ${first < second }</li>
		<li>first lt second = ${first lt second }</li>
		<li>first >= second = ${first >= second }</li>
		<li>first ge second = ${first ge second }</li>
		<li>first <= second = ${first <= second }</li>
		<li>first le second = ${first le second }</li>
		<li>first == second = ${first == second }</li>
		<li>first eq second = ${first eq second }</li>
		<li>first != second = ${first != second }</li>
		<li>first ne second = ${first ne second }</li>
		
		<!-- 조건연산자 -->
		<li>num = ${num }</li>
		<li>first &gt; num && second &lt; num = ${first > num && second < num} </li>
		<li>first &gt; num && second &lt; num = ${first > num && second < num} </li>
		<li>first &lt; num || second &gt; num = ${first < num || second > num} </li>
		
		<!-- empty 연산자 : 공유 인스턴스가 없거나 비어있는 경우 true 제공하는 연산자 -->
		<li>object Empty = ${empty(object) }</li>
		<li>string Empty = ${empty(string) }</li>
		<li>array Empty = ${empty(array) }</li>
		<li>list Empty = ${empty(list) }</li>
	</ul>
	
</body>
</html>

 

 

 

참고한 글

https://kutar37.tistory.com/41