웹은, 클라이언트가 서버로 요청을 보내면 서버는 그에 맞는 결과를 응답으로 돌려주는 형태로 동작한다. 이때 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 자바 웹 프로그래밍
'Dev > Java' 카테고리의 다른 글
| 자바 형 변환 관련 함수들 (0) | 2022.11.13 |
|---|---|
| JAR vs WAR 특징 알아보기 (0) | 2022.11.01 |
| JSP 기본 구조 - 지시어, 스크립트 요소 (0) | 2022.08.02 |
| JDBC 프로그래밍을 해보자 (2) (0) | 2022.07.27 |
| JDBC 프로그래밍을 해보자 (1) (0) | 2022.07.27 |
댓글