본문 바로가기

공부 자료/JSP, Servlet

[Servlet] 내장 객체

내장 객체

: 웹 컨테이너가 제공하는 고정된 이름의 객체

: 공통적으로 요구되는 javax.servlet 패키지 아래 8개의 객체와 예외 처리를 위한 java.lang 패키지 아래 1개의 객체를 각각 JSP 스펙에서 정해진 이름의 객체로 제공

: JSP 페이지에서 사용할 수 있도록 JSP 컨테이너에 미리 정의된 객체

: 요청하는 페이지와 응답하는 페이지가 바로 연결되는 것이 아닌 중간 매개체 역할로, 컨트롤러가 요청에 대한 정보를 받아올 때 request, 요청에 대한 응답을 줄 때 누구에게 줄 것인지를 저장하고 있는 response

 


내장 객체 종류

- request

: 클라이언트의 HTTP 요청 정보를 저장한 객체, 요청받은 객체를 위임한 컴포넌트에도 동일하게 전달 가능

: 클라이언트의 요청이 처리되는 동안 유효하며, forward/include를 이용하는 경우 여러 개의 페이지에서도 요청 정보가 유지되어 req 영역의 속성을 여러 페이지에서 공유 가능

- response : HTTP 요청에 대한 응답 정보를 저장한 객체

>> 요청을 받고, 응답을 줄 때마다 새로 생성됨(동일한 요청이 2번이더라도 각각 생성됨)

 

- session

: 클라이언트의 세션 정보를 저장한 객체

: 세션이 유지되는 동안 유효

>> request, response와 달리 클라이언트(특정 ip) 당 하나의 session을 가지며(로그인 구현 시 활용하면 좋음), 여러개를 요청하더라도 동일한 session을 가짐

>> 연결이 끊기면 톰캣에서 알아서 종료됨

 

- pageContext : 페이지 실행에 필요한 컨텍스트 정보를 저장한 객체

>> 해당 페이지가 클라이언트에 서비스를 제공하는 동안에만 유효하여, 서블릿 인스턴스의 _jspService() 메서드가 실행되는 동안 유효

 

- out : 응답 페이지 전송을 위한 출력 스트림 객체

 

- application : 동일한 어플리케이션의 컨텍스트 정보를 저장한 객체로 웹 애플리케이션이 실행되고 있는 동안 유효

>> 모든 사용자가 모든 페이지에서 공유하고 있는 것

>> 웹 컨테이너에서 해당 어플리케이션은 오직 하나만의 실행되므로 4가지 영역 중 가장 큰 영역

 

- config : 해당 페이지의 서블릿 설정 정보를 저장한 객체

- page : 해당 페이지의 서블릿 객체/인스턴스로 JSP 페이지에 의해 생성되는 서블릿 인스턴스 자체를 나타내는 객체

-exception : 예외 처리를 위한 객체, 예외를 던저주면 error 페이지로 지정된 페이지로 이동함

 


request 객체

: 사용자의 요청에 관련된 정보를 얻기 위해 사용하는 객체

: 요청 파라미터와 관련된 메서드들

 

[파라미터]

- getParameter(String name), String 타입 : name이란 이름으로 지정된 파라미터에 할당된 값을 리턴

- getParameterValues(String name) , String[] 타입 : name이란 이름으로 지정된 파라미터의 모든 값을 String 배열로 리턴

- getParameterNames(), Enumeration 타입 : 요청에 포함된 모든 파라미터 이름을 객체로 리턴

 

[헤더]

- getHeader(String headerName), String 타입 : HTTP 요청 헤더에 headerName으로 지정된 이름으로 할당된 값을 리턴

- getHeaders(String headerName), Enumeration 타입 : headerName으로 지정된 이름으로 할당된 모든 값을 객체로 리턴

- getHeaderNames(), Enumeration 타입 : HTTP 요청 헤더에 포함된 모든 헤더 이름을 객체로 리턴

- getIntHeader(String headerName), int 타입 : headerName 헤더의 값을 리턴

 

[세션]

- getSession() , HttpSession 타입 : 요청한 클라이언트에 지정된 HttpSession 객체를 리턴하고 객체가 없으면 생성해 리턴

