수업 내용/[JSP] JSP
[JSP] 07. EL (Expression Language)
프롯
2023. 5. 23. 19:09
EL 은 자바 빈의 프로퍼티, 값을 JSP의 표현식 <%= %>이나 액션 태그 <jsp:useBean>를 사용하는것 보다 쉽게 출력할 수 있게 해주는 태그이다.
표기법 : ${ }
다른 태그보다 훨씬 간단하다.
다른 표현식과의 비교
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
//1~100 값의 총 합 출력
int total = 0;
for(int i = 0; i< 101; i++){
total += i;
}
pageContext.setAttribute("TOTAL", total);
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>1~100 사이의 모든 정수의 합은 <%=total %></h1>
<h1>1~100 사이의 모든 정수의 합은 <%=pageContext.getAttribute("TOTAL") %></h1>
<h1>1~100 사이의 모든 정수의 합은 ${TOTAL }</h1>
</body>
</html>
EL 태그의 간편함을 알 수 있다.
속성의 저장 공간과 EL 태그 사용시 우선순위
setAttribute 메소드를 사용하여 속성이 저장되는 공간에는
pageContext, request, session, application이 있다.
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>EL 에서 사용되는 4가지 속성의 우선 순위</h1>
<%
pageContext.setAttribute("car", "s-class");
request.setAttribute("car", "e-class");
session.setAttribute("car", "d-class");
application.setAttribute("car", "a-class");
%>
<ul>
<li>그냥 호출 : ${car }</li>
<li>pageContext : ${pageScope.car }</li>
<li>request : ${requestScope.car }</li>
<li>session : ${sessionScope.car }</li>
<li>application : ${applicationScope.car }</li>
</ul>
</body>
</html>
결과
범위가 좁아질수록 우선순위가 높다.
application은 거의 사용하지 않는다.
데이터를 파라미터로 받아올 때
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="Ex03_EL2.jsp">
<h1>좋아하는 음식 선택</h1>
<p>아이디 : <input type="text" name="id"></p>
<input type="checkbox" name ="fav" value="한식">한식
<input type="checkbox" name ="fav" value="중식">중식
<input type="checkbox" name ="fav" value="일식">일식
<input type="checkbox" name ="fav" value="양식">양식
<input type="checkbox" name ="fav" value="기타">기타<br>
<input type="submit" value="전송">
</form>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
아이디 : ${param.id } <br> <!-- 파라미터로 받아오므로 -->
좋아하는 음식 : ${paramValues.fav[0] }
${paramValues.fav[1] }
${paramValues.fav[2] }
${paramValues.fav[3] }
${paramValues.fav[4] }<br>
</body>
</html>
(속성이 아닌) 파라미터로 데이터를 받아올 때는 param. 을 붙여준다. (출처를 남긴다고 생각하자)
checkbox 데이터를 submit 할때는 배열로 받아오는걸 기억하자.
EL 추가 문법
<%@page import="java.util.ArrayList"%>
<%@page import="java.util.List"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
List<Integer> list = new ArrayList<>();
list.add(7);
list.add(3);
list.add(5);
request.setAttribute("LIST", list);
%>
<jsp:forward page="Ex07_EL2.jsp"/>
</body>
</html>
<%@page import="java.util.ArrayList"%>
<%@page import="java.util.List"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>request의 속성으로 저장된 list</h1>
<ul>
<li>${LIST[0] }</li>
<li>${LIST[1] }</li>
<li>${LIST[2] }</li>
<li>합 : ${LIST.stream().sum() }</li>
<li>평균 : ${LIST.stream().average().get() }</li>
<li>최대 값 : ${LIST.stream().max().get() }</li>
<li>최소 값 : ${LIST.stream().min().get() }</li>
<li>정렬 : ${LIST.stream().sorted().toList() }</li>
<li>길이 : ${LIST.stream().count() }</li>
</ul>
</body>
</html>
.stream() 을 뒤에 붙여
배열의 합, 평균, 최대/최소, 정렬, 길이 등을 구할 수 있다.
EL 태그 내 연산
EL 태그 내에서 논리연산, 산술연산 등이 가능하다.
산술연산은 기호가 똑같아서 따로 알아둘 필요 없다.
비교 연산은 알던 기호를 써도 되고, 아래의 다른 기호를 사용해도 된다.
1) ==, eq
2) !=, ne
3) <, lt
4) >, gt
5) <=, le
6) >=, ge
empty 연산자도 알아두자
ArrayList에 null 또는 ""(빈 문자열)이 있다면 true 리턴
${empty list }