액션태그에 이어서 JSP에서 자바 코드를 없애려는 노력은 계속되었다. EL은 좀 더 편리하게 자바 표현식을 다루기 위해 JSP2.0부터 도입되었다. 데이터를 출력하는 역할을 한다.
${표현식 또는 값}
${1+1 == 2 ? "hello" : "world"}
${number}
산술
비교
논리
empty
empty '값' : 값이 null이거나 빈 문자열이면 true를 반환한다.
예시
${empty num1}
조건
삼항연산자
수식 ? 값 : 값
예시
${1+1 == 2 ? 'hello' : 'world'}
_${empty ..} 예제
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" %>
<jsp:useBean id="m1" class='pro13.sec01.MemberBean' />
<jsp:setProperty name='m1' property='name' value='콩콩'/>
<jsp:useBean id="m2" class='java.util.ArrayList'/>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>empty연산자 테스트</h1>
<h2 style='color:red;'>null이면 true</h1>
<h2 style='color:blue;'>null이 아니면 false</h1>
<h3><p>\${empty m1} : ${empty m1 }</p></h3>
<h3><p>\${not empty m1} : ${not empty m1 }</p></h3>
<h3><p>\${empty m2} : ${empty m2 }</p></h3>
<h3><p>\${not empty m2} : ${not empty m2 }</p></h3>
</body>
</html>
예시
//리퀘스트 스코프로 바인딩
request.setAttribute("name","이땅콩");
<%
//바인딩된 데이터 읽기
String name = (String)request.getAttribute("name");
%>
...
...
<!-- 출력 -->
<h1>이름 : <%=name %> </h1>
<!-- getAttribute()로 읽을 필요 없이 바로 출력 -->
<h1> 이름 : ${requestScope.name} </h1>
간결하다.
기존의 요청 매개변수
<%
String id = request.getParameter("id");
String pwd = request.getParameter("pwd");
String name = request.getParameter("name");
String email = request.getParameter("email");
%>
...
...
<td><%=id %></td>
<td><%=name %></td>
<td><%=email %></td>
EL 내장객체를 이용한 매개변수
<td>${param.id }</td>
<td>${param.name }</td>
<td>${param.email }</td>
getParameter() 받지 않고 바로 출력할 수 있다.
HashMap 다루는 예제다.
HashMap에 직접 매핑해서 꺼내는 방법과
Map안에 List를 저장해서 읽는 방법.
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"
import="pro13.sec01.MemberBean, java.util.*"
%>
<%
request.setCharacterEncoding("utf-8");
%>
<!-- MemberBean객체 생성. 파라미터로 들어오는 값을, MemberBean 속성에 맞춰서 매핑 -->
<jsp:useBean id="m1" class="pro13.sec01.MemberBean" />
<jsp:setProperty name="m1" property="*"/>
<!-- ArrayList, HashMap 생성-->
<jsp:useBean id="memberList" class="java.util.ArrayList" />
<jsp:useBean id="memberMap" class="java.util.HashMap" />
<%
//map객체에 회원 정보 저장
memberMap.put("id", "jojo");
memberMap.put("pwd", "1234");
memberMap.put("name", "김조조");
memberMap.put("email", "jojo@naver.com");
//MemberBean객체 생성하고, 초기화
MemberBean m2 = new MemberBean("kal", "1234","김갈량","kal@daum.com");
//리스트에 담는다.
memberList.add(m1);
memberList.add(m2);
//리스트를 맵에 담는다.
memberMap.put("memberList", memberList);
System.out.println("memberList : " + memberList);
System.out.println("memberMap.memberList[1].id: " + memberMap.get("memberList"));
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>EL로 HashMap다루기</title>
</head>
<body>
<table border='1' align='center'>
<tr align='center' bgcolor='#99ccff'>
<td width='20%'><b>아이디</b></td>
<td width='20%'><b>비밀번호</b></td>
<td width='20%'><b>이름</b></td>
<td width='20%'><b>이메일</b></td>
</tr>
<tr align='center'>
<!-- map객체에 매핑한 회원 정보 -->
<td>${memberMap.id }</td>
<td>${memberMap.pwd }</td>
<td>${memberMap.name }</td>
<td>${memberMap.email }</td>
</tr>
<tr align='center'>
<!-- 회원가입 페이지로부터 받은 회원 정보 -->
<td>${memberMap.memberList[0].id }</td>
<td>${memberMap.memberList[0].pwd }</td>
<td>${memberMap.memberList[0].name }</td>
<td>${memberMap.memberList[0].email }</td>
</tr>
<tr align='center'>
<td>${memberMap.memberList[1].id }</td>
<td>${memberMap.memberList[1].pwd }</td>
<td>${memberMap.memberList[1].name }</td>
<td>${memberMap.memberList[1].email }</td>
</tr>
</table>
</body>
</html>