ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • EL(Expression Language)과 JSTL(JSP Standard Tag Library)
    웹 프로그래밍/BE(Back-End) 2021. 6. 4. 19:58

    오늘은 EL과 JSTL에 대해 배웠다.

    처음 웹 백엔드 개발자가 되겠다는 생각을 가지고 여러 개발자의 얘기나 블로그 글을 보면서 자바와 스프링프레임워크가 많이 쓰인다 하여 자바 기초 문법을 배우고 스프링을 접해봐야겠다는 생각이였다.

    하지만 기초적으로 알고 가야할 것이 매우 많은 것 같다...

    웹 서버, WAS부터 시작해서 servlet, serlvet을 개선한 JSP

    오늘은 또 다른 주제인 EL과 JSTL이다.

     

    먼저, EL에 대해 알아보자.

    EL을 단순히 우리말로 번역하면 표현 언어라는 것으로 값을 표현하는 데 사용되는 스크립트 언어로서 JSP의 기본 문법을 보완하는 역할을 한다.

    JSP를 그냥 쓰면 되는데 굳이 EL이라는 것을 만든 이유는 무엇일까?

    JSP를 사용해보면 JSP에는 HTML과 JAVA 코드도 들어가있다.

    사실 상 뭔가 JSP를 보면 프론트엔드에게 더 어울리는 것 같고 그렇다고 프론트엔드 개발자가 다루어야할 내용이 있는 것은 아니다.

    그러면서 JSP를 개발자 입장에서 어떻게 하면 더 효율적으로 사용할지를 생각하면서 나온 것이 EL이다.

     

    EL을 사용하게 되면 제공하는 기능은 다음과 같다.

    - JSP의 스코프(scope)에 맞는 속성 사용

    - 집합 객체에 대한 접근 방법 제공

    - 수치 연산, 관계 연산, 논리 연산자 제공

    - 자바 클래스 메소드 호출 기능 제공

    - 표현언어만의 기본 객체 제공

     

    EL의 문법은 ${ }으로 { }안에 EL이 정의한 문법에 따라 값을 표현하는 식을 넣어주면 된다.

    이러한 EL은 JSP의 스크립트릿, 표현식, 선언부를 제외한 나머지 부분에서 사용할 수 있다.

    EL의 데이터 타입은 다음과 같다.

     - boolean 타입: true, false

    - 정수 타입: 0~9로 이루어진 정수 값 (음수의 경우 '-'가 붙음)

    - 실수타입: 0~9로 이루어져 있으며, 소수점('.')을 사용할 수 있고, 3.24e3과 같이 지수형으로 표현 가능

    - 문자열 타입: 따옴표( ' 또는" )로 둘러싼 문자열.

    - null 타입 - null

     

    EL에서는 우리가 알고 있는 수치연산자, 비교연산자, 논리연산자를 사용가능하고 연산자는 우선순위를 가지고 있다.

    1. [] .
    2. ()
    3. - (단일) not ! empty
    4. * / div % mod
    5. + -
    6. < > <= >= lt gt le ge
    7. == != eq ne
    8. && and
    9. || or
    10. ? :

    그러면 직접 예제를 통해 EL이 기존의 JAVA코드를 사용한 것보다 개발자에게 어떻게 더 직관적인지 알아보자.

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    
    <%
        pageContext.setAttribute("p1", "page scope value");
    %>    
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
    
    <%=pageContext.getAttribute("p1")%>
    
    </body>
    </html>

    먼저, 기존의 JSP 표현식을 사용한 코드이다.

    <% pageContext.setAttribute("p1", "page scope value"); %>으로 page scope 변수를 만들었다.

    이 변수에 들어있는 값은 웹 페이지에 띄우기 위해 <%=pageContext.getAttribute("p1")%>를 쓴 것을 볼 수 있다.

    백엔드 개발자 입장에서는 java에 익숙하고 코드를 본 경험이 있기에 이해하기 쉬울 것이다.

    하지만 프론트엔드 개발자나 웹 디자이너가 본다면 복잡해보일 수 있다.

     

    그러면 EL을 사용한 코드를 보자.

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <%
        pageContext.setAttribute("p1", "page scope value");
    
    %>    
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
    ${pageScope.p1 }
    
    </body>
    </html>

    ${pageScope.p1 }만을 써서 page scope 변수를 가져와 웹 페이지에 보여주게 된다.

    java코드를 몰라도 EL이 무엇인지안다면 직관적으로 알기 편하다.

     

    만약, EL문법을 사용하고 싶지 않고 ${ }문자열 그래로 표시하고 싶을 때에는 <%@ page isELIgnored = "true" %>을 쓰면 된다.

     

     

    다음으로 JSTL에 대해 알아보자.

    JSTL은 JSP에서 조건문 처리, 반복문 처리 등을 html tag형태로 작성할 수 있게 도와주는 역할을 한다.

    기존의 java코드로 구현한 부분을 태그형태로 표현할 수 있도록 한 것이다.

    그냥 java코드를 쓰면되지 왜 JSTL을 만든 것일까?

    이것도 EL과 비슷한 이유인데 JSP를 쓰는 프론트엔드 개발자의 입장에서 java문법을 알아야 할 필요성이 생기게 되고 java코드와 html이 섞여있으면 유지보수하기가 힘들어진다.

    이러한 이유로 프론트엔드 개발자에게 조금 더 친숙한 태그형태를 쓸 수 있는 JSTL을 만든 것이다.

     

    우리는 JSTL을 사용하기 위해서 별도로 설치해야할 파일이 존재한다.

    http://tomcat.apache.org/download-taglibs.cgi 에 접속하면 아래와 같은 파일이 있을 것이다.

    3개의 파일을 다운로드한 후 우리가 프로그래밍 중인 프로젝트에서 WEB-INF/lib/ 폴더에 복사를 하면 된다.

     

    JSTL에서 제공하는 태그의 종류는 아래와 같다.

    출처: https://www.boostcourse.org/web316/lecture/254291?isDesc=false

     

    '웹 프로그래밍 > BE(Back-End)' 카테고리의 다른 글

    AWS EC2 이용해보기  (0) 2021.06.30
    Web Crowling & Web Scraping  (0) 2021.06.28
    Database 사용자 생성과 권한 주기  (0) 2021.06.10
    JSP와 SCOPE 접해보기  (0) 2021.06.03
    Tomcat 접해보기  (0) 2021.05.28

    댓글

Designed by Tistory.