EL문과 JSTL
- 라이브러리로 자바 구문을 만들어 놓고 필요할 때마다 꺼내 쓰면 되기 때문에 유지보수에 편하다.
- JSP 페이지 내에서 자바코드와 HTML코드(태그형태)가 섞여 있으면 가독성이 떨어진다.
- EL문과 JSTL문을 사용하면 HTML과 태그형태로만 구성된 일관된 소스코드를 볼 수 있다.
EL문
Expression Language
값을 간결하고 간편하게 출력, 표현할 수 있도록 해주는 언어
JSP EL
<%=name%> ${name}
<%=3+5%> ${3+5}
[연산자]
/ div ${10/3}, ${10 div 3}
% mod
&& and
|| or
! not
< lt
> gt
<= le
>= ge
== eq
!= ne
empty 뒤에 올 값이 비어있으면 true / 아니라면 false
${empty data} : data의 값이 없으면 true
session.getAttribute("loginUser") == null
${empty loginUser}
el_test1.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>el_test1</title>
</head>
<body>
<%-- <%=10+20 %> --%>
\${10+20} : ${10+20 }<br>
\${10>20} : ${10>20 }<br>
<%
//String data = "Hello";
pageContext.setAttribute("data", "Hello");
request.setAttribute("data", "Bye");
session.setAttribute("data", "신기하다");
%>
<hr>
<%--
아래의 data는 변수명을 의미하는 것이 아니라 setAttribute() 할 때의 Key값을 의미한다.
아래는 세팅되어 있는 attribute를 찾는 순서
pageContext -> request -> session -> application
--%>
<%=pageContext.getAttribute("data")%> / ${data}<br>
\${data} : ${data}<br>
//request에 있는 data를 꺼낼 때
\${requestScope.data} : ${requestScope.data}<br>
//session에 있는 data를 꺼낼 때
\${sessionScope.data} : ${sessionScope.data}<br>
</body>
</html>
el_test2.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>el_test2</title>
</head>
<body>
<%
Cookie cookie = new Cookie("today","23/08/29");
response.addCookie(cookie);
%>
<form action="el_test3.jsp" method="post">
아이디 <input type="text" name="id"><br>
비밀번호 <input type="password" name="pw"><br>
취미<br>
게임 <input type="checkbox" name="hobby" value="게임"><br>
영화 <input type="checkbox" name="hobby" value="영화"><br>
<input type="submit">
</form>
</body>
</html>
el_test3.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<% request.setCharacterEncoding("UTF-8"); %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>el_test3</title>
</head>
<body>
//파라미터로 날아온 id를 꺼낼 때는 param.id
아이디 : ${param.id}<br>
비밀번호 : ${param.pw}<br>
<%-- <%=request.getParameterValues("hobby")[0] %> --%>
//paramValues는 배열로 출력됨 -> 꺼내올 방 번호를 적어줌
취미 : ${paramValues.hobby[0]} / ${paramValues.hobby[1]}<br>
이름 : ${param.name == null ? "이름 없음" : param.name }<br>
today 쿠키값 : ${cookie.today.value}<br>
coffee 쿠키값 : ${empty cookie.coffee.value ? "쿠키없음" : cookie.coffee.value}<br>
</body>
</html>