스펜서 개발블로그

#16. JSP&Servlet - EL & JSTL 본문

Server/JSP & Servlet

#16. JSP&Servlet - EL & JSTL

스펜서 2021. 5. 6. 23:37

EL (Expression Language)

자바 2.0버전에서 새로 추가된 스크립트 언어 라이브러리로 표현 언어를 더 간결하게 작성하고 속성 값들을 더 편리하게 출력하기 위해 제공된 언어이다.

 

WEB-INF의 lib 폴더 아래 jar 파일 추가하는 방법으로 해당 언어를 사용할 수 있다.

(수업 중 jstl-1.2.jar (

 

예시

Q. request 객체의 name 값을 출력하기

 

기존방식

<%= request.getParameter("name") %>

 

EL 언어

${ param.name}

 

 

EL 연산자 기호

 

EL 연산자 우선 순위

 

참고자료

 

삼항연산자란? (자바스크립트)

결과가 딱 True, false의 두 가지로 나눠질 때 if else문보다 간결하게 작성할 수 있는 조건문

 

EL 내장 객체

 

 

기존 JSP 출력 방법

<%
	String name = (String) request.getAttribute("name");
	int age = (Integer)	request.getAttribute("age");
	String phone = (String) request.getAttribute("phone");
	
%>
	
	name : <%= name %>
	age : <%= age %>
	phone : <%= phone %> --%>

 

 

el태그 출력 방법

 

1. Scope 출력하기

방법1.

	name : ${ sessionScope.name } <br> 	
	name : ${ requestScope.name } <br> 
	age : ${ requestScope.age } <br>
	phone : ${ requestScope.phone } <br>
    
방법2.

    name : ${ name } <br>
    age : ${ age } <br>
    phone : ${ phone } <br>

 

Scope는 생략이 가능하다.

(참고로 applicationScope > sessionScope > requestScope > pageScope 순서로 범위가 크다.)

 

이때 attribute는 기본적으로 작은 Scope에서 큰 Scope로 찾아가는 범위를 확대한다.

따라서 Scope를 명시하지 않을 경우, scope에서 page request session → application의 순서로 찾는다. 

 

참고로 배열에 있는 것도 출력이 가능하다.

    <%
    	ArrayList<String> items = (ArrayList<String>)request.getAttribute("items");
    %>
    
    <%
    	for(int i =0; i < items.size(); i++) { %>
    		<%= i %> : <%= items.get(i) %><br> <!-- 이 부분이 테이블의 <td> -->
    		
    <%  } %>

    0 : ${ items[0] }<br>
    1 : ${ items[1] }<br>
    2 : ${ items[2] }<br>

 

2. Parameter 출력하기

상품명 : ${ param.name }<br>
가격 : ${ param.price }<br>
제품번호 : ${ paramValues.no["0"] } 와 ${ paramValues.no["1"] }
옵션 : ${ (empty param.option ) ? "옵션없음" : param.option }<br>

'옵션' 출력문의 삼항 연산자에서 empty는 값이 null인지 아닌지 물어보는 역할을 한다.

 

 

JSTL (JSP Standard Tag Library)

JSP에서 사용하는 커스텀 태그로 공용으로 사용되는 코드의 집합을 사용하기 쉽게 태그화하여 표준으로 제공한 것을 말한다.

 

JSTL 태그의 종료

 

 

Comments