저번 시간 request에 담긴 데이터를 EL(Expression Language)을 통해 꺼내오는 것 까지 실습을 했다. 오늘은 배열 객체에 담긴 데이터를 꺼내기 위한 JSTL(Java Standard Tag Library)에 대해 배웠다. 피자 주문 프로젝트에서 JSTL을 사용해서 배열 객체 데이터를 꺼내보자.
1) 먼저 JSTL을 사용하기 위해서 JSTL 라이브러리를 다운받아야 한다. (https://mvnrepository.com)에 들어가서 다운받은 라이브러리 파일을 /WEB-INF/lib/ 하위에 저장해준다.
2) 그리고 주문 결과 JSP 페이지 상단에 지시자 태그를 이용해서 태그 라이브러리의 어떤 기능을 이용할지 uri를 통해 정해주고 그 기능을 사용할 약어를 prefix를 통해 설정해준다.(/core에 배열 객체를 꺼내서 사용할 forEach 기능이 있다.)
3) prefix로 지정했던 core의 약어를 사용하여 forEach 기능을 불러온다. 그리고 items 속성에 EL을 써서 배열 객체를 지정하고, var 속성을 통해 그 객체에 변수를 지정해준다. 그리고 태그 안쪽에 EL을 통해 변수를 불러와준다.
4) 주문 페이지에서 토핑과 사이드를 여러개 선택해서 결과를 확인해본다. 주문 결과 페이지에 배열 객체를 성공적으로 불러온 것을 확인할 수 있다.
5) 이 외에 EL과 JSTL의 특징을 더 살펴보자. EL은 JSP에서 데이터를 가져올때 더 간단한 표현식을 표현하기 위해 사용되고 사용법은 ${데이터} 형식이다 EL은 page, request, session application(servletContext) 등의 저장 공간안의 데이터를 꺼내올 때 사용한다. Servlet에서 위 저장 공간들에 데이터를 보낼 때, 매개값으로 key, value 형태로 보내면 JSP에서 EL로 ${key} 형식으로 데이터를 꺼내올 수 있다. 다양한 저장공간안에서 같은 key를 사용하는 데이터를 보내면 JSP에서 스코프를 지정하지 않은채로 같은 key를 불러오면 가장 좁은 범위에 있는 값을 가지고 오는걸 확인할 수 있다.(page < request < session < application(servletContext)) 스코프를 지정하여 key를 설정하면 특정 스코프에 있는 데이터 value를 꺼내온다.
6) JSTL를 통해 코드 작성을 더 간결하고 다양한 표현도 가능하다.
*EL 연산자
- 일반 연산자를 써도 되고 EL 연산자를 써도 된다.