-
EL(Expression Language) 저장소Servlet-JSP 2022. 1. 24. 21:56
**유튜브 뉴렉쳐님의 강의를 들으면서 공부하고 정리한 내용입니다.
EL을 꺼내서 사용하기 위한 저장소들을 알아보도록 하자.
지난 시간에 상태를 저장 할 때 사용 할 수 있는 저장소들을 배웠었다.
pagecontext : 페이지 내에서 혼자서 사용 할 수 있는 저장소
request : 포워드 관계에서 사용 할 수 있는 저장소
session : 현재 세션에서 사용 할 수 있는 저장소
application : 모든 세션 모든 페이지에서 사용 할 수 있는 저장소그리고 EL을 배울 때 우리는 리퀘스트 저장소에서 EL을 꺼내쓰는 것만 배웠는데 리퀘스트 말고 네가지 저장소에서 모두 꺼내 쓸 수 있다.
(pagecontext는 jasper가 만들어 둔 것)

이렇게 해당 페이지에서 작성하고 꺼내 둘 수 있다.
그런데 이렇게 네가지 저장소에서 만약 같은 KEY값을 가진 것들이 있을 경우에는 충돌이 일어나지 않고 우선순위의 저장소에 있는 KEY 값 먼저 꺼내오게 된다.
우선 순위는 page->request->session->application 순으로 먼저 찾아오게 된다.
만약 application 전에 우선 순위인 저장소에서 원하는 key값의 데이터를 찾으면 application에 저장 된 것은 꺼내 올 수 없게 된다.
그럴 경우 저장소 명 뒤에 scope를 붙여 주면 된다.
${pageScope}
${requestScope}
${sessionScope}
${applicationScope}그리고 뒤에 .key값을 적어 주면 된다. 이렇게 특정 저장소를 작성해주면 맨 위에부터 찾으면서 내려 올 일도 없고 내가 원하는 내용을 바로 찾아 꺼낼 수 있는 것이다.

이렇게 위에 scope 지정 한 것은 원래대로 짝수로 잘 나오는데 그렇지 않고 그냥 같은 key값만 넣어준것은 pageContext가 지정한 key값이 출력 되는 것을 확인 할 수 있다.
parameter, header, cookie 값도 EL을 통해서 꺼내 올 수 있다.
${param.result}
${header.result}
${header["result"]}
${cookie.result}이러한 형태로 사용 가능하다. header의 경우 key값이 변수명명 규칙에 맞지 않으면(사이띄기등등이 들어 갈 때) key값에 []대괄호로 감싸서 사용 해 주면 된다.
parameter를 출력해보자

출력이 잘 되고 있다.
그 다음은 header
header의 경우 개발자도구를 켜서 network->requestheader

여기서 얻고자 하는 값을 key값으로 주면 된다. accept 정보를 얻어보자

출력 되는 것을 확인 할 수 있다.
EL로 pageContext를 호출 할 경우에는 좀 특이하게 사용이 되는데
원래는 <%=pageContext.getRequest().Method()%> 의 형태인데
${pageContext.request.method}
이런 형태로 사용하게 된다.
'Servlet-JSP' 카테고리의 다른 글
JSP-게시판 인덱스 코드블럭으로 만들기 (0) 2022.01.26 EL 연산자 (0) 2022.01.24 EL(Expression Language) (0) 2022.01.24 jsp mvc model2 (0) 2022.01.24 JSP MVC model1 (0) 2022.01.23