본문 바로가기
Dev/Java

JSP 내장 객체 (Implicit Object) 알아보기

by yeonise 2022. 8. 3.

웹은, 클라이언트가 서버로 요청을 보내면 서버는 그에 맞는 결과를 응답으로 돌려주는 형태로 동작한다. 이때 JSP의 내장 객체는 요청과 응답 혹은 HTTP 헤더 등의 정보를 쉽게 다룰 수 있도록 해준다.

 

내장 객체는 다음과 같은 특징을 지니고 있다.

  • 컨테이너가 미리 선언해놓은 참조 변수를 이용해 사용한다.
  • 별도의 객체 생성 없이 각 내장 객체의 메서드를 사용할 수 있다.
  • JSP 문서 안의 <% 스크립틀릿 %>과 <%= 표현식 %>에서만 사용할 수 있다.
  • <%! 선언부 %>에서는 즉시 사용하는 건 불가능하고, 매개변수로 전달받아 사용할 수 있다.

 

내장 객체는 총 아홉 가지가 있다.

내장 객체 타입 설명
request HttpServletRequest 클라이언트의 요청 정보를 저장
response HttpServletResponse 클라이언트의 요청에 대한 응답 정보를 저장
out JSPWriter JSP 페이지에 출력할 내용을 담는 출력 스트림
session HttpSession 웹 브라우저 정보를 유지하기 위한 세션 정보를 저장
application ServletContext 웹 애플리케이션 관련 컨텍스트 정보를 저장
pageContext PageContext JSP 페이지에 대한 정보를 저장
page Object JSP 페이지를 구현한 자바 클래스의 인스턴스
config ServletConfig JSP 페이지에 대한 설정 정보를 저장
exception Throwable 예외가 발생한 경우에 사용

1. request 객체

request 내장 객체는 JSP에서 가장 많이 사용되는 객체로 클라이언트가 전송한 요청 정보를 담고 있는 객체이다. 주요 기능은 다음과 같다.

  • 클라이언트와 서버에 대한 정보 읽기
  • 클라이언트가 전송한 요청 매개변수에 대한 정보 읽기
  • 요청 헤더 및 쿠키 정보 읽기

 

2. response 객체

request 내장 객체가 클라이언트의 요청 정보를 저장하는 역할을 했다면, response 내장 객체는 그와 반대로 요청에 대한 응답을 웹 브라우저로 보내주는 역할을 한다. 주요 기능은 다음과 같다. 아래 두 기능 외에도 몇 가지가 더 있으나 JSP에서는 거의 사용하지 않는다.

  • 페이지 이동을 위한 redirect
  • HTTP 헤어에 응답 헤더 추가하기

 

3. out 객체

out 내장 객체는 웹 브라우저에 변수 등의 값을 출력할 때 주로 사용한다. 하지만 JSP를 작성하면서 사용하는 일은 그리 많지 않다. 대부분의 상황에서 out 객체보다 표현식을 사용하는 것이 더 편리하기 때문이다. 하지만 스크립틀릿 내에서 변수를 웹 브라우저에 출력해야 한다면 표현식보다는 out 내장 객체를 사용하는 편이 좋다.

 

4. application 객체

application 내장 객체는 웹 애플리케이션당 하나만 생성되며, 모든 JSP 페이지에서 접근할 수 있다. application 내장 객체는 ServletContext 타입으로, 주로 웹 애플리케이션 전반에서 이용하는 정보를 저장하거나, 서버의 정보, 서버의 물리적 경로 등을 얻어오는 데 사용한다.

 

5. exception 객체

exception 객체는 오류명과 오류 메시지를 출력하는 부분에서 사용한다. JSP에서 그 이상으로 사용되는 경우가 거의 없다.

 

JSP로 프로그래밍을 하다 보면 가장 빈번하게 발생되는 에러가 404, 405, 500 에러이다. HTTP에서 발생되는 에러는 훨씬 다양하나, 아래의 세 가지 정도만 알고 있어도 충분하다.

 

HTTP 에러 코드 설명 및 조치 방법

HTTP 에러 코드 에러 의미 조치 방법
404 Not Found : 클라이언트가 요청한 경로에서 문서를 찾을 수 없습니다. URL 상의 경로명이나 파일명이 제대로 입력되었는지 확인한다.
405 Method Not Allowed : 허용되지 않는 메서드라는 뜻으로, GET 방식 혹은 POST 방식으로 요청했는데 이를 처리할 컨트롤러가 없습니다. 주로 서블릿으로 개발할 때 발생하게 되는데 doGet(), doPost() 메서드가 적절히 오버라이딩되었는지 확인한다.
500 Internal Server Error : 서버 내부 오류로, 코드에 오타가 있거나 로직에 문제가 있어 웹 서버가 요청한 사항을 수행할 수 없습니다. 가장 많이 발생하는 에러로, 개발 중인 코드를 전반적으로 확인하여 오류를 처리해야 합니다.

 

 

 

reference JSP 자바 웹 프로그래밍

댓글