영역(scope) : 속성을 공유할 수 있는 유효범위
속성(attribute): 공유되는 데이터
객체 범위 종류
1. application 영역
서버가 유지되고 있는 동안 상태 유지 (ex. 모든 어플리케이션이 공유할 자원). 같은 애플리케이션 내에서 요청되는 페이지들은 애플리케이션 영역을 공유
- JSP : Context클래스
- Servlet : ServletContext클래스
2. session 영역
세션이 설정되서 세션이 종료할 때까지 상태 유지(ex. 로그인정보, 장바구니). 같은 브라우저 내에서 요청되는 페이지들은 세션 영역을 공유
- JSP : session 내장객체 사용
- Servlet : HttpSession 클래스를 이용 세션 객체 얻기
HttpSession session=request.getSession();
3. request 영역
다음 페이지까지 상태 유지 (1:1의 관계) (ex. 게시판, 방명록). 요청을 받아서 응답하기가지 객체가 유효.
- Servlet
RequestDispatcher rd = request.getRequestDispatcher("상대경로/파일명");
request.setAttribute("세션명",객체명);
rd.forward(request, response);
4. page 영역
현재 페이지에서만 상태 유지 (해당 JSP 페이지)
Scope 테스트 해보기
- app.jsp 생성
페이지를 접속할 때마다 동일 애플리케이션 상에 같은 객체를 공유하고 있기 때문에 누적되어 카운트 되는 것을 확인할 수 있다.
<%@ page contentType="text/html; charset=UTF-8"%>
<%
request.setCharacterEncoding("UTF-8");
//Scope(영역)
//page , request, session, application영역
//application영역
int n=0;
String count = (String) application.getAttribute("count");
if(count!=null){
n = Integer.parseInt(count);
}
n++;
application.setAttribute("count", Integer.toString(n));
//실제 접속자의 주소
String realPath = application.getRealPath("/");
application.log("접속자 : " + request.getRemoteAddr());
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
총 접속자 : <%=n %><br/>
웹서버 실제 경로 : <%=realPath %>
</body>
</html>
- 출력 페이지
'Dev > JSP & Servlet' 카테고리의 다른 글
JSP - 캐릭터 인코딩, 디코딩 (0) | 2019.02.19 |
---|---|
JSP - 세션과 input태그를 통한 데이터 전송 비교 (0) | 2019.02.19 |
JSP - Redirect, Forward, Session (0) | 2019.02.15 |
JSP 예제, get/post방식 (2) | 2019.02.14 |
JSP 실행구조, 페이지 요청 라이프 사이클 (0) | 2019.02.14 |