표현언어 EL
액션태그에 이어서 JSP에서 자바 코드를 없애려는 노력은 계속되었다. EL은 좀 더 편리하게 자바 표현식을 다루기 위해 JSP2.0부터 도입되었다. 데이터를 출력하는 역할을 한다.
특징
- 기존 표현식보다 편리하게 값을 출력한다.
- 변수와 여러 연산자를 포함할 수 있다.
- JSP 내장 객체에 저장된 속성 및 자바 빈 속성도 출력할 수 있다.
- EL 자체 내장 객체를 제공한다.
- JSP 생성 시 기본 설정으로는 EL을 사용할 수 없다.
페이지 디렉티브 태그에서 반드시 isELIgnored=false로 설정해야 한다.
형식
${표현식 또는 값}
${1+1 == 2 ? "hello" : "world"}
${number}
EL의 자료형과 연산자
자료형
- boolean
- 정수
- 실수
- 문자열('', "" 모두 가능)
- null
연산자
산술- '+'
- '-'
- / 또는 div
- % 또는 mod
비교
- == 또는 eq
- != 또는 ne
- < 또는 lt
- > 또는 gt
- <= 또는 le
- >= 또는 ge
논리
- && 또는 and
- || 또는 or
- ! 또는 not
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>
내장 객체
스코프 객체
- pageScope
- requestScope
- sessionScope
- applicationScope
예시
//리퀘스트 스코프로 바인딩
request.setAttribute("name","이땅콩");
- 기존의 jsp에서 request scope를 읽어오고 출력하던 방식
<% //바인딩된 데이터 읽기 String name = (String)request.getAttribute("name"); %> ... ... <!-- 출력 --> <h1>이름 : <%=name %> </h1>
2. EL의 스코프 내장객체를 이용하여 출력하는 방식
```html
<!-- getAttribute()로 읽을 필요 없이 바로 출력 -->
<h1> 이름 : ${requestScope.name} </h1>
간결하다.
요청 매개변수
- param
기존의 요청 매개변수
<% 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() 받지 않고 바로 출력할 수 있다.
EL로 컬렉션 다루기
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>
'Servlet-JSP' 카테고리의 다른 글
Model2 - MVC (0) | 2020.09.11 |
---|---|
JSTL (0) | 2020.09.11 |
액션 태그 (0) | 2020.09.11 |
JSP😇 (0) | 2020.09.11 |
서블릿 리스너 (0) | 2020.09.11 |