[ITWILL : JSP]내장객체

ITWILL학원 : 13강 JSP기초 BY 정규태강사

JSP 내장객체

서블릿(JSP -> JAVA로 변환하는 것)을 실행할때 필요한 정보를 저장하고 있는 객체이다.
원래 객체는 외부에 있기에 import를 추가해야하지만,
내장객체의 경우 기본적으로 포함되어있기때문에 따로 객체를 생성하거나, import로 추가할 필요가 없다.

자주사용하는 객체 6가지는 무조건 암기할 것!

내장객체는 총 9가지이다.

  • java.servlet 패키지 8가지

    1. request : 클라이언트의 Http 요청 정보를 저장하는 객체
    2. response : Http 요청을 처리하는 응답 정보를 저장하는 객체
    3. session : 해당 클라이언트의 세션정보를 저장하는 객체
      • 예시 : 은행웹접속하면 10분지나면 ‘로그인세션이 만료하였습니다’
    4. pageContext : 페이지가 실행할때 필요한 컨텍스트 정보를 저장하는 객체
      • 컨텍스트정보 = 프로젝트정보
    5. out : 응답페이지에 전송하기위한 출력스트림 객체
      • 버퍼링 : 버퍼라는 공간을 채우는 작업이 버퍼링이다. 데이터가 큰 경우 전체 데이터를 작은 단위로 잘라서(버퍼) 먼저 데이터를 보여주는 것이다. 이것이 발전된 형태가 스트림이다.
      • 스트림 : 데이터를 글자단위로 보내는 것이 아니라 스트림단위로 보낸다. 물흐르듯 데이터를 계속 보내는 것을 스트림이라고 한다.
        • 예시 : 음악스트리밍
    6. application : 해당 애플리케이션의 정보를 저장하는 객체
      • 헷갈릴수있는게 스마트폰등의 안드로이드 앱이 아니라 응용프로그램전체라는 의미이다.
        • 개념을 분리하자. jsp에서는 애플리케이션의 정보를 저장한 객체이다.
        • 예시 : 누적페이지방문수를 표시할때 application객체를 이용한다
    7. config : 페이지의 서블릿설정 정보를 저장하는 객체
      • 서블리설정 = 초기화값
    8. page : 페이지의 서블릿 객체
  • java.lang 패키기 1가지

    1. exception : 예외처리를 다루는 객체

2. 자주 사용하는 내장객체 : request객체

클라이언트의 Http 요청 정보를 저장하는 객체이다
js에서 객체는 아래와 같이 만들었다.

1
let 참조변수a = new 객체();

HttpServeltRequest 클래스를 객체로 구현한 뒤 request 이름(참조변수a)으로 사용한다.
웹페이지에서 사용하는 왠만한 데이터들은 다 request객체로 가져 올 수있다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
서버도메인명 : <%= request.getServerName() %><br>
서버포트번호 : <%= request.getServerPort() %><br>
URL : <%= request.getRequestURL() %><br>
URI : <%= request.getRequestURI() %><br>
클라이언트호스트명 : <%= request.getRemoteHost() %><br>
클라이언트IP주소 : <%= request.getRemoteAddr() %><br>
프로토콜정보 : <%= request.getProtocol() %><br>
요청정보방식(전송방식) : <%= request.getMethod() %><br>
컨텍스트경로(프로젝트경로) : <%= request.getContextPath() %><br>

물리적경로 : <%= request.getRealPath("/") %><br>
- 물리적경로란? 하드디스크의 어디에 저장하는 지가 물리적경로<br>

Http헤더(user-agent) : <%= request.getHeader("user-agent") %><br>
- Http헤더(user-agent)란? 이용자가 사용하고있는 웹사이트 정보<br>

Http헤더(accept-language) : <%= request.getHeader("accept-language") %><br>
Http헤더(host) : <%= request.getHeader("host") %><br>
Http헤더(connection) : <%= request.getHeader("connection") %><br>

3. 자주 사용하는 내장객체 : response객체

Http 요청을 처리하는 응답 정보를 저장하는 객체이다.

1
2
3
4
5
6
7
8
9
10
11
<%
response.setHeader("해더이름", 값);
response.addCookie("쿠키값");
response.setContentType("타입");
response.sendRedirect("주소");

//예시

response.sendRedirect("httl://www.naver.com");
//코드를 작성한 html파일에서 실행했지만 자동으로 네이버로 이동됨
%>

4. 자주 사용하는 내장객체 : session객체

해당 클라이언트의 세션정보를 저장하는 객체
세션은 만들어지는 시간, 최종시간등을 확인할 수 있다.

  • 예시 : 은행웹접속하면 10분지나면 ‘로그인세션이 만료하였습니다’
1
2
3
4
5
6
7
8
9
10
세션 ID : <%=session.getId() %><br>
세션 생성 시간 : <%=session.getCreationTime() %>
세션 최종 접속시간 : <%=session.getLastAccessedTime() %> <br>
세션 유지시간 : <%=session.getMaxInactiveInterval() %> <br>
- 세션 유지시간 default값 : 1800초 = 30분<br>
<%
// 세션 유지시간 변경 :30-> 60분
session.setMaxInactiveInterval(3600);
%>
변경된 세션 유지시간 (3600초,60분): <%=session.getMaxInactiveInterval() %> <br>

5. 자주 사용하는 내장객체 : application객체

해당 애플리케이션의 정보를 저장하는 객체
헷갈릴수있는게 스마트폰등의 안드로이드 앱이 아니라 응용프로그램전체라는 의미이다.
개념을 분리하자. jsp에서는 애플리케이션의 정보를 저장한 객체이다.
예시 : 누적페이지방문수를 표시할때 application객체를 이용한다

1
2
3
서버정보 : <%=application.getServerInfo() %><br>
물리적경로 : <%=application.getRealPath("/") %><br>
-슬러시(/)는 root라는 의미로 최상위경로를 의미한다.

6. 자주 사용하는 내장객체 : out객체

응답페이지에 전송하기위한 출력스트림 객체

  1. 버퍼링 : 버퍼라는 공간을 채우는 작업이 버퍼링이다. 데이터가 큰 경우 전체 데이터를 작은 단위로 잘라서(버퍼) 먼저 데이터를 보여주는 것이다. 이것이 발전된 형태가 스트림이다.

  2. 스트림 : 데이터를 글자단위로 보내는 것이 아니라 스트림단위로 보낸다. 물흐르듯 데이터를 계속 보내는 것을 스트림이라고 한다.

    • 예시 : 음악스트리밍

버퍼사이즈를 다 사용하면 출력에 문제가 생길수있다. 입출력작업자체가 자원을 많이 사용하므로 out객체를 사용하고나서 out.close()매서드를 사용해야한다

1
2
3
4
5
6
7
8
9
<%
out.print("out객체 사용<br>");
%>
버퍼 사이즈 : <%=out.getBufferSize() %> BYTE<br>
사용후 남은 버퍼사이즈 : <%=out.getRemaining() %> BYTE<br>
- out객체를 사용하고나서 out.close()매서드를 사용해야한다
<%
out.close(); //자원해제
%>