본문 바로가기
[ View ]/JSP

[ JSP ] EL(Expression Language)

by 환이s 2023. 3. 14.

오늘은 이전 포스팅에서 예재 언어로 자주 사용했던 EL(Expression Language)에 대해서 포스팅해 보겠습니다!

 

 

■  EL(Expression Language)란?

EL이란 JSP에서 자바 코드를 더욱 간결하게 하기 위해 만들어졌습니다. 어떻게 보면 완벽하게 자바 코드를 JSP에서 걷어내고 EL을 통해 가독성을 높이고자 한 것 같습니다.

 

즉, EL데이터를 표현하기 위한 언어입니다.

 

그럼 기본 문법을 알아봅시다.


■  EL(Expression Language)  기본 문법

 

EL의 기본 문법은 ${ 표현식 }입니다. 표현식에는 변수명, 속성명, 메서드 구조로 이루어져 있고, 정수형, 실수형, 문자열형, 논리형, NULL이 올 수 있습니다. 정리하자면 다음과 같습니다.

 

  • 값이 null 이어도 예외가 발생하지 않음
  • 표현언어는 항상 "${"로 시작해서 "}"로 끝남  ex) ${num}
  • 표현식 안에 연산식도 쓸 수 있음  ex) ${num + 1}

그럼 간단한 사칙연산 코드를 통해서 EL 문법을 알아봅시다.

 

<예제 코드>

<%@ 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>
<script src="../include/jquery-3.6.3.min.js"></script>
<%@ include file="../include/header.jsp" %>
</head>
<body>
<!-- 
1) EL의 특징 : JSP에 내장되어 있다. 코드가 깔끔하다. 조건문,반복문의 기능은 없다. 간단한 계산은 가능
-->

<!-- EL은 간단한 사칙연산 및 삼항연산등은 가능하다. -->
${2 + 5} <br>
${4 / 5} <br>
${7 mod 5} <br>   <!-- 나머지 계산 -->
${2 < 3} <br>
${3.1 le 3.2} <br> <!-- LEss(작다) -->
<!-- 삼항연산자 -->
${(5>3) ? 5 : 3} <br>


</body>
</html>

 

EL조건문, 반복문의 기능은 없고 간단한 계산은 가능하기 때문에 조건문이나 반복문 등의 제어문과 복잡한 연산 기능을 할 때JSTL을 응용합니다.

 

따라서 EL은 단독으로 쓰이지 않고 JSTL과 혼합해서 사용합니다.

 

 

EL 언어에 대해서 좀 더 자세하게 이해하기 위해 JSP 기본 문법과 비교해서 알아봅시다.

 

<예제 코드>

<%@ 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>
<script src="../include/jquery-3.6.3.min.js"></script>
<%@ include file="../include/header.jsp" %>
</head>
<body>
<%-- <% JSP 기본 문법
String name= request.getParameter("name");
if(name ==null){
	name ="";
}
%>
 --%>

<!-- EL 기법 -->
<!-- form태그에 action="url"을 생략하면 자신의 페이지가 호출되어 실행된다. -->
<form method="get" >
이름 : <input name="name" value="${param.name}">
<input type="submit" value="확인">
</form>

이름 : ${param.name}
</body>
</html>

위 코드만 봐도 코드가 깔끔해지는 걸 볼 수 있습니다.  참고로 Attribute 형식에는 ${attr}로 사용하고. attr자바에서는 변수 이름이고, EL에서는 Attribute의 이름으로 해석됩니다.

 

Attributeapplication > session > request > page 순으로 작은 범위에서 큰 범위로 찾게 됩니다.

 

또한 위 예제 코드에서 사용했던 ${param.name}폼, 쿼리스트링 변수이며, 기존 문법으로는 request.getParameter입니다.

 

그럼 마지막으로 한 가지 비교 예제 코드를 통해 EL과 JAVA 코드의 차이점을 확인하고 포스팅을 마무리하겠습니다.

예제 코드로는 오랜만에 HashMap을 응용하여 과일 이름을 출력하는 코드로 알아봅시다.

 

<예제 코드>

<%@ 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>
<script src="../include/jquery-3.6.3.min.js"></script>
<%@ include file="../include/header.jsp" %>
</head>
<body>
<%@ page import="java.util.HashMap" %>

<%
HashMap<String, String> map = new HashMap<>();
map.put("포도", "grape");
map.put("오렌지", "orange");
map.put("바나나", "banana");
map.put("사과", "apple");
request.setAttribute("map", map);
%>

<jsp:forward page="ex06_result.jsp"></jsp:forward>
</body>
</html>

mapkey, value를 각각 입력해서 put으로 담아주고 result 페이지에서 결과를 출력하려고 합니다. 위 코드에서 <jsp:forward>다른 페이지로 제어를 이동시킬 때 사용하는 태그인데,  이전 포스팅에서 알아봤던 액션 태그입니다.

 

JSP 액션 태그에 대해서 궁금하신 분들은 아래 포스팅을 참고해 봅시다.

 

[ JSP ] 액션 태그

 

[ JSP ] 액션 태그

오늘은 JSP 페이지에서 JAVA 코드를 줄이기 위한 방법으로 제공되는 액션 태그에 대해서 알아봅시다. ■ 액션 태그란? 액션 태그는 JSP 페이지에서 자바 코드를 줄이기 위한 방법으로 제공되는 태

drg2524.tistory.com

 result.jsp 페이지도 알아봅시다.

 

<예제 코드>

<%@ 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>
<script src="../include/jquery-3.6.3.min.js"></script>
<%@ include file="../include/header.jsp" %>
</head>
<body>
<%@ page import="java.util.HashMap" %>

<h2>java 코드로 출력</h2>
<%
HashMap<String,String> map=(HashMap<String,String>)request.getAttribute("map");
for(String f : map.keySet()){ //keyset()은 key들을 배열로 만들어 가져옴
	out.println(f+":"+ map.get(f) + "<br>"); //map.get("변수명"), map.set("변수명",값)
}

%>

<hr>

<h2>EL/JSTL 출력</h2>
${map["포도"]} <br>
${map["오렌지"]} <br>
${map["바나나"]} <br>
${map["사과"]} <br>
</body>
</html>

이전 포스팅부터 말씀드렸지만 유틸 패키지는 꼭 page import를 해주셔야 합니다. 

<%@ page import="java.util.HashMap" %>

그럼 결과를 확인해 봅시다.

 


마치며 

 

오늘은 EL에 대해서 알아봤습니다. 

다음 포스팅은 EL과 혼합해서 사용하는 JSTL로 뵙겠습니다.

 

 

728x90

'[ View ] > JSP' 카테고리의 다른 글

[ JSP ] Mybatis 개념 및 설정  (0) 2023.03.16
[ JSP ] JSTL(Jsp Standard Tag Library)  (2) 2023.03.15
[ JSP ] Cookie  (0) 2023.03.11
[ JSP ] JDBC 암호화  (0) 2023.03.08
[ JSP ] JAVA Bean  (0) 2023.03.07