[JSP] 02. 내장 객체 (Implicit Object)

Min's Study Note·2023년 11월 1일
0

JSP

목록 보기
4/16

▣ 내장객체

  • JSP의 내장 객체(Implicit Object)는 기본적인 요청과 응답, 화면출력 등을 담당
  • Tomcat 컨테이너가 미리 선언하여 별도의 생성없이 사용할 수 있음
  • <% 스크립틀릿 %>과 <%= 표현식 %>에서는 즉시 사용 가능
  • <%! 선언부 %>에서는 매개변수로 전달받아 사용할 수 있음
  • 내장객체는 JSP가 서블릿으로 변환될때 생성되는 _jspService( ) 메서드 내부에 선언되기 때문
  • 스크립틀릿과 표현식의 코드는 _jspService( ) 내부에 기술됨 ⇒ 즉시 사용 가능
  • 선언부의 코드는 _jspService( ) 외부에 기술됨 ⇒ 매개변수로 전달 받은 후 사용 가능

▣ 내장객체의 종류

▣ request 객체

  • JSP에서 가장 많이 사용되는 객체로, 클라이언트의 요청 정보를 담고 있음
  • 주요기능
    - 클라이언트와 서버에 대한 정보 읽기
    - 클라이언트가 전송한 요청 매개변수에 대한 정보 읽기
    - 요청 헤더 및 쿠키 정보 읽기

▣ 클라이언트와 서버의 환경정보 읽기

  • 클라이언트의 요청에 따른 전송방식(GET / POST)
  • 요청 URL(HOST포함) 및 URI(HOST 미포함)
  • 포트번호, IP주소 등의 정보를 얻어올 수 있음

▣ 클라이언트의 요청 매개변수 읽기

  • <form> 태그 하위 요소를 통해 전송(submit)한 폼값을 받을 수 있음
  • 전송된 값이 하나인 경우 getParameter() 사용
    • <input> 태그의 type속성이 text, password, radio 일때 입력값
    • <textarea> 태그의 입력값
    • <select> 태그의 선택값(multiple 속성 없음)
  • 전송된 값이 둘 이상인 경우 getParameterValues() 사용
    - <input> 태그의 type속성이 checkbox 일때 선택값
    - <select> 태그의 여러 선택값(multiple 속성 추가)

✔️ 예제 2-3] 02ImplicitObject/RequestParameter.jsp

▣ HTTP 요청 헤더 정보 읽기

  • HTTP 프로토콜은 헤더에 부가적인 정보를 저장할 수 있음
    - user-agent : 웹 브라우저의 종류
    - referer : 웹을 서핑하면서 링크를 통해 다른 사이트로 방문 시 남는 흔적
    - cookie : 쿠키 정보
    - 그 외 여러가지 정보

✔️ 예제 2-4] 02ImplicitObject/RequestHeader.jsp

▣ response 객체

  • 클라이언트의 요청에 대한 응답을 웹 브라우저로 보내주는 역할
  • 주요 기능
    - 페이지 이동을 위한 리다이렉트(redirect)
    - HTTP 헤더에 응답 헤더 추가
    - 그 외에는 거의 사용되지 않음

▣ sendRedirect()로 페이지 이동하기

  • HTML의 <a> 태그, 자바스크립트의 location 객체와 동일
  • 단순 문자열 비교를 통한 로그인 기능 구현

✔️ 예제 2-5] 02ImplicitObject/ResponseMain.jsp

✔️ 예제 2-6] 02ImplicitObject/ResponseLogin.jsp


❶ 아이디/비번을 파라미터로 받음
❷ 단순 문자열 비교로 검증
❸ 인증성공인 경우 페이지 이동
❹ 인증실패인 경우 포워드

✔️ 예제 2-7] 02ImplicitObject/ResponseWelcome.jsp

인증에 실패한 경우에는 ResponseMain.jsp로 포워드

  • 주소줄에는 ResponseLogin.jsp로 표시
  • 하지만 화면에는 ResponseMain.jsp의 내용이 출력
  • ‘포워드’는 이와같이 실행의 흐름만 특정 페이지로 넘겨주는 역할을 함!

▣ HTTP 헤더에 응답 헤더 추가하기

  • response 내장 객체는 응답 헤더에 정보를 추가하는 기능을 제공
  • add 계열은 헤더값을 새로 추가할 때 사용
  • set 계열은 기존의 헤더를 수정할 때 사용

✔️ 예제 2-8] 02ImplicitObject/ResponseHeader.jsp


❶ 날짜포맷은 시간까지 설정하고, 시간이 09:00 이후여야 오늘날짜로 설정됨.
❸ addXX() 로 헤더값 추가
❹ setXX() 로 기존 헤더값 수정

▣ HTTP 헤더에 응답 헤더 추가하기

  • getHeader() 메서드로 출력하면 값이 여러개라도 첫 번째 값만 가져옴
  • getHeaders() 메서드로 출력하면 같은 헤더명이라도 다른 값을 출력함

▣ out 객체

  • 웹 브라우저에 변수 등의 값을 출력할 때 주로 사용
  • 출력되는 모든 정보는 버퍼에 먼저 저장된 후 웹 브라우저에 출력

✔️ 예제 2-9] 02ImplicitObject/OutMain.jsp

▣ application 객체

  • 웹 애플리케이션당 하나만 생성되며, 모든 JSP 페이지에서 접근할 수 있음
  • 주요기능
    - web.xml에 설정한 컨텍스트 초기화 매개변수 읽기
    - 폴더의 물리적 경로 얻어오기

✔️ 예제 2-10] WEB-INF/web.xml

✔️ 예제 2-10] 02ImplicitObject/ApplicationMain.jsp


❷ /02ImplicitObject 폴더의 물리적 경로를 얻어옴. 이클립스에서는 .metadata 하위로 설정됨

✔️ 예제 2-10] 02ImplicitObject/ApplicationMain.jsp


❸ getServletContext() 를 통해 application 내장객체를 얻음
❹ 매개변수를 통해 application 내장객체를 얻음

▣ exception 객체

  • 오류명과 오류 메시지를 출력하는 부분에서 사용
  • JSP에서 그 이상으로 사용되는 경우가 거의 없으므로 오류페이지 처리를 위한 또 다른 방식을 학습
  • 웹 프로그래밍에서 주로 발생되는 에러

✔️ 예제 2-12] WEB-INF/web.xml


404에러가 발생하면 Exception.jsp 에서 에러를 처리하는 형식으로 텍스트, 이미지를 적절히 출력함

✔️ 예제 2-13] 02ImplicitObject/Exception.jsp

  • JSP의 내장 객체는 별도의 선언 없이 사용할 수 있음
  • 클라이언트의 요청을 받거나 요청에 대한 응답을 할 수 있음
  • 자바 코드에 대한 예외 처리를 할 수 있음

▣ 핵심요약

  • request 객체 : 클라이언트의 요청을 받거나 웹 브라우저에 대한 정보 혹은 요청 헤더에 대한 정보를 읽을 때 사용
  • response 객체 : 요청에 대한 응답을 웹 브라우저로 보낼 때 사용. 페이지 이동이나 응답 헤더를 추가할 때도 사용.
  • out 객체 : 변수 등의 값을 웹 브라우저에 출력할 때 주로 사용.
  • application 객체 : 웹 애플리케이션을 구성하는 모든 JSP에서 접근 가능한 객체로, 웹 애플리케이션에 대한 설정값을 저장할 때 주로 사용.
  • exception 객체 : 예외 처리를 위해 사용.

0개의 댓글

관련 채용 정보