ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Servlet-JSP MVC02(3) - 내장객체
    Web/Servlet-JSP 2023. 6. 12. 15:35

     

    1. 내장객체 

     

    앞선 포스트에서 살펴봤듯이 jsp에는 내장객체가 존재한다. 이에 대해 조금 자세히 알아보도록 하자 

     

    2. 내장 객체 존재 이유 - 상태 유지의 필요성

     

    내장 객체들은 jsp관점에서 보기보단, 서블릿에 관점에서 먼저 바라보자.

    클라이언트 요청이 들어오면

    서블릿컨테이너를 통해 서블릿이 메모리에 로드되고, 적절한 처리를 한 뒤에 메모리에서 제거된다.

    즉, 서블릿이 호출되고, 종료되면 서블릿이 사용하고있던 자원이 반환된다는 것이다. 

    하지만, 때론 서블릿이 자원을 받아 일정하게 처리하고, 처리된 결과를 전역변수처럼 계속 유지하며, 서블릿끼리 

    공유해야할 때도 있을 것이다. 

    (ex 계산기를 만든다고 할때 2 + 2 + 2 = 6 -->사용자 입력이 =이 나올때 까지 전 계산 결과를 계속 유지하고 있어야한다)

    서블릿들사이에서 이러한 임시저장소의 역할을 application, session, cookie등이 해준다.

    서블릿에서는 이러한 임시저장소들이 필요할 시에 적절히 호출하여 사용하는 것이고,

    jsp는 처음부터 내장객체로 생성된다.

     

    3. 내장객체의 영역 

     

    내장 객체는 총 네가지의 영역 Page, request, session, application영역이 있다.

    위에서 내장객체는 임시저장소의 역할을 가지고 있다고 했다. 따라서 각 내장객체들은 다음 4가지 메서드들을 기본으로 가지고 있다.

    출처:https://pathas.tistory.com/184

    Page 영역 - 

    하나의 JSP page내부에서만 사용할 수 있는 임시저장소이다. 

    pageContext내장객체를 사용 

    pageContext.setAttribute(name, value);
    String names =(String)pageContext.getAttribute(name);

    request 영역 - 

    서블릿에 request와 역할이 같다.

    한 번의 웹브라우저 요청에 대한 정보를 가지고 있는 객체로, 기본적으로 하나의 페이지에서 유효하다.

    하나의 request요청에 대해 forward,include등을 통해 공유할 수 있다.

    이를 통해 같은 request영역인 경우 두 개의 페이지가 같은 요청을 공유할 수 있다.

    (객체를 하나 또는 두 개의 페이지 내에서 공유 가능)

    request.setAttribute(name, o);
    request.getParameter(name)

    session 영역 - 

    한명의 클라이언트당 1개의 session이 생성된다 (전용 캐비넷)

    세션의 만료시간이 다되면 세션은 사라지고 서버를 통해 새로운 세션 id를 부여받아야한다.

    동일한 클라이언트로 인식된다면, 해당 클라이언트의 모든 요청에 대한 자원을 저장하고 공유할 수 있다.

    (클라이언트가 같은 브라우저 내에서 요청하는 페이지들은 같은 객체 공유) 

    session.setAttribute(name, value)

    application영역-

    하나의 웹 어플리케이션당 1개의 application 객체가 생성된다.

    servletContext라고도 불리며, 하나의 웹 어플리케이션이 종료될 때까지 유지된다.

    application.~을 통해 사용가능하다. 

    application.setAttribute(name, object)

     

     

    참고자료: 뉴렉처 servlet/jsp (유튜브)

    https://pathas.tistory.com/184

     

    JSP | 내장 객체 개요 & Method &객체 영역

    내장 객체 스크립트릿 안에서만 사용 가능 스크립트릿에 내장 객체와 같은 이름의 변수를 선언할 수 없음 선언문에서는 사용 가능하나 가급적 사용하지 않는 것이 좋음 서블릿 컨테이너가 해당

    pathas.tistory.com

     

Designed by Tistory.