EL (Expression Language) 표현언어 ?
EL(Expression Language: 표현언어)란, 표현식 또는 액션 태그를 대신해서 ‘값’을 표현하는 언어입니다.
Java 도 아니고, JSP 도 아니지만, JSP를 보완하는 스크립트 언어입니다.
<%= value %> -> ${value}
표현식(익스페레션) EL
EL사용 이점:
자바코드로 나타내기 번거로운 값(특히 속성값) 표현 단순화
액션태그, JSTL 등과의 조합에서도 코딩 간결.
EL 의 기본구문
${식}
- ‘식’ 부분에는 EL이 정의한 문법에 따라 값을 표현하는 식이 온다. (액션태그 또는 커스텀태그의 속성 값, 표현식)
- JSP의 스크립트 요소(스크립트릿, 표현식, 선언부)를 제외한 나머지 부분에서 사용될 수 있다.
EL 에서 사용가능한 연산자
산술 : +, -, *, / %
관계형 : ==, != <, >, <=, >=
조건 : a? b : c
논리 : &&, ||
2. 액션태그로 사용되는 EL
EL로 스크릿트릿의 Java변수값 표현은 안되나, 액션태그 등의 값은 출력 가능.
<jsp:getProperty name="member" property="name"/>
↓
${member.name}
-> member.getName() 값을 표현하게 된다. 단, 그 결과가 null 이면 표현하지 않는다
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<jsp:useBean id="dto" class="com.lec.beans.WriteDTO" scope="page" />
<jsp:setProperty name="dto" property="uid" value="123"/>
<jsp:setProperty name="dto" property="subject" value="제목입니다"/>
<jsp:setProperty name="dto" property="name" value="작성자입니다"/>
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>EL - Bean</title>
</head>
<body>
uid : <%= dto.getUid() %><br>
제목 : <%= dto.getSubject() %><br>
작성자 : <%= dto.getName() %><br>
내용 : <%= dto.getContent() %><br>
<hr>
uid : <jsp:getProperty name="dto" property="uid"/><br>
제목 : <jsp:getProperty name="dto" property="subject"/><br>
작성자 : <jsp:getProperty name="dto" property="name"/><br>
내용 : <jsp:getProperty name="dto" property="content"/><br>
<hr>
uid : ${dto.uid }<br> <%-- dto 객체의 getUid() 값 --%>
제목 : ${ dto.subject }<br>
작성자 : ${ dto.name }<br>
내용 : ${dto.content }<br> <%-- 값이 null 이면 표현안함 --%>
dto : ${dto }<br> <%-- dto 객체의 toString() 값 --%>
regdate : ${dto.regDate }<br>
xxx : ${dto.xxx }<br> <%-- dto.getXxx() 값--%>
<%-- 해당 getter 가 없으면
PropertyNotFoundException 발생
--%>
<%
request.setAttribute("aaa", 100);
session.setAttribute("aaa", 100);
pageContext.setAttribute("aaa", 100);
application.setAttribute("aaa", 100);
%>
<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>
</body>
</html>
3. EL 의 내장 객체
EL 도 11개의 기본 내장 객체를 제공한다.
값이 존재하지 않을 경우 null을 출력하지 않고 아무것도 출력하지 않는다.
pageContext : JSP의 page 기본 객체와 동일하다.
pageScope : pageContext 기본 객체에 저장된 속성의 <속성, 값> 매핑을 저장한 Map 객체
requestScope : request 기본 객체에 저장된 속성의 <속성, 값> 매핑을 저장한 Map 객체
sessionScope : session 기본 객체에 저장된 속성의 <속성, 값> 매핑을 저장한 Map 객체
applicationScope : application 기본 객체에 저장된 속성의 <속성, 값> 매핑을 저장한 Map 객체
param : 요청 파라미터의 <파라미터이름, 값> 매핑을 저장한 Map 객체, 타입은 String (request.getParameter(이름)의 결과와 동일)
paramValues : 요청 파라미터의 <파라미터이름, 값 배열>매핑을 저장한 Map 객체, 타입은 String[] (request.getParameterValues(이름)의 결과와 동일)
header : 요청 정보의 <헤더이름, 값> 매핑을 저장한 Map 객체 (request.getHeader(이름)의 결과와 동일)
headerValues : 요청 정보의 <헤더이름, 값 배열> 매핑을 저장한 Map 객체 (request.getHeaders(이름)의 결과와 동일)
cookie : <쿠키 이름, Cookie> 매핑을 저장한 Map 객체 (request.getCookies()로 구한 Cookie 배열로 부터 매핑을 생성)
initParam : 초기화 파라미터의<이름, 값> 매핑을 저장한 Map 객체 (application.getInitParameter(이름)의 결과와 동일)
${member} => request.getAttribute("member");
${param.name} => request.getParameter("name");
${paramValues.name}
=> request.getParameterValues("name");
${paramValues.name[0]}
=> request.getParameterValues("name")[0];
저장 객체의 attribute에 자동 접근하는데 자동검색 순위는
page → request → session → application 순이다.
'JSP' 카테고리의 다른 글
[JSP] Authentication - 회원가입 (0) | 2022.04.07 |
---|---|
[JSP] JSTL(JSP Standard Tag Library) (0) | 2022.04.06 |
[JSP] MVC model2 (0) | 2022.04.06 |
[JSP] DAO, DTO (0) | 2022.04.06 |
[JSP] JBDC (0) | 2022.04.06 |