EL(Expression Language)는 JSP 스크립트 태그를 좀 더 편하게 해주는 언어이다. 이 언어는 jsp자체로 제공하진 않고 라이브러리를 이용해야한다.
먼저 Maven responsitory를 들어가보자.
여기서 jstl이라고 검색하면 두번째에, 제일 많은 유저들이 사용한 jstl을 다운받아 사용한다.
다운받은 jar 파일을 Webcontents의 lib에 저장하면 bulid path 없이 즉시 사용 가능하다.
이제 예시를 보자.
-elTest1.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
//Page -> request -> session -> application
request.setAttribute("username", "ssar");
session.setAttribute("usarname", "1234");
RequestDispatcher dis=request.getRequestDispatcher("elTest2.jsp");
dis.forward(request, response);
%>
-elTest2.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
//String username=(String) request.getAttribute("username");
//String password=(String) session.getAttribute("password");
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>elTest2.jsp</title>
</head>
<body>
유저네임 : ${username }<br/>
패스워드 : ${sessionScope.password }<br/>
</body>
</html>
Test1의 값을 받는 법이 두 가지가 있다. 다음과 같이 el을 통해 받는 방법과 Attribute를 통해 받는 방법이 있다.
결과값을 보자.
다음과 같이 EL의 경우 값이 비었을 경우 공백을 반환한다.
또, 둘 다 요청값과 세션 중 요청값을 더 우선순위로 반환한다.
- elTest3.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>
</head>
<body>
<form action="elTest4.jsp" method="post">
<input type="email" name="email" value="ssar@nate.com"/>
<button>전송</button>
</form>
</body>
</html>
-elTest4.jsp
<%@page import="java.io.BufferedReader"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
//String email=request.getParameter("email");
BufferedReader br=request.getReader();
String input=null;
StringBuilder sb=new StringBuilder();
while((input=br.readLine())!=null){
sb.append(input);
System.out.println(input);
}
String email=sb.toString();
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>elTest4.jsp</h1>
<hr/>
이메일 : <%=email %>
</body>
</html>
한 쪽은 getParameter로, 다른쪽은 el로 받을 때이다.
오른쪽의 경우 key=value의 형태에서 value 값만 리턴 받지만 el의 경우 key=value의 형태로 리턴받는다.
-elTest5.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>
</head>
<body>
<a href="elTest6.jsp?money=10000">전송2</a>
</body>
</html>
-elTest6.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>
</head>
<body>
<h1>elTest6.jsp</h1>
<hr/>
<%
String money=request.getParameter("money");
%>
금액: <%=money %>
<script>
var num=100;
var m='${param.money}';
console.log(m);
var sum=num+${param.money};
console.log(sum);
</script>
</body>
</html>
el의 경우 값을 다음과 같이 uri로 받을 경우 단순히 ${money}로 값을 null을 띄운다.
따라서, uri의 파라미터를 받아서 값을 리턴받아야 한다. 이것을 해주는 명령어가 param이다.
param으로 받은 숫자의 경우는 Parameter로 받는 값과 다르게 온전한 타입으로 값을 리턴받기 때문에 이후에 그 형태의 특성을 살릴 수도 있다. (ex. 숫자 계산)