EL은 java bean의 property이다. jsp는 스크립트의값을 간결하고 편리하게 사용하기 위해 EL을 사용한다.
1.EL표현언어
EL 은 $ 와 {} 만 사용하여 값을 표현한다. 이때, {} 안에는 값으로 표현되는 것만 와야한다.
<%= x %>
처럼 쓰는대신 아래와 같이 쓸 수 있다.
${x}
: x 변수의 값을 출력
${arr[0]} 또는 ${arr['0']}
: 배열 arr 안의 0번째 값
👉<% out.print(arr[0]); %>
${member.name} 또는 ${member['name']}
: member 객체의 getName() 호출한다
👉 <%=member.getName()%>
2. EL 기본객체(내장객체) 11대
기본객체 | jsp 내장객체와 비교 |
pageContext | pageContext 객체 |
pageScope | page 객체 참조 |
requestScope | request 객체 참조 |
sessionScope | session 객체 참조 |
applicationScope | application 객체 참조 |
param | request.getParameter() |
paramValues | request.getParameterValues() |
header | request.getHeader() |
headerValues | request.getHeaderValues() |
cookie | request.getCookies() |
initParam | application.getInitParameter() |
📍예시
request.getParameter("data"); ~> ${ param.data }
request.getAttribute("data2"); ~> ${ requestScope.data2 }
session.getAttribute("id"); ~> ${ sessionScope.id }
application.getAttribute("address"); ~> ${ applicationScope.address }
Scope 는 생략가능하다 ${ sessionScope.id } == ${ id }
Scope 생략시 찾는 순서
pageScope > requestScope > sessionScope > applicationScope
🌿예제
1).페이지 Scope
<% pageContext.setAttribute("kor", "100"); %>
JSP : <%=pageContext.getAttribute("kor") %><br>
EL : ${pageScope.kor }<br>
EL : ${ kor }<br>
2) request Scope
JSP : <%=request.getAttribute("eng") %><br>
EL : ${requestScope.eng }<br>
EL : ${ eng }<br>
3) session Scope
<% session.setAttribute("mat", "300"); %>
JSP : <%=session.getAttribute("mat") %><br>
EL : ${sessionScope.mat }<br>
EL : ${ mat }<br>
4) application Scope
<% application.setAttribute("sci", "1000"); %>
JSP : <%=application.getAttribute("sci") %><br>
EL : ${applicationScope.sci }<br>
EL : ${ sci }<br>
3.표현언어에서 사용하는 연산자
123 + 5<br/>
<%out.print(456+7); %><br/>
표현식 : <%=789+5 %><br/>
표현언어 : ${100+3 }<br/>
더하기 : ${123+456 }<br/> <!-- 579 -->
빼기 : ${123-456 }<br/> <!-- -333 -->
곱하기 : ${123*456 }<br/><!-- 56088 -->
나누기 : ${123/456 }<br/><!-- 0.26973684210526316 -->
나누기 : ${5 div 6 }<br/> <!-- 0.8333333333333334 -->
나머지 : ${5 mod 6 }<br/><!-- 5 -->
2가 3보다 작다 : ${ 2 < 3 }<br/><!-- true -->
2가 3보다 크다 : ${ 2 gt 3 }<br/><!-- false -->
삼항연산자 : ${ (5 > 3)? 5 : 3 }<br/><!-- 5 -->
HOST : ${ header["host"] }<br/>
<!-- 리퀘스트 해더안에있는 host라는 속성값을 꺼내서 알아서 찍는다. -->
User-Agent : ${ header["User-Agent"] }<br/>
Accept : ${ header["Accept"] }<br/>
🌿사용자 정의 함수 사용
<?xml version="1.0" encoding="UTF-8"?>
<taglib xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
version="2.0">
<tlib-version>1.0</tlib-version>
<short-name>math</short-name>
<function>
<name>mysqrt</name>
<function-class>java.lang.Math</function-class>
<function-signature>double sqrt(double)</function-signature>
</function>
<function>
<name>add</name>
<function-class>net.el.Compute</function-class>
<function-signature>int add(java.lang.String, java.lang.String)</function-signature>
</function>
<function>
<name>sub</name>
<function-class>net.el.Compute</function-class>
<function-signature>int sub(java.lang.String, java.lang.String)</function-signature>
</function>
<function>
<name>mul</name>
<function-class>net.el.Compute</function-class>
<function-signature>int mul(java.lang.String, java.lang.String)</function-signature>
</function>
</taglib>
- 위 코드는 JSP에서 사용할 커스텀 태그 라이브러리(TLD, Tag Library Descriptor)이다. 이 TLD 파일은 JSP 페이지에서 Java의 Math 클래스와 net.el.Compute 클래스를 참조하여 sqrt, add, sub, mul 함수들을 정의하게 된다.
sqrt(25) : ${user:mysqrt(25)}
합 : ${user:add(3,5) }<br/>
차 : ${user:sub(3,5) }<br/>
곱 : ${user:mul(3,5) }
<%@taglib prefix="calc" uri="http://www.hth.com/test/mytld.tld" %>
- @taglib: calc라는 접두사(prefix)를 가진 TLD 파일을 사용하여 사용자 정의함수를 호출할 수 있도록 한다.
- uri : 사용자 정의 태그 라이브러리를 JSP 페이지에 통합하기 위한 경로를 HTTP 프로토콜을 사용하여 웹에서 TLD 파일을 참조하며 제공한다.
x : ${ param.x }와 y:${ param.y } 의 합 : ${calc:add(param.x, param.y) }
- 위 코드는 el5.jsp이며 아래 el5Form.jsp에서 입력받은 x와y파라미터를 각각 form에 담아 el5.jsp로 submit한다.
<form action="el5.jsp" method="post">
X : <input type="text" name="x" value="10" /><br />
Y : <input type="text" name="y" value="20" /><br />
<input type="submit" value="확인" />
</form>
'SPRING' 카테고리의 다른 글
[spring]스프링 부트 MVC구조 (3) | 2024.10.08 |
---|---|
[spring] 스프링 부트 Controller (0) | 2024.10.08 |
[spring] Spring Framework에서의 datasource 설정 및 Spring Boot migration (2) | 2024.10.04 |
[spring]Payload,Parameter, Attribute들의 관계 (2) | 2024.10.01 |
[spring]JSTL(JSP Standard Tag Library) (2) | 2024.10.01 |