JSP 내장 객체

박승현·2022년 4월 26일

JSP

목록 보기
4/11

내장 객체의 개요

내장 객체(implicit object)는 JSP 페이지에서 사용할 수 있도록 JSP 컨테이너에 미리 정의된 객체이다. JSP 페이지가 서블릿 프로그램으로 번역될 때 JSP 컨테이너가 자동으로 내장 객체를 멤버 변수, 메소드 매개변수 등의 각종 참조 변수(객체)로 포함된다. 스크립틀릿 태그나 표현문 태그에 선언을 하거나 객체를 생성하지 않고도 직접 호출하여 사용한다.

--내장 객체의 종류--

내장 객체반환 유형설명
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 페이지 자체를 나타낸다.
configjavax.servlet.ServletConfigJSP 페이지의 설정 정보를 저장한다.
exceptionjava.lang.ThrowableJSP 페이지의 예외 발생을 처리한다.

내장 객체는 서블릿 프로그램에서 모두 _jspService() 메소드 내부에 있다. 그리고 메소드 매개변수인 request, reponse를 비롯해 pageContext, session, application, config, out, page 등은 메소드 내에서 참조할 수 있는 참조 변수이다.

모든 내장 객체는 JSP 컨테이너가 관리하는 객체로, 이 중 request, session, application, pageContext를 이용하여 속성을 관리할 수 있다. 속성은 각각의 내장 객체가 존재하는 동안 JSP 페이지 사이에서 정보를 주고받거나 공유하는데 사용된다.

--속성 처리 메소드의 종류--

메소드반환 유형설명
setAttribute(String name, Object value)void해당 내장 객체의 속성 이름이 name인 속성 값을 value로 저장한다.
getAttribute(String name)Object해당 내장 객체의 속성 이름이 name인 속성 값을 가져온다.
removeAttribute(String name)void해당 내장 객체의 속성 이름이 name인 속성을 삭제한다.
getAttributeNames()java.util.Enumeration해당 내장 객체의 모든 속성 이름을 가져온다.

request 내장 객체의 기능과 사용법

request 내장 객체는 JSP 페이지에서 가장 많이 사용되는 기본 내장 객체로, 웹 브라우저에서 서버의 JSP 페이지로 전달하는 정보를 저장한다. 즉 폼 페이지로부터 입력된 데이터를 전달하는 요청 파라미터 값을 JSP 페이지로 가져온다. JSP 컨테이너는 웹 브라우저에서 서버로 전달되는 정보를 처리하기 위해 javax.servlet.http.HttpServletRequest 객체 타입의 request 내장 객체를 사용하여 사용자의 요구 사항을 얻어낸다.

요청 파라미터 관련 메소드

요청 파라미터는 사용자가 폼 페이지에 데이터를 입력한 후 서버에 전송할 때 전달되는 폼 페이지의 입력된 정보 형태를 말한다. 이러한 요청 파라미터는 <name=value> 형식으로 웹 브라우저에서 서버의 JSP 페이지로 전송된다.
요청 파라미터는 폼 페이지에서 <input type="text" ...> 처럼 입력 양식이 텍스트 유형인 경우 값을 입력하지 않으면 서버로 빈 문자열이 전송된다. 하지만 체크 박스와 라디어 버튼 유형인 경우 선택하지 않고 전송하면 요청 파라미터 자체가 전달되지 않는다.