- getSession(Boolean create), HttpSession 타입 : create가 true일 경우 getSession()과 동일, false일 경우 null 리턴

- getRequestedSessionId(), String 타입 : 요청한 클라이언트에 지정된 세션의 ID를 문자열로 리턴

- isRequesetedSessionIdValid(), Boolean 타입 : 요청에 포함된 클라이언트의 세션 ID가 유효하면 true를 아니면 false를 리턴

 

[쿠키, URL/URI, 기타]

- getCookies(), Cookie[] 타입 : HTTP 요청 메시지의 헤더에 포함된 쿠키를 리턴

- getServerName(), String 타입 : 서버의 도메인명 리턴

- getServerPort(), int 타입 : 서버의 포트 번호를 리턴

- getRequestURL(), StringBuffer 타입 : 요청 URL을 리턴

- getRequestURI(), String 타입 : 요청 URI를 리턴

- getQueryString(), String 타입 : 요청에 사용된 쿼리 문장을 리턴


Response 객체

: 클라이언트의 요청에 대한 HTTP 응답을 나타내는 객체

 

[메서드]

- setHeader(String headerName, String value) : 응답에 포함될 헤더 정보에 headerName의 이름으로 value 값을 설정해 추가

- addCookie(Cookie cookie) : 쿠키를 헤더에 추가

- sendRedirect(String url) : 지정된 URL로 요청을 재전송

- setContentType(String type) : 응답 페이지의 contentType 설정


pageContext 객체

: JSP 페이지와 관련된 프로그램에서 다른 내장 객체를 얻어 내거나 현재 페이지의 요청과 응답의 제어권을 다른 페이지로 넘겨주는데 사용

: request, session, application과 같은 내장 객체의 속성을 제어

 

- getRequest(), ServletRequest 타입 : 클라이언트의 요청 정보를 담고 있는 객체를 리턴

- getResponse(), ServletResponse 타입 : 요청에 대한 응답 객체를 리턴

- getOut(), jspWriter 타입 : 응답 출력 스트림 리턴

- getPage(), Object 타입 : 서블릿 인스턴스 객체 리턴

- getServletConfig(), ServletConfig 타입 : 서블릿의 초기 설정 정보를 담고있는 객체 리턴

- getServletContext(), ServletContext 타입 : 서블릿의 실행 환경 정보를 담고있는 객체 리턴

- getSession(), HttpSession 타입 : 클라이언트의 세션 정보를 담고 있는 객체 리턴

- forward(String url)

: 현재 페이지의 요청과 응답에 대한 제어권을 지정된 URL 주소로 영구적으로 넘김

: foward된 페이지의 요청 처리기가 종료되면 응답도 종료

- include(String url)

: 현재 페이지의 요청과 응답에 대한 제어권을 지정된 URL 주소로 영구적으로 넘김

: include된 페이지의 처리가 끝나면 제어권은 원래 페이지로 돌아와 지정된 페이지의 내용을 원래 페이지에 삽입하는 효과


Session 객체

: 클라이언트와 서버와의 연결 유지(한 사용자당 모든 페이지가 공유될 수 있도록 하는데)에 사용

: 연결은 되어있지만 정보를 활용하지 않으면 모를 수 있음

 

- getId(), String 타입 : 해당 세션의 세션 ID를 리턴

- getCreationTime(), long 타입 : 1970년 1월1일을 기준으로 세션이 생성된 순간까지의 시간을 밀리초로 계산해 리턴

- getLastAccessedTime(), long 타입 : epoch로부터 해당 세션에 마지막으로 접근된 시간가지의 시간을 밀리초로 계산해 리턴

- getMaxinactiveInterval(), int 타입 : 클라리언트의 요청이 없을 경우 서버가 세션을 유지하도록 지정된 시간을 초 단위로 리턴

- invalidate() : 세션의 속성 값으로 지정된 모든 객체를 반납해 세션을 종료

- isNew(), boolean 타입 : 새로운 새션이면 true, 기존 세션 유지는 false 리턴

- setMaxinactiveInterval(int seconds) : 클라이언트의 요청이 없어도 세션을 유지할 시간을 설정

 


application 객체

