JSP Expression Language
※ Expression Language?
EL이라고 부르며 값을 웹 페이지에 표현하는데 사용하는 태그 종류이다. EL tag가 나온 이유는 출력할 데이터를 조금 더 직관적이고 쉽게 얻기 위해서 만들어졌다.
페이지에 입력한 데이터를 얻기 위해서 JSP 내장 객체인 request를 통해 입력값을 얻거나, DTO의 속성 값을 얻어오기 위해 useBean을 생성하고 jsp getPorperty 태그를 이용해서 값을 얻을 수 있었다.
이를 EL tag로 표현하면 ${ param.속성이름 } or ${ param [ "속성 이름" ] } 로 간단하게 나타낼 수 있다.
* 참고사항 : 배열을 받아오고자 할 때는 paramValues를 이용하여 값을 가져올 수 있다.
* loginParam.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>로그인</title>
</head>
<body>
<form method="get" action="testParam.jsp">
<input type="text" name="id" placeholder="아이디"><br>
<input type ="password" name="pwd" placeholder="비밀번호"><br>
<input type="submit" value="로그인">
</form>
</body>
</html>
* testParam.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>파라미터 출력</title>
</head>
<body>
<h3>request 객체로 입력한 정보 출력</h3>
아이디 : <%= request.getParameter("id") %> <br>
비밀번호 : <%= request.getParameter("pwd") %> <br><br>
<h3>입력한 정보 출력(EL 방식)</h3>
아이디 : ${param.id} <br>
비밀번호 : ${param["pwd"]}
</body>
</html>
※ EL 데이터 타입 표현
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>EL 데이터 타입</title>
</head>
<body>
정수형 : ${10}<br>
실수형 : ${5.6}<br>
문자열형 : ${"브루노 마스"}<br>
논리형 : ${true}<br>
null값 : ${null}<br> <!-- 결과 화면을 공백으로 처리 -->
${5+2} <!-- 연산자도 표현 가능 -->
</body>
</html>
※ EL 연산자 종류
종류 | 연산자 |
산술 연산자 | +, -, *, / ( or div) , % ( or mod) |
관계 연산자 | == (or eq) , != (or ne) , < (or It) , > (or gt) , <=(or le), >=(or ge) |
조건 연산자 | a ? b : c |
논리 연산자 | &&(or and), ||(or or), !(or not) |
null 검사 연산자 | empty |
*calculation.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>표현 언어 연산</title>
</head>
<body>
<h1>산술 연산자들</h1>
5 + 2 결과 : ${5 + 2}<br>
5 - 2 결과 : ${5 - 2}<br>
5 * 2 결과 : ${5 * 2}<br>
--------나눗셈 표현 두가지------------<br>
5 / 2 결과 : ${5 / 2}<br>
5 div 2 결과 : ${5 div 2}<br>
----------------------------------<br>
--------나머지 표현 두가지------------<br>
5 % 2 결과 : ${5 % 2}<br>
5 mod 2 결과 : ${5 mod 2}<br>
----------------------------------<br>
<h1>관계 연산자들</h1>
--------관계 연산자 표현 두가지------------<br>
5 == 2 결과 : ${5 == 2} => 5 eq 5 결과 : ${5 eq 5}<br>
5 != 2 결과 : ${5 != 2} => 5 ne 5 결과 : ${5 ne 5}<br>
5 < 2 결과 : ${5 < 2} => 5 lt 2 결과 : ${5 lt 2}<br>
5 > 2 결과 : ${5 > 2} => 5 gt 2 결과 : ${5 gt 2}<br>
5 <= 2 결과 : ${5 <= 2} => 5 le 2 결과 : ${5 le 2}<br>
5 >= 2 결과 : ${5 >= 2} => 5 ge 2 결과 : ${5 ge 2}<br>
----------------------------------<br>
<h1>논리 연산자들</h1>
(5>2) || (5<2) 결과 : ${(5>2) || (5>2)} => false or true 결과 : ${false or true}<br>
(5>2) && (5>2) 결과 : ${(5>2) && (5>2)} => false and true 결과 : ${false and true}<br>
!(5>2) 결과 : !(5>2) => not false 결과 : ${ not false }<br>
</body>
</html>
※ EL 내장 객체 사용 방식
Attribute | EL 표현 방식 | JSP 내장 객체 비교 |
page | pageScope | pageContext |
request | requestScope | request |
session | sessionScope | session |
application | applicationScope | application |
* elScope.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>EL 내장 객체</title>
</head>
<body>
<%
pageContext.setAttribute("name", "page man");
request.setAttribute("name", "request man");
session.setAttribute("name", "session man");
application.setAttribute("name", "application man");
%>
name : ${name} <p>
page 속성 : ${pageScope.name} <p>
request 속성 : ${requestScope.name} <p>
session 속성 : ${sessionScope.name} <p>
application 속성 : ${applicationScope.name} <p>
<a href="scopeTest.jsp">이동</a>
</body>
</html>
* scopeTest.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>페이지 이동</title>
</head>
<body>
name : ${name} <p>
page 속성 : ${pageScope.name} <p>
request 속성 : ${requestScope.name} <p>
session 속성 : ${sessionScope.name} <p>
application 속성 : ${applicationScope.name} <p>
</body>
</html>
↓ 아래 정리해둔 포스팅의 내용에서 JSP 범위에 대한 포스팅과 동일한 결과 값을 볼 수 있다.
https://glory-archive.tistory.com/53?category=1037534
JSP 내장객체
※ JSP 내장 객체의 종류 - 내장 객체의 종류는 많지만 기본적이고 자주 쓰이는 것들로 정리하고자 한다. 분류 내장 객체 입출력 관련 객체 - request - response - out 서블릿 관련 객체 - page - config 외부
glory-archive.tistory.com