ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 웹 요청 처리에 대한 기본지식
    웹프로그래밍/기초 2018. 6. 10. 17:07


    웹 요청 처리에 대한 기본지식




    페이지 스코프:


    페이지 스코프에 있는 객체는 각 페이지의 javax.servlet.jsp.PageContext에 저장되고, 객체를 생성한 JSP를 통해서만 접근할 수 있다. 클라이 언트에 응답을 보 내거나 페이지를 다른 자원에 포워딩하면 관련된 객체를 더 이상 사용하지 못하게 된다. JSP는 pageContext라는 객체 참조 값을 가지고 있다. 이러한 참조 값은 JSP 가 생성될 때 자동으로 생성되며, pageContext를 통해 페이지 단계의 객체를 담고 가져올 수 있다. 페이지 스코프 역시 getAttribute ( ) , setAttribute ( ) 메소드가 있으며 다른 스코프와 비슷한 역할을 수행한다.






    요청 스코프:


    서버는 클라이언트의 HTTP 요청이 있을 때 javax.servlet.http.HttpServletRequest 인터페이스를 구현한 객체를 생성한다. 이 객체는 요청 스코프의 생명주기 동안에 객체를 저장할 수 있는 키와 값의 형식으로 저장하고 였다. 키는 객체로부터 값을 찾을 때 사용할 문자열이고, 값은 모든 객체 타입을 사용할 수 있다. 객체를 담거나 얻어올 수 있는 메소드이다. 






    세션 스코프:


    웹 컨데이너는 여러 번에 걸친 페이지 요청 시 임의의 상태 값을 유지하기 위해 javax.servlet.http.HttpSession 인터페이스를 구현한 객체를 생성한다. 세션 객체는 특정 시간이 경과하면 없어진다. 세션 객체의 소멸 시간은 애플리케이션 배치 디스크립터를 통해 설정한다. 세션 객체에 invalidate() 메소드를 실행시 켜 강제로 소멸할 수도 있다. 세션 스코프는 다수의 요청에 걸쳐 존재하기 때문 에 세션 스코프에 저장된 객체는 요청 스코프에 담긴 객체보다 생명주기가 길다.






    어플리케이션 스코프:


    애플리케이션 스코프 객체는 객체가 소멸되거나 애플리케이션이 종료될 때까지 남는댜 서블릿 컨데이너는 javax.servlet.ServletContext 인터페이스를 구현 한 객체를 생성하고 모든 웹 애플리케이션은 해당 컨데이너 안에 설치된다. 이 객체는 컨데이너가 처음으로 시동될 때 생성된다. ServletContext는 모든 애플 리케이션에서 애플리케이션 객체를 참조하고 저장할 수 있도록 한다. 또한 애플 리케이션 객체의 수명은 서버가 실행되고 있는 동안이다. 즉, 애플리케이션 스 코프에서 애플리케이션 객체는 애플리케이션이 시작되면서부터 저장되어 애플 리케이션에서 종료될 때까지 남아 있게 된다. 






    포워딩:


    요청을 포워딩할 때 해당 요청은 서버의 다른 자원(서블릿)에 전달된다. 이때에는 다른 자원에서 이 요청을 처리할 것을 클라이언트에 알리지 않는다. 이런 방식 의 처리는 웹 컨데이너 안에서만 일어나고, 클라이언트는 알 수 없게 된다. 포워 딩은 리다이렉트와는 다르게 객체를 요청에 담고, 해당 요청을 사용할 다음 자 원에 전송한다. 


    클라이언트는 포워딩이 발생한 사실을 알지 못한다. 포워딩은 클라이언트와 통신 없이 서버에서만 처리되기 때문예 리다이렉트보다 나은 성능을 보여준다 






    리다이렉트:


    클라이언트의 요청을 처리한 후, 웹 컨테이너는 sendRedirect() 메소드가 호 출되면 브라우저에 웅답을 보낸다. 이 응답에는 브라우저가 웹 컨테이너의 응답 을 받은 후 다시 요청을 보낼 새로운 URL을 포함한다. 여기에서 하나의 요청이 종결된다. 새로 부여받은 URL로 브라우저에서 완전히 새롭게 요청하기 때문에 이전의 요청 스코프에 저장되어 있는 객체는 섀로운 요청 전에 소멸된다.




    리다이렉트는 추가적으로 발생한 왕복 처리 때문에 포워딩보다 느리다. 기억 해야 할 것은 최종적으로 수행하는 작업은 새로운 요청에 의한 것이고, 이 것을 클라이언트가 알고 있기 때문에 브라우저 창의 주소가 처음 요청한 주소가 아니 고 최종 주소 값으로 변한다. 또한 하나의 요청에 담겨있던 객체들은 소멸되어 다음 작업까지 전달되지 않는다. 

    '웹프로그래밍 > 기초' 카테고리의 다른 글

    HTTP 요청과 응답 그리고 서블릿 정리  (0) 2018.12.02
    프록시란?  (0) 2018.07.12
    세션(session)과 쿠키(cookie)  (0) 2018.06.09
    페이징  (0) 2018.04.28
    웹프로그래밍과 데이터베이스 관련내용 정리  (0) 2018.04.14