지난 포스트에서 뷰와 컨트롤러를 완전히 분리하였다. 하지만 아직 뷰에는
<%=request.getAttribute("result")%>입니다.<br>
위와 같은 자바 코드가 남아있었다. 뷰에는 완전히 출력만을 하기 위해 jsp는 EL이라는 것을 제공한다.
사용방법은 간단하다. 컨트롤러에서 뷰로 보내는 데이터의 key값으로 value를 얻을 수 있다.
다음과 같다. ${key}
이렇게 하면 value의 값을 얻을 수 있는 것이다.
아래의 코드를 보자.
spag.jsp의 11 line의 자바코드가 들어간 것보다. 12번 라인이하는 훨씬 간결하다.
또한 리스트 데이터도 전달받을 수 있는데, 13line처럼
${키[index]}라 하면 해당 인덱스의 데이터를 얻을 수 있다.
아래는 결과
저장소로 사용할 수 있는 객체에는 page, request, session, application이 있는데,
pageContext.setAttribute("key", value); 라 하면 page도 저장소로 사용할 수 있다.
결과:
page -> request -> session -> application
나열한 순서대로 우선순위가 있어 다른 저장소에 같은 이름의 key값 데이터를 저장하더라도 충돌하지 않는다.
즉 만약 page에 key가 result라는 데이터가있고, key가 result인 데이터가 request저장소에도 있을 때,
뷰에서 ${result}라 하면 page에 저장된 result가 출력된다.
결과:
하지만 각각 pageScope, requestScope, sessionScope, applicationScope를 사용하면 각각의 저장소에 있는 데이터를 출력할 수 있다.
사용법은 만약 page에서 찾고 싶다면 ${pageScope.키값}하면 끝이다
또한 내장객체에는 Scope외에도
param, paramValues, header, headerValues, cookie, initParam, pageContext 등의 많은 객채들이 있다.
몇가지만 사용해보면 param은 컨트롤러 단에서 받은 get이나 post요청의 parameter를 뷰단에서 바로 받을 수 있다.
또한 header는 여러가지 Request hedaer의 정보를 얻을 수 있다.
위에서 설명한 param과 header를 수행해보자.
결과:
지금까지 EL을 통해 컨트롤러와 뷰를 오나전히 분리하고, 내장객체의 사용을 보았다.
'java spring > servlet&jsp' 카테고리의 다른 글
서블릿 jsp 11 (컨트롤러 나누기) (0) | 2021.04.07 |
---|---|
서블릿 jsp 8(프로젝트 시작하기) (0) | 2021.04.05 |
서블릿, jsp 6 (0) | 2021.04.03 |
서블릿 5( 동적 페이지의 필요성) (0) | 2021.04.01 |
서블릿4(application, session, cookie) (0) | 2021.04.01 |