클라이언트/ 서버/ 엔지니어 " 게임 개발자"를 향한 매일의 공부일지

JSP 내장 객체와 액션 태그 4 - application 내장 객체에 대하여 본문

웹 · 앱 개발/JSP & Servlet

JSP 내장 객체와 액션 태그 4 - application 내장 객체에 대하여

huenuri 2024. 8. 28. 07:37

내장 객체에 대한 학습을 이어가보자. 이번 소단원도 공부할 게 정말 많다.


 

 

 

 

application 내장 객체

application 내장 객체는 하나의 웹 애플리케이션을 관리하고 이 안에서의 자원을 공유한다. 하나의 웹 애플리케이션이란 하나의 웹 프로젝트를 의미한다.

지금까지는 이번 페이지에서 사용한 정보(자원)을 다음 페이지에서까지도 사용하도록 하기 위해 속성을 새로 생성해서 request 객체에 저장해서 사용했다. application 객체도 정보를 속성에 저장할 수 있다.

application.setAttribute("name", "application man");

 

application 객체에 저장된 내용은 하나의 프로젝트 내의 모든 JSP 페이지에서 공통적으로 사용할 수 있게 된다. JSP 페이지에서 생성하지 않고 그냥 가져다 쓰는 application 내장 객체는 어떤 자료 형태인지 살펴보자.

 

 

서블릿에서 제공하는 ServletContext로 선언된 application 내장 객체는 서버 기동시 웹 애플리케이션 당 하나만 생성되며 서블릿 컨테이너의 정보를 제공하는 일, 컨테이너에게 로그 처리를 요청하는 일 등을 구현할 수 있는 다양한 메소드를 지원한다.

JSP가 서블릿 컨테이너에 의해 서블릿으로 변환될 때, 자동으로 ServletContext 인터페이스를 구현해서 애플리케이션 내장 객체를 활용할 수 있게 해준다.

다음은 application 객체 관련 메소드를 정리한 표이다.

 


 

 

 

applicaiton의 실제 경로 알아보기

 

application.getRealPath()는 실행되고 있는 파일의 현재 위치를 알려준다.


 

 

 

 

내장 객체의 영역

내장 객체의 영역은 객체의 유효 기간이라고도 한다. 해당 객체가 얼마 동안이나 살아있는지 지정해주는 것이 영역이다.

 

 

 


 

 

page 영역

한 번의 클라이언트 요청에 하나의 JSP 페이지를 범위로 갖는다. 브라우저의 요청이 들어오면 JSP 페이지를 실행하게 되는데, 이때 실행되는 JSP 페이지의 범위가 하나의 page 영역이 된다. 브라우저의 요청을 처리하는 JSP 페이지는 요청에 대해 새로운 page 영역을 갖게 되며, 그에 해당하는 pageContext 내장 객체를 할당 받는다. 할당을 받는다는 것은 pageContext라는 객체가 하나 생겨서 메모리에 로딩된다는 것이다.

이렇게 생성된 pageContext 객체에 정보를 저장하면 해당 페이지 내에서만 사용할 수 있게 된다.


 

 

 

request 영역

브라우저에서 오는 한 번의 요청과 관련된다. 브라우저 창에 URL을 입력하거나 페이지 링크를 클릭할 때, 브라우저가 웹 서버에 전송하는 요청이 하나의 request 영역이 된다.

사용자가 페이지를 요청하면 요청한 페이지와 요청을 받은 페이지 사이에 request 내장 객체 정보를 저장할 수 있다. 브라우저가 결과를 받으면 그 요청과 관련된 request 내장 객체는 사라진다. 즉, 브라우저가 요청을 할 때마다 새로운 request 내장 객체가 생성되고 매번 새로운 request 영역이 생성된다.

request 객체는 이전 페이지에서 입력된 값(파라미터)을 getParameter() 메소드로 얻어올 수 있다. 또한 setAttribute() 메소드로 파라미터가 아닌 원하는 정보도 저장해두면 다음 페이지에서도 얻어올 수 있다.


 

 

 

session 영역

웹 브라우저를 닫기 전까지 페이지를 이동하더라도 사용자의 정보를 잃지 않고 서버에 보관할 수 있도록 하는 객체로 모든 웹 서버에서 제공된다.

회원 전용 페이지의 경우 로그인 과정을 통해 해당 페이지를 사용할 수 있는 권한을 얻으면 브라우저를 닫기 전까지는 그 권한에 대한 상태가 유지된다.


 

 

 

application 영역

하나의 웹 애플리케이션과 관련된 전체 영역을 포함한다. 웹 애플리케이션에 속한 모든 페이지, 요청, 세션은 모두 하나의 application 영역에 속한다.

 

 

 

 

다음 예제를 통해 내장 객체의 영역에 대해서 살펴보기로 하자.

 

 

 


 

 

 

내장 객체 영역 테스트

1. 내장 객체의 속성에 값을 설정하는 페이지를 작성하자.

 

갑자기 syso 단축키가 안되서 한참을 연구해보았으나 아무리 해도 안되서 그냥 넘어가기로 했다. 목록이 보이는 좋은 기능을 설정했더니 이 기능이 안되는 것 같다.


 

 

 

 

2. 포워딩으로 이동한 페이지에서 설정한 속성값을 브라우저에 출력하는 페이지 작성하기

 

 

 

3. 리다이렉트로 이동한 또 다른 페이지에서 설정한 속성값을 브라우저에 출력하는 페이지 코드 작성하기

 

 

 

 

또 다른 페이지를 클릭하니 하나의 요청 속성이 null이 되었다. 그 다음에는 클릭해도 같은 화면이 반복된다. 이는 내장 객체가 해당 영역을 벗어나면 해당 속성의 값을 사용할 수 있는 유효 범위가 다르기 때문에 값을 출력할 수 없다. 어떤 내장 객체에 값을 저장했으냐에 따라 새용할 수 있는 유효 범위가 달라질 수 있음을 기억해야 한다.

 


 

 

학습을 마치고

내장 객체는 여기까지 해서 마치려고 한다. 중간에 코드가 잘 작동되지 않아서 무척 시간이 많이 걸렸지만 그래도 1시간 정도 공부할 시간이 남아있어서 다행이다. 빠르게 액션 태그에 대해서 학습해보려고 한다. 

이 부분도 동영상이 없어서 그냥 혼자 책을 보면서 진행해볼 것이다.