EL Tag(Expression Language) :  web 부분에서 java와 혼용하지 않기 위한 태그

형식 :  ${ 값, 연산식 }   

 

EL Tag와 Java 비교 사용 예시

<% // Java
   String str1 = "hello";
   request.setAttribute("_str", str1);
   String s = (String)request.getAttribute("_str");      /* 짐싸 */
%>
str1 = <%=s %>

<% // EL
   String str2 = "hi";
   request.setAttribute("_str", str2);
%>
str2 = ${ _str }

Java는 표현식(<%= %>)을 사용하여 value를 불러온다. (java는 getAttribute필요)

EL tag는 setAttribute에서 바로 value를 꺼내올 수 있다.

 

<%='값' %>
<br>
${ '값' }
<br>
${ 2 + 3 }

 

 

EL tag : empty 사용예시

<%
Object obj = new String("world");
if(obj != null) {
%>
   <p>obj는 null이 아닙니다</p>
<%
}
%>

<%
   request.setAttribute("world", obj);
%>
obj = ${ empty world }     <!-- false -->
<br>
obj = ${ not empty world } <!-- true -->

empty : boolean형 반환 obj가 비었니? 안비었니?

 

 

Java class 예시

package dto;

import java.io.Serializable;

public class MemberDto implements Serializable{

   private String message;
   
   public MemberDto() {
   }

   public String getMessage() {
      return message;
   }

   public void setMessage(String message) {
      this.message = message;
   }
   
}

 

 

<%
MemberDto dto = new MemberDto();
dto.setMessage("hello EL");

request.setAttribute("mem", dto);
%>

message:<%=dto.getMessage() %>
<br>
message:${ mem.message }

EL tag는 무조건 setAttribute를 거쳐야한다.

 

<%
	List<MemberDto> mlist = new ArrayList<>();

	MemberDto m = new MemberDto();
	m.setMessage("안녕");
	mlist.add(m);
	
	m = new MemberDto();
	m.setMessage("하이");
	mlist.add(m);
%>

<%=mlist.get(0).getMessage() %>
<br>

<%	
	request.setAttribute("mlist", mlist);
%>

${ mlist[1].message }
<br><br>
<input type="text" value="${ mlist[1].message }">
<p>${ mlist[1].message }</p>

 

배열 value 가져오는 예시

<%
   String array[] = { "hello", "world" };
   request.setAttribute("array", array);
%>

<%=array[0] %>
<br>
${ array[0] }
<br>
${ array[1] }

 

List value 가져오는 예시

<%
   List<String> list = new ArrayList<>();
   list.add("Tiger");
   list.add("Lion");
%>
<%=list.get(1) %>

<%
   request.setAttribute("mylist", list);
%>
<br>
${ mylist[1] }

Core Tag : 변수나 제어문을 사용할 수 있게 해주는 태그

 

Core Tag 사용시 jstl-1.2.jar, standard-1.1.2.jar파일이 있어야 한다.

 

 

 

Core Tag는 필히 page지시문에 jstl선언해주어야한다.

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

 

Core Tag와 Java 비교 사용예시

<%
   String data = "Core tag 입니다";
   request.setAttribute("_data", data); // 왼 : EL , 오: JAVA
%>

${ _data }      <!-- EL -->
<br>

<c:set var="_data" value="Core tag 입니다"/>
<!-- 위와 동일 -->
<c:out value="${ _data }"></c:out>
<br><br>

<!-- if -->
<%
	request.setAttribute("count", "10");
%>

<%
	String scount = (String)request.getAttribute("count");
	int count = Integer.parseInt(scount);
	if(count >= 10){
%>
	<p>count : <%=count %></p>
<%}%>


<!-- core tag는 자동으로 숫자로 해준다? -->
<c:if test="${count >= 10}">
	<p>count : <c:out value="${count}"></c:out>
	<p>count : ${count}</p>
</c:if>

<%
	request.setAttribute("name", "홍길동");
%>
<%
	String name = (String)request.getAttribute("name");
	if(name.equals("홍길동")){
%>
	<p>이름 : <%=name %></p>
<%} %>


<c:if test="${name == '홍길동' }">
<%-- <c:if test="${name eq '홍길동'}"> --%>
	<p>이름 : ${name}</p>
</c:if>


<!-- for -->
<%
	for(int i = 0; i < 10; i++){
%>
	<p><%=i %></p>
<%} %>

<!-- varStatus="i" : 밖으로 나가는 값 -->
<c:forEach begin="0" end="9" step="1" varStatus="i">
	<p>${i.index}</p>
</c:forEach>

<br><br>


<%
   List<MemberDto> list = new ArrayList<>();
   
   MemberDto dto = new MemberDto();
   dto.setMessage("hello");
   list.add(dto);
   
   dto = new MemberDto();
   dto.setMessage("world");
   list.add(dto);
   
   request.setAttribute("mylist", list);
%>
<%-- 데이터만 다 돌리고 싶을땐 :  var="mem" items="${mylist}" 이것만 있으면 된다. --%>
<c:forEach begin="0" end="1" var="mem" items="${mylist}" varStatus="i">
   <p>index:${i.index} data:${mem.message}</p>
</c:forEach>

 

c:set 변수의 선언
var 변수명
value 변수에 넣을 값
c:out 변수 출력
value 변수에 넣을 값
c:if 조건문 (if문)
test 조건 판별식
value 변수에 넣을 값
c:forEach 반복문 (for문)
begin 시작값
end 종료값
step 증감값
var 현재 아이템의 변수명
varStatus 반복상태의 값을 지닌 변수
items 반복데이터가 있는 아이템명

 

+ Recent posts