요청 파라미터 관련 메소드반환 유형설명
getParameter(String name)String요청 파라미터 이름이 name인 값을 전달받는다. 요청 파라미터 값이 없으면 null을 반환한다.
getParameterValues(String name)String[]모든 요청 파라미터 이름이 name인 값을 배열 형태로 전달한다. 요청 파라미터 값이 없으면 null을 반환한다.
getParameterNames()java.util.Enumeration모든 요청 파라미터의 이름과 값을 Enumeration 객체 타입으로 전달받는다.
getParameterMap()java.util.Map모든 요청 파라미터의 이름과 값을 Map 객체 타입으로 전달받는다.(Map 객체 타입은(요청 파라미터 이름,값) 형식으로 구성된다.

[요청 파라미터 값 출력하기]

request.jsp
<body>
  <form action="process.jsp" method="post">
    <p>
      이름 : <input type="text" name="name">
      <input type="submit" value="전송">
    </p>
  </form>
</body>
process.jsp
<body>
  <%
     request.setCharacterEncoding("utf-8");
     String name = request.getParameter("name");
  %>
  <p> 이름 : <%=name %> </p>
</body>

요청 HTTP 헤더 관련 메소드

웹 브라우저는 HTTP 헤더에 부가적인 정보를 담아 서버로 전송한다. request 내장 객체는 헤더 정보나 쿠키 관련 정보를 얻을 수 있는 메소드를 제공한다.

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

[요청 HTTP 헤더 정보 값 출력하기]

<body>
  <%
     String hostValue = request.getHeader("host");
     String laValue = request.getHeader("accept-language");
     out.print("호스트명 : " + hostValue + "<br>");
     out.print("설정된 언어 : " + laValue + "<br>");
   %>
</body>

웹 브라우저/서버 관련 메소드

request 내장 객체는 웹 브라우저의 요청 및 서버 관련 정보를 얻을 수 있는 메소드를 제공한다.

웹 브라우저/서버 관련 메소드반환 유형설명
getRemoteAdd()String웹 브라우저의 IP 주소를 가져온다.
getContentLength()long웹 브라우저의 요청 파라미터 길이를 가져온다.
getCharacterEncoding()String웹 브라우저의 문자 인코딩을 가져온다.
getContentType()String웹 브라우저의 콘텐츠 유형을 가져온다.
getProtocol()String웹 브라우저의 요청 프로토콜을 가져온다.
getMethod()String웹 브라우저의 HTTP 요청 메소드(GET, POST)를 가져온다.
getRequestURI()String웹 브라우저가 요청한 URI 경로를 가져온다.
getContextPath()String현재 JSP 페이지의 웹 애플리케이션 콘텍스트 경로를 가져온다.
getServerName()String서버 이름을 가져온다.
getServerPort()int실행 중인 서버 포트 번호를 가져온다.
getQueryString()String웹 브라우저의 전체 요청 파라미터 문자열[물음표(?) 다음 URL에 할당된 문자열]을 가져온다.

[웹 브라우저/서버 정보 출력하기]

request.jsp
<body>
  <form action="process.jsp" method="post">
    <p>
      이름 : <input type="text" name="name">
      <input type="submit" value="전송">
    </p>
  </form>
</body>
process.jsp
<body>
  <%
     request.setCharacterEncoding("utf-8");
     String name = request.getParameter("name");
  %>
  <p>
    이름 : <%=name%><br>
    요청 정보 길이 : <%=request.getContentLength()%><br>
    클라이언트 전송 방식 : <%=request.getMeghod()%><br>
    요청 URI : <%=request.getRequestURI()%><br>
    서버 이름 : <%=request.getServerName()%><br>
    서버 포트 : <%=request.getServerPort()%><br>
</body>

response 내장 객체의 기능과 사용법

response 내장 객체는 사용자의 요청을 처리한 결과를 서버에서 웹 브라우저로 전달하는 정보를 저장한다. 즉 서버는 응답 헤더와 요청 처리 결과 데이터를 웹 브라우저로 보낸다.
JSP 컨테이너는 서버에서 웹 브라우저로 응답하는 정보를 처리하기 위해 javax.servlet.http.HttpServletResponse 객체 타입의 response 내장 객체를 사용하여 사용자의 요청에 응답한다.

페이지 이동 관련 메소드

사용자가 새로운 페이지를 요청할 때와 같이 페이지를 강제로 이동하는 것을 리다이렉션(redirection)이라고 한다. 서버는 웹 브라우저에 다른 페이지로 강제 이동하도록 response 내장 객체의 리다이렉션 메소드를 제공한다. 페이지 이동 시에는 문자 인코딩을 알맞게 설정 해야 한다.

페이지 이동 방법

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

[페이지 이동하기]

<body>
  <%
     response.sendRedirect("http://www.google.com");
  %>
</body>

응답 HTTP 헤더 관련 메소드

응답HTTP 헤더 관련 메소드는 서버가 웹 브라우저에 응답하는 정보에 헤더를 추가하는 기능을 제공한다. 헤더 정보에는 주로 서버에 대한 정보가 저장되어 있다.

응답 HTTP 헤더 관련 메소드반환 유형설명
addCookie(Cookie cookie)void쿠키를 추가한다.
addDateHeader(String name, long date)void설정한 헤더 이름 name에 날짜/시간을 추가한다.
addHeader(String name, String value)void설정한 헤더 이름 name에 value를 추가한다.
addIntHeader(String name, int value)void설정한 헤더 이름 name에 정수 값 value를 추가한다.
setDateHeader(String name, long date)void설정한 헤더 이름 name에 날짜/시간을 설정한다.
setHeader(String name, String value)void설정한 헤더 이름 name에 문자열 값 value를 설정한다.
setIntHeader(String name, int value)void설정한 헤더 이름 name에 정수 값 value를 설정한다.
containsHeader(String name)boolean설정한 헤더 이름 name이 HTTP 헤더에 포함되었는지 여부를 확인한다.
getHeader(String name)String설정한 헤더 이름 name 값을 가져온다.

응답 콘텐츠 관련 메서드

response 내장 객체는 웹 브라우저로 응답하기 위해 MIME 유형, 문자 인코딩, 오류 메시지, 상태 코드 등을 설정하고 가져오는 응답 콘텐츠 관련 메소드를 제공한다.

응답 콘텐츠 관련 메서드반환 유형설명
setContentType(String type)void웹 브라우저에 응답할 MIME 유형을 설정한다.
getContentType()String웹 브라우저에 응답할 MIME 유형을 가져온다.
setCharacterEncoding(String charset)void웹 브라우저에 응답할 문자 인코딩을 설정한다.
getCharacterEncoding()String웹 브라우저에 응답할 문자 인코딩을 가져온다.
sendError(int status_code, String message)void웹 브라우저에 응답할 오류(코드 및 오류 메시지)를 설정한다.
setStatus(int statuscode)void웹 브라우저에 응답할 HTTP 코드를 설정한다.

out 내장 객체의 기능과 사용법

out 내장 객체는 웹 브라우저에 데이터를 전송하는 출력 스트림 객체이다. JSP 컨테이너는 JSP 페이지에 사용되는 모든 표현문 태그와 HTML 일반 텍스트 등을 out 내장 객체를 통해 웹 브라우저에 그대로 전달한다. out 내장 객체는 스크립틀릿 태그에 사용하여 단순히 값을 출력 하는 표현문 태그(<%= ...%>)와 같은 결과를 얻을 수 있다.

out 내장 객체 메소드반환 유형설명
print(String str)void설정된 str 값을 웹 브라우저에 출력한다.
println(String str)void설정된 str 값을 웹 브라우저에 출렵한다. 이때 줄 바꿈(\n)이 적용되지 않는다.
newLine()void줄바꿈(\n)을 출력한다.
getBufferSize()int현재 출력 버퍼의 크기를 가져온다.
getRemaining()int현재 남아 있는 출력 버퍼의 크기를 가져온다.
clear()void현재 출력 버퍼에 저장되어 있는 내용을 웹 브라우저에 전송하지 않고 비운다. 만약 버퍼가 이미 플러시되었다면 IOException이 발생한다.
clearBuffer()void현재 출력 버퍼에 저장되어 있는 내용을 웹 브라우저에 전송하지 않고 비운다. 만약 버퍼가 이미 플러시되었다면 IOException이 발생하지 않는다.
flush()void현재 출력 버퍼에 저장되어 있는 내용을 웹 브라우저에 전송하고 비운다.
isAutoFlush()boolean출력 버퍼가 채워졌을 때의 처리를 결정한다. 자동으로 플러시하는 경우 true를 반환하고, 그렇지 않은 경우 false를 반환한다.
profile
그냥 해보자 안되더라도 해보자 끝까지 해보자

0개의 댓글