-
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에서는 우리가 알고 있는 수치연산자, 비교연산자, 논리연산자를 사용가능하고 연산자는 우선순위를 가지고 있다.
- [] .
- ()
- - (단일) not ! empty
- * / div % mod
- + -
- < > <= >= lt gt le ge
- == != eq ne
- && and
- || or
- ? :
그러면 직접 예제를 통해 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에서 제공하는 태그의 종류는 아래와 같다.
'웹 프로그래밍 > 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