EL은 표현언어로 JSP의 문법을 보완한다.
JSP에서 java 코드를 <% %>에 넣어서 쓰는데, 그것도 싫다
더 쉽게 쓸거다 -> EL을 사용함
자바 코드보다 더 심플함
JSP는 주로 결과 출력에 사용하고 로직은 servlet에서 다루니까 EL을 적절히 사용하면 jsp를 편리하게 작성 가능
${}에 java 코드를 넣어서 사용하면 된다
예제에서 보이듯이 jsp에서 사용할 때 그냥 html 코드 중간에 넣을 수 있다.
그냥 java코드를 사용하는 것 보다 더 깔끔하게 jsp 파일을 사용할 수 있다.
마지막은 Student.name으로 사용하면 Student 객체의 getName을 호출한다고 생각하면 된다.
EL언어를 비활성화 할 수 도 있다.
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<%
//각 scope에 값을 넣어준다
pageContext.setAttribute("p1", "page scope value");
request.setAttribute("r1","request scope value");
session.setAttribute("s1","session scope value");
application.setAttribute("a1","application scope value");
//EL을 이용해 화면에 출력할 것임
%>
<body>
${pageScope.p1}<br>
${requestScope.r1}<br>
${sessionScope.s1}<br>
${applicationScope.a1}<br>
<!-- 변수명이 겹치지 않으면 변수명만 이용해서도 참조 가능 -->
${p1}<br>
EL을 사용하기 위해 ${}안에 java 코드를 넣어서 화면에 출력한다
각 scope에 접근해서 값을 참조한다.
이 때, 변수명이 p1, r1, s1, a1으로 겹치지 않기 때문에 굳이 scope객체를 통해 참조하는 것이 아닌 바로 p1 이렇게도 참조가 된다.
변수명이 겹치면 작은 scope부터 찾아서 찾아내기는 한다.
하지만 가독성을 위해서는 scope를 통해 참조하는 것이 좋음!
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<%
//requestScope에 k, 10넣음
request.setAttribute("k",10);
request.setAttribute("m",true);
%>
<body>
k : ${k}<br>
k+5 : ${k+5}<br>
k/5 : ${k div 5}<br>
k < 5 : ${k<5 }<br>
</body>
</html>
간단한 연산들을 해보는 코드
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<%@ page isELIgnored = "true" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<%
//requestScope에 k, 10넣음
request.setAttribute("k",10);
request.setAttribute("m",true);
%>
<body>
k : ${k}<br>
k+5 : ${k+5}<br>
k/5 : ${k div 5}<br>
k < 5 : ${k<5 }<br>
</body>
</html>
맨위에 isELIgnored를 true로 설정해준다면 ?
EL코드가 무시되어 이렇게 표시된다.
즉 EL로 인식하지 않고 그냥 문자로 인식하게 하고 싶으면 isELIgnored를 할용할 수 있다.