ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Web:] 자바 표현언어 EL(Expression Language)
    비전공자 공부일기/:: WEB & Front-End 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  

     

     

    댓글

coding wanee