: 해당 웹 애플리케이션의 실행 환경을 제공하는 서버의 정보와 서버측 자원에 대한 정보를 얻어 내거나 해당 어플리케이션의 이벤트로 그를 다루는 메서드 제공

 

- getMajorVersion(), int 타입 : Servlet API 스펙의 Major 버전 리턴

- getMinorVersion(), int 타입 : Servlet API 스펙의 Minor 버전 리턴

- getServerInfo(), String 타입 : 서블릿/JSP 컨테이너의 이름과 버전을 리턴

- getMimeType(String file), String 타입 : 서버에 존재하는 file 이란 이름을 가진 파일의 MIME 타입을 문자열로 리턴

- getResource(String path), URL 타입 : path로 지정된 경로의 자원을 URL 객체로 리턴

- getResourceAsStream(String path), InputStream 타입 : path로 지정된 경로의 자원을 객체로 리턴

- getRealPath(String path), String : path로 지정된 경로의 자원을 서버의 실제 파일 시스템 상의 경로로 변경해 리턴

- log(String msg) : 문자열 msg를 서블릿 로그 파일에 기록

- log(String msg, exception) : 문자열 msg와 예외의 StackTrace 정보를 로그 파일에 기록


out 객체

: 서블릿/JSP 컨테이너가 응답 페이지를 만들기 위해 사용하는 출력 스트림 객체

 

- clear() : 출력 버퍼에 저장된 내용을 삭제, 다 채워진 경우 예외 발생

- clearBuffer() : 출력 버퍼에 저장된 내용을 삭제, 다 채워진 경우 예외를 발생시키지 않고 저장된 버퍼만 삭제

- flush() : 현재 버퍼에 저장되어 있는 내용을 클라이언트로 전송하고 버퍼를 삭제

- close() : 출력 버퍼를 클라이언트로 전송하고 출력 스트림을 종료

- isAutoFlush(), boolean 타입 : Page 지시어의 autoFlush 속성으로 지정된 값을 리턴

- getBufferSize(), int 타입 : 출력 버퍼의 크기를 바이트 단위로 계산해 정수 값으로 리턴

- getRemaining(), int 타입 : 출력 버퍼에 남은 양을 바이트 단위로 계산해 리턴

-print(String str) : 출력 스트림으로 str 문자열 출력


config 객체

: JSP 페이지가 서블릿 클래스로 변환되어 서블릿 인스턴스가 생성될 때 참조해야 할 초기 설정 정보들을 저장해 놓은 객체

 

- getInitParameter(String init_paramName), String 타입 : 컨테이너의 설정 파일에 저장되어 있는 초기 파라미터 값 중 init_paramName을 가진 파라미터 값 리턴

-getInitParameterNames(), Enumeration 타입 : 컨테이너의 설정 파일에 저장되어 있는 모든 초기 파라미터 이름을 리턴

- getServletName(), String 타입 : 해당 서블릿의 이름을 리턴


exception 객체

: JSP 페이지에서 예외가 발생하였을 경우 그 예외를 처리할 에러 페이지를 사용자가 지정한 경우 해당 에러페이지에 전달되는 객체

 

- getMassage(), String 타입 : 에러 메시지를 리턴

- printStackTrace() : 에러의 StackTrace 정보를 출력

- printStackTrace(PrintWriter out) : 에러의 StackTrace 정보를 PrintWriter 객체 out으로 출력

- printStackTrace(PrintStream out) : 에러의 StackTrace 정보를 PrintStream 객체 out으로 출력


영역(Scope: 속성을 공유할 수 있는 유효 범위)과 속성(Attribute: 공유되는 데이터)

 

pageContext, request, session, application 내장 객체들이 동일하게 정의하고 있는 메서드

- getAttributes(String key), Object 타입 : key 값으로 등록되어 있는 속성을 리턴

- getAttributeNames(), Enumeration 타입 : 해당 영역에 등록되어 있는 모든 속성들의 이름을 리턴

- setAttribute(String key, Object obj) : 해당 영역에 key 값의 이름으로 obj 객체 등록

- removeAttribute(String key) : key 값으로 등록되어 있는 속성 제거

 

 

'공부 자료 > JSP, Servlet' 카테고리의 다른 글

[JSP] 액션 태그  (0) 2023.09.22