SeverSideTemplateEngine/JSP

JSP Expression Language

Glory-L 2022. 9. 29. 09:49

 

※ 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 방식의 코드가 간결하다.

 

 

 

※ 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