JSP/JSP 정리

[JSP] JSP EL 표현식과 문법 사용법

h0-0cat 2023. 6. 5. 10:00
728x90

JSP EL 표현식과 문법 사용법

표현 언어(Expression Language)로 표현 단순화하기

EL(Expression Language)?

         JSP 출력에 대한 부분을 쉽게 하기 위해 개발한 tag(태그)이다.

표현 언어는 표현식보다 사용방법이 간단하고 문법체계가 직관적으로 아주 쉽습니다. 표현 언어는 ${}를 사용하여 값을 표현합니다.

 

 

EL표기법

${ }

- JSP가 실행될 때 즉시 반영된다. (Immediate evaluation)
- 객체 프로퍼티 값을 꺼낼때 주로 사용

 

표현식 예)

<%=expr%>

표현언어 예 )

${expr}

 

#{ }

- 시스템에서 필요하다고 판단될 때 그 값을 사용한다. (Deferred evaluation)
- 사용자 입력값을 객체의 프로퍼티에 담는 용도로 주로 사용

 

${member.no} 또는 ${member["no"])

 

 

다음은 JSP에서 기본으로 제공하는 EL 객체이다.

 

객체 설명 코드
pageContext JSP의 PageContext 객체  
servletContext ServletContext 객체 ${pageContext.servletContext.객체명}
session HttpSession 객체 ${pageContext.session.객체명}
request ServletRequest 객체 ${pageContext.request.객체명}
response ServletResponse 객체  
param 요청 매개변수의 값 조회 ${param.매개변수명}
paramValues 요청 매개변수의 값 배열 조회 ${paramValues.매개변수명}
header HTTP 헤더의 값 조회 ${header.헤더명}
headerValues HTTP 헤더의 값 배열 조회 ${headerValues.헤더명}
cookie 쿠키 값 조회 ${cookie.쿠키명}
initParam 컨텍스트 초기화 매개변수의 값 조회 ${initParam.매개변수명}
pageScope page 보관소의 값 조회 ${pageScope.객체명}
requestScope request 보관소의 값 조회 ${requestScope.객체명}
sessionScope session 보관소의 값 조회 ${sessionScope.객체명}
applicationScope application 보관소의 값 조회 ${applicationScope.객체명}

 

 

예를 들어 표현식에서는 <%="Hello"%>로 기술했던 코드를 표현 언어로 표현할 때에는 ${"Hello"}와 같이 기술합니다.

 

표현 언어에서 사용 가능한 데이터 타입

정수형 : ${10} <br>

실수형 : ${5.6} <br>

문자열형: ${"긁지않은개발자"} <br>

논리형: ${true} <br>

null : ${null} <br>

표현 언어가 자바와는 다른 특징 중 하나는 null은 결과 화면에 공백으로 처리되는 점입니다

 

 

EL 식에는 연산자를 포함할 수 있습니다. ${3+2 }

 

EL 리터럴 표현식

문자열, 정수, 부동소수점, Boolean, Null을 사용할 수 있다.

 

1
2
3
4
5
6
문자열 : ${"test"}
문자열 : ${'test'}
정수 : ${20}
부동소수점 : ${3.14}
Boolean : ${true}
null : ${null}
                                                                                                                                    긁지않은개발자

실행 결과

 

${null}은 빈 문자열(" ")로 출력된다.

 

 

EL 표현식으로 값 꺼내기

배열에서 값 꺼내기

1
2
3
4
                                                                                                                                    긁지않은개발자
<%
    pageContext.setAttribute("scores"new int[]{908070100});
%>
${scores[2]}
 

 

 

실행 결과 : 70

배열[2]번째꺼 , 0부터 시작이니까 70 

 

List 객체에서 값 꺼내기

1
2
3
4
5
6
7
8
9
                                                                                                                                    긁지않은개발자
<%
    List<String> list = new LinkedList<>();
    list.add("가나");
    list.add("다라");
    list.add("마바");
 
    pageContext.setAttribute("list", list);
%>
${list[1]}
 

 

실행 결과 : 다라

list[1] 0부터시작이니까 2번째 list에 들어간 "다라"

 

Map 객체에서 값 꺼내기

1
2
3
4
5
6
7
8
                                                                                                                                    긁지않은개발자
<%
    Map<StringString> map = new HashMap<>();
    map.put("1""a");
    map.put("2""b");
    map.put("3""c");
    pageContext.setAttribute("map", map);
%>
${map["1"]}
 

 

실행 결과 : a

map["키","값"]; map["1"]

 

자바 객체에서 프로퍼티 값 꺼내기

1
2
3
4
5
6
7
8
                                                                                                                                    긁지않은개발자
<%
    pageContext.setAttribute("student",
            new Student()
                    .setStudentNo("20230605")
                    .setStudentName("긁지않은개발자")
    );
%>
${student.studentNo} - ${student.studentName}

 

실행 결과 : 20230605 - 긁지않은개발자

 

ResourceBundle 객체에서 값 꺼내기

java

1
2
3
4
5
6
7
8
9
10
11
                                                                                                                                    긁지않은개발자
public
 class HcatBundle extends ListResourceBundle{
    @Override
    protected Object[ ][ ] getContents() {
        return new Object[ ][ ] {
                {"select""조회"},                
                {"Insert""저장"},
                 {"Update""수정"},
                {"Delete""삭제"}
        };
    }
}
 

 

JSP

1
2
3
4
                                                                                                                                    긁지않은개발자
<%
    pageContext.setAttribute("Hcat", ResourceBundle.getBundle("HcatBundle"));
%>
${Hcat.Delete}
 

 

실행 결과 : 삭제

 

EL 표현식의 연산자

EL에서 지원하는 주요 연산자는 산술 연산자, 논리 연산자, 관계 연산자, empty 연산자, 조건 연산자가 있다.

 

EL 산술 연산자

표현식 실행 결과
${10+20} 30
${10-20} -10
${10*20} 200
${10/20} 0.5
${10 div 20} 0.5
${10 % 20} 10
${10 mod 20} 10

 

EL 논리 연산자

표현식 실행 결과
${true && false} false
${true and false] false
${false || true} true
${false or true] true
${not true} false
${!true} false

 

EL 관계 연산자

표현식 연산자
${10 == 11} false
${10 eq 11} false
${10 != 11} true
${10 ne 11} true
${10 < 11} true
${10 lt 11} true
${10 > 11} false
${10 gt 11} false
${10 <= 11} true
${10 le 11} true
${10 >= 11} false
${10 ge 11} false

 

empty 연산자

- 값이 null이면 true
- 문자열, 배열, Map, Collection 객체의 크기가 0이면 true
- 그 외에는 false

 

1
2
3
4
                                                                                                                                    긁지않은개발자
<%
    pageContext.setAttribute("title""EL 연산자");
%>
${empty title}, ${empty title2}

 

실행 결과 : false, true

 

조건 연산자

EL 조건 연산자는 자바 3항 연산자와 문법이 동일하다.

1
${50 > 20 ? "크다" : "작다"}
긁지않은개발자

 

실행 결과 : 작다

 


 

 

종류 연산자
산술 +, -, *, / (or div), % (or mod)
관계형 == (or eq), != (or ne), < (or lt), > (or gt), <= (or le), >= (or ge)
조건 a ? b : c
논리 && (or and), || (or or), ! (or not)
null 검사 empty

 

728x90