![](https://velog.velcdn.com/images/minhye1020/post/0fbf89db-65e1-458d-8420-3ccf2fe4a7f1/image.png)
▣ 내장객체
- JSP의 내장 객체(Implicit Object)는 기본적인 요청과 응답, 화면출력 등을 담당
![](https://velog.velcdn.com/images/minhye1020/post/670843b8-08f2-45bc-a3f6-cc95a7c13818/image.png)
- Tomcat 컨테이너가 미리 선언하여 별도의 생성없이 사용할 수 있음
- <% 스크립틀릿 %>과 <%= 표현식 %>에서는 즉시 사용 가능
- <%! 선언부 %>에서는 매개변수로 전달받아 사용할 수 있음
- 내장객체는 JSP가 서블릿으로 변환될때 생성되는 _jspService( ) 메서드 내부에 선언되기 때문
![](https://velog.velcdn.com/images/minhye1020/post/50eb95a8-8526-489d-955e-1dba4507c069/image.png)
- 스크립틀릿과 표현식의 코드는 _jspService( ) 내부에 기술됨 ⇒ 즉시 사용 가능
- 선언부의 코드는 _jspService( ) 외부에 기술됨 ⇒ 매개변수로 전달 받은 후 사용 가능
▣ 내장객체의 종류
![](https://velog.velcdn.com/images/minhye1020/post/34104ee8-aed6-4dea-9cd7-a9fa7042c4c7/image.png)
▣ request 객체
- JSP에서 가장 많이 사용되는 객체로, 클라이언트의 요청 정보를 담고 있음
- 주요기능
- 클라이언트와 서버에 대한 정보 읽기
- 클라이언트가 전송한 요청 매개변수에 대한 정보 읽기
- 요청 헤더 및 쿠키 정보 읽기
▣ 클라이언트와 서버의 환경정보 읽기
- 클라이언트의 요청에 따른 전송방식(GET / POST)
- 요청 URL(HOST포함) 및 URI(HOST 미포함)
- 포트번호, IP주소 등의 정보를 얻어올 수 있음
![](https://velog.velcdn.com/images/minhye1020/post/25123d25-390d-4b7f-98b3-4bda8e42928b/image.png)
▣ 클라이언트의 요청 매개변수 읽기
<form>
태그 하위 요소를 통해 전송(submit)한 폼값을 받을 수 있음
- 전송된 값이 하나인 경우 getParameter() 사용
<input>
태그의 type속성이 text, password, radio 일때 입력값
<textarea>
태그의 입력값
<select>
태그의 선택값(multiple 속성 없음)
- 전송된 값이 둘 이상인 경우 getParameterValues() 사용
- <input>
태그의 type속성이 checkbox 일때 선택값
- <select>
태그의 여러 선택값(multiple 속성 추가)
✔️ 예제 2-3] 02ImplicitObject/RequestParameter.jsp
![](https://velog.velcdn.com/images/minhye1020/post/6dc7a539-17ac-4f74-a35e-2ea7462c880a/image.png)
▣ HTTP 요청 헤더 정보 읽기
- HTTP 프로토콜은 헤더에 부가적인 정보를 저장할 수 있음
- user-agent : 웹 브라우저의 종류
- referer : 웹을 서핑하면서 링크를 통해 다른 사이트로 방문 시 남는 흔적
- cookie : 쿠키 정보
- 그 외 여러가지 정보
![](https://velog.velcdn.com/images/minhye1020/post/56668c9a-0c6c-45b4-9408-6a64847542b9/image.png)
▣ response 객체
- 클라이언트의 요청에 대한 응답을 웹 브라우저로 보내주는 역할
- 주요 기능
- 페이지 이동을 위한 리다이렉트(redirect)
- HTTP 헤더에 응답 헤더 추가
- 그 외에는 거의 사용되지 않음
▣ sendRedirect()로 페이지 이동하기
- HTML의
<a>
태그, 자바스크립트의 location 객체와 동일
- 단순 문자열 비교를 통한 로그인 기능 구현
![](https://velog.velcdn.com/images/minhye1020/post/2aad385c-6643-4e72-b50c-d0352c9d6949/image.png)
✔️ 예제 2-5] 02ImplicitObject/ResponseMain.jsp
![](https://velog.velcdn.com/images/minhye1020/post/660e67cb-d746-4f6d-b698-cfc730afa321/image.png)
✔️ 예제 2-6] 02ImplicitObject/ResponseLogin.jsp
![](https://velog.velcdn.com/images/minhye1020/post/3e2d429e-d919-4324-b6e9-7e9785b8edb3/image.png)
❶ 아이디/비번을 파라미터로 받음
❷ 단순 문자열 비교로 검증
❸ 인증성공인 경우 페이지 이동
❹ 인증실패인 경우 포워드
✔️ 예제 2-7] 02ImplicitObject/ResponseWelcome.jsp
![](https://velog.velcdn.com/images/minhye1020/post/ff0280da-351b-4bd9-a0ae-a0a6f894d9d5/image.png)
인증에 실패한 경우에는 ResponseMain.jsp로 포워드
![](https://velog.velcdn.com/images/minhye1020/post/b7afe83d-c328-4d3a-88ea-779d99740a01/image.png)
- 주소줄에는 ResponseLogin.jsp로 표시
- 하지만 화면에는 ResponseMain.jsp의 내용이 출력
- ‘포워드’는 이와같이 실행의 흐름만 특정 페이지로 넘겨주는 역할을 함!
▣ HTTP 헤더에 응답 헤더 추가하기
- response 내장 객체는 응답 헤더에 정보를 추가하는 기능을 제공
- add 계열은 헤더값을 새로 추가할 때 사용
- set 계열은 기존의 헤더를 수정할 때 사용
![](https://velog.velcdn.com/images/minhye1020/post/3ca9df9f-049b-40f8-b8ad-08156eb66242/image.png)
❶ 날짜포맷은 시간까지 설정하고, 시간이 09:00 이후여야 오늘날짜로 설정됨.
❸ addXX() 로 헤더값 추가
❹ setXX() 로 기존 헤더값 수정
▣ HTTP 헤더에 응답 헤더 추가하기
- getHeader() 메서드로 출력하면 값이 여러개라도 첫 번째 값만 가져옴
![](https://velog.velcdn.com/images/minhye1020/post/42e9e2a8-a5fd-4f73-979e-70826621ddc5/image.png)
- getHeaders() 메서드로 출력하면 같은 헤더명이라도 다른 값을 출력함
![](https://velog.velcdn.com/images/minhye1020/post/b4496dc8-6999-492e-a8cf-ed78d87c3e58/image.png)
▣ out 객체
- 웹 브라우저에 변수 등의 값을 출력할 때 주로 사용
- 출력되는 모든 정보는 버퍼에 먼저 저장된 후 웹 브라우저에 출력
✔️ 예제 2-9] 02ImplicitObject/OutMain.jsp
![](https://velog.velcdn.com/images/minhye1020/post/10a3802e-8211-4aa4-8ec3-8d2bbc67c324/image.png)
▣ application 객체
- 웹 애플리케이션당 하나만 생성되며, 모든 JSP 페이지에서 접근할 수 있음
- 주요기능
- web.xml에 설정한 컨텍스트 초기화 매개변수 읽기
- 폴더의 물리적 경로 얻어오기
✔️ 예제 2-10] WEB-INF/web.xml
![](https://velog.velcdn.com/images/minhye1020/post/b2caf947-643b-4387-b246-48fc6fa1ea8b/image.png)
✔️ 예제 2-10] 02ImplicitObject/ApplicationMain.jsp
![](https://velog.velcdn.com/images/minhye1020/post/191c9a54-c64a-47b3-9b2b-5043897c2f72/image.png)
❷ /02ImplicitObject 폴더의 물리적 경로를 얻어옴. 이클립스에서는 .metadata 하위로 설정됨
✔️ 예제 2-10] 02ImplicitObject/ApplicationMain.jsp
![](https://velog.velcdn.com/images/minhye1020/post/31f59a58-7f9a-4f37-98d7-22dd0e4a5779/image.png)
❸ getServletContext() 를 통해 application 내장객체를 얻음
❹ 매개변수를 통해 application 내장객체를 얻음
▣ exception 객체
- 오류명과 오류 메시지를 출력하는 부분에서 사용
- JSP에서 그 이상으로 사용되는 경우가 거의 없으므로 오류페이지 처리를 위한 또 다른 방식을 학습
- 웹 프로그래밍에서 주로 발생되는 에러
![](https://velog.velcdn.com/images/minhye1020/post/0149bc39-165e-42df-bcf4-7f3aa4670d81/image.png)
✔️ 예제 2-12] WEB-INF/web.xml
![](https://velog.velcdn.com/images/minhye1020/post/8a0ae115-5e36-4d0b-9e4f-7a658efc5348/image.png)
404에러가 발생하면 Exception.jsp 에서 에러를 처리하는 형식으로 텍스트, 이미지를 적절히 출력함
✔️ 예제 2-13] 02ImplicitObject/Exception.jsp
![](https://velog.velcdn.com/images/minhye1020/post/d0bd0b3e-db96-497f-86a6-af604e12594d/image.png)
- JSP의 내장 객체는 별도의 선언 없이 사용할 수 있음
- 클라이언트의 요청을 받거나 요청에 대한 응답을 할 수 있음
- 자바 코드에 대한 예외 처리를 할 수 있음
▣ 핵심요약
- request 객체 : 클라이언트의 요청을 받거나 웹 브라우저에 대한 정보 혹은 요청 헤더에 대한 정보를 읽을 때 사용
- response 객체 : 요청에 대한 응답을 웹 브라우저로 보낼 때 사용. 페이지 이동이나 응답 헤더를 추가할 때도 사용.
- out 객체 : 변수 등의 값을 웹 브라우저에 출력할 때 주로 사용.
- application 객체 : 웹 애플리케이션을 구성하는 모든 JSP에서 접근 가능한 객체로, 웹 애플리케이션에 대한 설정값을 저장할 때 주로 사용.
- exception 객체 : 예외 처리를 위해 사용.