[ JSP ] 7장. 내장객체

[ 내장 객체 ] 📕

내장객체란?

  • JSP페이지에서 사용할 수 있도록 JSP 컨테이너에 미리 정의된 객체.
  • JSP페이자가 서블릿 프로그램으로 번역될 때 JSP 컨테이너가 자동으로 내장객체를 멤버 변수, 메서드 매개변수 등의 각종 참조 변수(객체)로 포함
  • import문 없이 자유롭게 사용할 수 있음.
  • 스크립틀릿 태그나 표현문 태그에 선언을 하거나 객체를 생성하지 않고 직접 호출하여 사용가능
내장 객체변환 유형설명
requestjavax.servlet.http.HttpServletRequest웹 브라우저의 HTTP 요청 정보를 저장
responsejavax.servlet.http.HttpServletResponse웹 브라우저의 HTTP 요청에 대한 응답 정보를 저장
outjavax.servlet.jsp.jsp.jspWriterJSP 페이지에 출력할 내용을 담고 있는 출력 스트림
sessionjavax.servlet.http.HttpSession웹 브라우저의 정보를 유지하기 위한 세션 정보를 저장
applicationjavax.servlet.ServletContext웹 애플리케이션의 콘텍스트 정보를 저장
pageContextjavax.servlet.jsp.PageContextJSP 페이지의 정보를 저장
pagejava.lang.ObjectJSP 페이지를 구현한 자바 클래스로 JSP 페이지 자체를 나타냄
cofigjavax.sevlet.ServletConfigJSP페이지의 설정 정보를 저장
exceptionjava.lang.ThorwableJSP페이지의 예외 발생을 처리


[ 속성 ] 📙

속성은 각각의 내장 객체가 존재하는 동안 JSP페이지 사이에서 정보를 주고 받거나 공유하는데 사용

메서드반환 유형설명
setAttribute(String name, Object Value)void해당 내장 객체의 속성 이름이 name인 속성 값을 value로 저장
getAttribute(String name)Object해당 내장 객체의 속성 이름이 name인 속성 값을 가져옴
removeAttribute(String name)void해당 내장 객체의 속성 이름이 name인 속성을 삭제
getAttributeNames()java.util.Enumeration해당 내장 객체의 모든 속성 이름을 가져옴 (단, pageContext 내장 객체는 이 메서드를 제공하지 않음


[ Request 내장 객체 ] 📒

요청 파라미터 관련 메서드반환 유형설명
getParameter(String name)String요청 파라미터 이름이 name인 값을 받음, 요청 파라미터가 존재하지 않으면 null값 반환
getParameterValues(String name)String[]

모든 요청 파라미터 이름이 name인 값을 배열 형태로 받음, 요청 파라미터가 존재 하지 않을 시 null값 반환

ex) 체크박스와 같은 여러 개의 값을 입력 받을 수 있는 타입에 사용

getParameterNames()java.util.Enumeration모든 요청 파라미터의 이름과 값을 Enumeration 객체 타입으로 받음
getParameterMap()java.util.Map

모든 요청 파라미터의 이름과 값을 Map 객체 타입으로 받음

Map 객체 타입은 (요청 파라미터의 이름, 값) 형식으로 구성



[ Header 관련 메서드 ] 📗

요청 HTTP 헤더 관련 메서드반환 유형설명
getHeader(String name)String설정한 name의 헤더 값을 가져옴
getHeaders(String nameEnueration설정한 name의 헤더 목록 값을 가져옴
getHeaderNames()Enumeration모든 헤더 이름을 가져옴
getIntHeader(String name)int설정한 name의 헤더 값을 정수로 가져옴
getDateHeader(String name)long설정한 name의 헤더 값을 시간 값으로 가져옴
getCookies()javax.servlet.Cookie모든 쿠키 값을 가져옴

<한글 페이지 작성시>
request.setCharacterEncoding 웹 브라우저에 응당할 문자 인코딩을 설정하는 코드 작성 필수.


<html>
  <head>
    <title>Implicit Objects</title>
  </head>
  <body>
    <%
    	Enumeration en = request.getHeaderNames(); //Enumeration 배열에 헤더 이름들을 저장
       while(en.hasMoreElements()) {	//en에 값이 있으면
       	String headerName = (String) en.nextElement(); // 값을 가져오고 다음 값으로 이동시켜 놓음
       	String headerValue = request.getHeader(headerName);
    %>
       <%=headerName%> : <%=headerValue %><br>
    <%
       }
    %>
  </body>

HeaderName들은 외우지 않아도 될꺼 같다고 생각하지만, 필요한 경우를 대비해 어떠한 헤더정보를 찾기위해 어떠한 코드를 짜야하는지 외우자.

위와 같이 작성 시
host, language, protocol등 모든 값이 출력 된다.



[ Response 내장 객체 ] 📘

response 내장 객체는 사용자의 요청을 처리한 결과를 서버에서 웹 브라우저에 전달하는 정보를 저장.
즉, 서버는 응답 헤더와 요청 처리 결과 데이터를 웹 브라우저에 보냄.

[ NOTE ]

  • 포워드(forward) 방식 : 현재 JSP페이지에서 이동할 URL로 요청 정보를 그대로 전달하여 사용자가 최초로 요청한 정보가 이동된 URL에서도 유효함. (그러나 이동된 URL이 웹 브라우저에 나타나지 않고 처음 요청한 URL이 나타나기 때문에 이동 여부를 알 수 없음.
<jsp:forward page="이동할 페이지" />
  • 리다이렉트(redirect) 방식 : 처음 요청받은 현재 JSP 페이지로부터 이동할 URL을 웹브라우저로 반환함. 이때, 웹 브라우저에서는 새로운 요청을 생성하여 이동할 URL에 다시 요청을 전송하므로 처음 보낸 요청 정보가 이동된 URL에 유효하지 않음. 즉, 클라이언트가 새로 페이지를 요청한 것과 같은 방식으로 페이지가 이동. 따라서 이동된 URL이 웹 브라우저의 주소 창에 보임.
response.sendRedirect("이동할 페이지")

메서드반환 유형설명
sendRedirect(String url)void설정한 URL 페이지로 강제 이동
<html>
  <head>
    <title>Implicit Objects</title>
  </head>
  <body>
    <%
       response.sendRedirect("http://www.google.com");
    %>
  </body>
</html>

[ Out 내장 객체 ] ✍🏻

출력스트림 객체

메서드반환 유형설명
print(String str)void설정된 str값을 웹브라우저에 출력
println(String str)void설정된 str값을 웹 브라우저에 출력하고 줄바꿈 개행(\n)이 이루어지지 않음
newLinevoid줄바꿈 개행(\n)을 출력
getBufferSizeint현재 출력 버퍼의 크기를 출력
getRemaining()int현재 남아있는 버퍼 크기를 가져옴
clear()void

현재 출력 버퍼에 저장되어 있는 내용을 웹 브라우저에 보내지 않고 비움

만약 버퍼가 이미 플러시되었다면 IOException이 발생함

clearBuffer()void

현재 출력 버퍼에 저장되어 있는 내용을 웹 브라우저에 보내지 않고 비움

만약 버퍼가 이미 플러시되었다면 IOException이 발생하지 않음

flush()void현재 출력 버퍼에 저장되어 있는 내용을 웹 브라우저에 전송하고 비움
isAutoFlush()boolean출력버퍼가 채워졌을 때의 처리를 결정, 자동으로 플러시 하는 경우 true를 반환 그렇지 않은 경우 false를 반환

좋은 웹페이지 즐겨찾기