코딩항해기

[JSP] 내장 객체 (pageContext) 본문

JSP

[JSP] 내장 객체 (pageContext)

miniBcake 2024. 10. 9. 13:50

 

 

pageContext (PageContext)

pageContext 객체는 JSP 기본 내장 객체 중 하나로 따로 선언하지 않아도 사용 가능하다. pageContext는 JSP 페이지에 대해 1:1로 연결된 객체로 JSP 하나 당 하나의 pageContext 객체가 생성된다.

 

pageContext 객체를 이용하면 pageContext.reqeust.contextPath를 통해 http://localhost:[포트번호]/[프로젝트명]에 해당하는 컨텍스트 루트를 얻을 수 있다. 이는 JAVA에서 pageContext.getReqeust().getContextPath()와 동일하다.

 

request 객체를 반환하는 메서드 외에도 다양한 메서드를 가지고 있다.

메서드 반환타입 설명
getRequest() ServletRequset request 기본 객체를 반환
getResponse() ServletResponse response 기본 객체를 반환
getSession() HttpSession session 기본 객체를 반환
getServletContext() ServletContext application 기본 객체를 반환
getServletConfig() ServletConfig config 기본 객체를 반환
getOut() JspWriter out 기본 객체를 반환
getException() Exception exception 기본 객체를 반환
getPage() Object page 기본 객체를 반환

 

 

주의사항

그런데 해당 메서드들을 보면 이미 pageContext에서 받아오지 않아도 사용하고 있는 기본 내장 객체들이다.

JSP가 서블릿으로 변환되는 과정에서 pageContext 객체를 통해 기본 내장 객체들을 생성해주고 있었던 것이다.

 

이러한 내용을 생각하면 JAVA에서 request.getContextPath()로만 컨텍스트 루트를 구한 것처럼 pageContext.request.contextPath에서 pageContext를 생략할 수 있을 것 같아진다.

 

그러나 EL식에서 사용법과 스크립틀릿(<%%>)에서의 사용법은 다르기 때문에 EL식을 사용해 컨텍스트 루트를 구할 때에는 pageContext부터 기입을 해야한다.

 

EL식에서 reqeust나 response 등에 접근할 때 pageContext를 붙이는 경우는, 주로 servletContext, request, response 등의 객체에 대한 추가적인 정보나 메서드가 필요할 때 사용한다.