JSP의 기본객체들
출처: https://www.youtube.com/watch?v=e9V6J4Lu3p8&t=412s
내 정리: pageContext, request, session, application 이러한 객체는 기존에 서블릿에서 사용되었던 객체이다. 이러한 객체가 따로 선언없이도 JSP파일에서 자연스럽게 쓰일수 있다는 것이다.
예를들어 pageContext객체는 하나의 JSP 페이지와 1대1일 매핑되는 객체이다.
아래는 application객체의 사용예
기본적으로 브라우저에서 서버로 요청을 보내면 WAS에서 request, response객체가 자동으로 생성된다.
request객체:서버로 요청보내는 객체
resposne객체: 브라우저에 응답하는 객체, 응답할 데이터를 저장하는 역할을 함. (참고로 out객체는 브라우저가 응답받을 수 있게 응답이라는 기능을 해주는 객체임)
pageContext객체: 기본객체들에 대한 접근을 가능하게 해주는 객체. 아래 그림과 같이 ServletResponse, ServletRequest와 같은 객체들을 반환받을 수 있는 메서드를 제공한다.ex) pageContext.getRequest()
application객체: 톰켓 서버가 작동하기 시작할 때 기본적으로 생성되는 객체. 서버가 시작될때 생성되어 서버가 종료될 때까지 남아있음.
ㅇ
pageContext, request, session, application 이 4가지 기본객체들의 공통점은 데이터를 저장할 수 있다는 것이다.
내가 forwarding과제로 했었던 것중에 아래와 같이 getRequestDispatcher라는 함수를 사용한 적이 있는데 이것이 바로 요청의 흐름을 조작(RequestDispatcher)할 수 있는 객체를 얻는 함수인 것이다.
pageContext, request, session, application 이 4가지 객체가 각각 언제까지 유지되는가를 파악하는 것이 중요하다. (https://www.youtube.com/watch?v=e9V6J4Lu3p8&t=412s 영상 약 30분부터)
redirect하면 request객체가 새롭게 생성되지만(이렇게 새로운 request객체가 생성되면 기존의 request객체는 삭제되는 것임) forwarding했을시에는 기존의 request, response객체가 그대로 남아있게 된다. pageContext객체는 말그대로 하나의 페이지를 가리키는 객체로, 만약 페이지가 변경되면 기존의 pageContext객체는 사라지게 된다. session객체는 하나의 브라우저를 사용했을시 생성되는 객체이므로 브라우저를 끄거나 새로운 브라우저를 생성하는 것이 아니라면 계속하여 남아있게 된다(각각의 세션은 각각의 브라우저를 의미함). application객체는 위에서 언급하였듯이 (톰켓)서버를 시작할때 생성되고 종료할시 사라지게 된다. 따라서 서버를 재시작 하지 않는 이상 계속 유지되는 객체이다.