본문으로 바로가기

JSP의 표현언어 EL이란?

category WEB/Servlet,JSP 2020. 6. 11. 19:22

EL(Expression Language)은 JSP의 표현식을 대체하는 표현 언어로
표현식보다 간결하고 편리하기 때문에 많이 사용됩니다.
<%= i %> JSP 표현식 i는 변수로 사용할 수 있습니다.
${ i } EL 표현식 i는 Attribute 이름입니다.

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
    <!-- jsp 파일은 컴파일을 하게 되면 내부적으로 서블릿 파일로 바뀌게 된다. -->
    <!-- html과 java를 자유롭게 다루기 위한게 JSP이다. -->
    <div>JAVA 명령어는 JSTL, EL을 사용해야 한다.</div>

    <%-- 데이터, 연산자 --%>
    <h3> EL - 1.출력, 연산자 가능 (직접데이터 사용가능, 변수(JSTL))</h3>
    <ol>
        <li>수 출력 : ${10}, ${99.99}</li>
        <li>문자(문자열) 출력 : ${"apple"},${'apple'}</li>
        <li>연산 : ${10+20},${10-20},${4/5},${5%7}</li>
        <li>작다 : ${2<3}, ${2 lt 3}</li>
        <li>크다 : ${2>3}, ${2 gt 3}</li>
        <li>작거나 같다 : ${2.5<=3.5}, ${2 le 3}</li>
        <li>크거나 같다 : ${2.5>=3.5}, ${2 ge 3}</li>
        <li>논리연산자 :  ${"&&, AND, ||, OR, !, NOT"}</li>
        <li>빈문자열 ${null}</li> <!-- null 예외가 나지 않는다. -->
    <%-- JSP에서 오류가 나면 서버 컴파일 되는 자바파일을 찾아 보면 편하다. --%>

    </ol>
</body>
</html>
  • EL은 주로 jsp에서 출력을 하는데 사용된다. 또한 setter,getter와 같은 역할을 한다.
  • 또한 pageContext, ServletRequest, HttpSession, ServletContext 에서 값을 꺼낸다.

- 예시

MemberInfo.java

public class MemberInfo {
    private String name;
    private String id;
    private String pwd;

    ... getter setter

}
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%> <!-- JSP 선언부 -->
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
    <h3>EL - setter, getter 기능을 사용할 수 있다.</h3>
    <%-- MemberInfo 객체 발생 --%>
    <%-- MemberInfo member = new MemberInfo(); 와 동일하다. --%>
    <jsp:useBean id="member" class="com.java.el.MemberInfo"/> 

    <h3>${member.name}</h3> member 객체의 속성값을 불러온다.
    <h3>${member.id}</h3>    
    <h3>${member.pwd}</h3>
</body>
</html>
위에서 쓰인 ${member.name} 의 실제 자바에서 작동하는 코드는 다음과 같다.
  MemberInfo member = (MemberInfo) pageContext.findAttribute("member");
  String name = member.getName();

객체 Scope에서 Attribute 이름이 같을 경우, Scope가 작은 범위에서 큰 범위로 해당 이름이 존재하는 찾습니다. 예를 들면, pageScopemember 애트리뷰트가 있고 sessionScope에도 member 애트리뷰트가 있을 때, ${ member }pageScope의 값이 출력될 것입니다.

EL 표기언어 에서는 자주 사용될 수 있는 객체들을 미리 정의해놓았습니다.

내장 객체

pageScopepage Scope에 접근하기 위한 객체
reqeustScoperequest Scope에 접근하기 위한 객체
sessionScopesession Scope에 접근하기 위한 객체
applicationScopeapplication Scope에 접근하기 위한 객체
param파라미터 값을 가져오기 위한 객체
header헤더 값을 가져오기 위한 객체
cookie쿠키 값을 가져오기 위한 객체
initParamJSP 초기 파라미터를 가져오기 위한 객체
pageContextpageContext 객체에 접근하기 위한 객체