request, pageContext, session, application 은 객체 내부에 사용자(개발자) 데이터를 저장할 수 있는 컬렉션을 가지고 있다.
내부에 데이터를 저장하는 공간이 Map형태로 존재하며, 데이터에 접근할 때 setAttribute(), getAttribute()로 접근한다.
🔻response 객체
HttpServletResponse
서블릿 컨테이너가 클라이언트의 HTTP 요청에 대한 정보를 담고 있는 객체이다.
response 객체의 역할
1. 서버에서 클라이언트로 돌려주는 HTML 페이지 제작
- getWriter() 메서드는 PrintWriter 객체를 반환하여 문자 데이터를 클라이언트로 보낼 수 있다.
2. 서버에서 클라이언트로 돌려주는 HTML 페이지 인코딩
- response.setCharachterEncoding("UTF-8") : 서블릿
- 페이지 지시자 contentType="charset=UTF-8" : JSP
- setCharacterEncoding() 메서드는 응답의 문자 인코딩을 설정한다. 이를 통해 클라이언트에게 어떤 문자셋을 사용할 것인지 알릴 수 있다.
3. 서버에서 클라이언트로 돌려주는 HTML 페이지 MIME 설정
- contextType="text/html" : '브라우저에게 돌려주는 페이지의 형식이 HTML 페이지입니다.' 라고 알려주는 역할을 한다.
- setContentType() 메서드는 응답의 콘텐츠 타입을 설정힌다. 이를 통해 브라우저는 어떤 종류의 데이터를 받을 것인지 알 수 있다.
4. 페이지 이동하기(★)
- 페이지 이동은 HTML, JavaScript, Servlet/JSP에서 구현이 가능하다.
1) HTML
- <a href="">
- 사용자가 클릭을 해야 이동한다.
2) JavaScript
- location.href=''
- 호출할 수 있는 상황을 마음대로 통제할 수 있다.
3) Servlet/JSP
- response.sendRedirect(URL)
- JavaScript 방법과 비슷하다
response.sendRedirect("ex11_response_2.jsp");
🔻pageContext 객체
- 주로 페이지 이동 및 포워딩에 사용한다.
- pageContext.forward(URL)
pageContext.forward("URL");
Round-Trip
response.sendRedirect 로 이동하면 이동한 페이지로 주소가 바뀌고 pageContext.forward로 이동하면 이동하기 전 페이지의 주소가 찍힌다.
이 차이는 Round-trip 다르기 때문인데, Round-trip은 웹 애플리케이션에서 클라이언트와 서버 간에 데이터를 주고받는 과정을 의미한다.
둘의 Round-trip 차이점은 아래 링크를 참고한다.
https://steady-record.tistory.com/entry/내장-객체-저장소의-생명주기★
🔻session 객체
- 클라이언트(브라우저)의 세션 정보를 저장/관리하는 객체
- 세션 정보 : 사용자가 접속하여 종료할 때까지 개인정보
- 각 클라이언트별로 고유한 세션을 생성하고 이 세션을 통해 상태 정보를 유지한다.
- 자바로 치면 멤버변수라고 생각한다.
🔻application 객체
- 애플리케이션(웹 사이트)의 전체적인 정보를 관리/조작하는 객체
- 서블릿 컨텍스트에서 관리되며 모든 사용자가 공통으로 접근할 수 있다.
- 사이트 메모리에 하나만 생긴다. 공용변수, 자바로 치면 static 변수라고 생각한다.
session은 주로 사용자별로 유지되어야 하는 정보(로그인 상태, 장바구니 등)를 저장하는데 사용한다.
application은 웹 애플리케이션 전체에서 공유되어야 하는 데이터(공통 설정 정보, 데이터베이스 연결 풀)를 저장하는데 사용된다. 하지만 접속한 사람마다의 공동으로 관리할 항목은 많지 않다.
'SERVER(Servlet, JSP)' 카테고리의 다른 글
[JSP] cos library를 활용한 파일 업로드/다운로드 (0) | 2023.10.18 |
---|---|
[JSP] JSP 객체 : session 객체 (0) | 2023.10.18 |
[JPS] request : 클라이언트에서 서버로 전송할 때의 여러가지 관련 정보 가져오기 (0) | 2023.10.18 |
[JSP] JSP 내장 객체와 request (0) | 2023.10.17 |
[JSP] JSP 구성요소 (JSP 지시자, 스크립트 요소, 액션 태그) (0) | 2023.10.17 |