Computer >> 컴퓨터 >  >> 프로그래밍 >> 프로그래밍

JSP 요청 객체(Request Object)란 무엇인가? 개념부터 실전 예제까지

JSP에서 요청 객체(request object)javax.servlet.http.HttpServletRequest 클래스의 인스턴스를 의미합니다. 클라이언트가 페이지를 요청할 때마다 JSP 엔진은 해당 요청을 나타내는 새로운 객체를 자동으로 생성하며, 이 객체를 통해 서버는 클라이언트가 보낸 다양한 정보에 접근할 수 있습니다.

요청 객체는 폼 데이터(form data), 쿠키(cookie), HTTP 메서드 등 HTTP 헤더 정보를 읽어올 수 있는 여러 메서드를 제공합니다. 이를 활용하면 브라우저 정보, 요청 방식, 전달된 파라미터 등을 손쉽게 확인할 수 있습니다.

HTTP 헤더 정보 읽기 예제

다음 예제는 HttpServletRequest의 getHeaderNames() 메서드를 사용하여 HTTP 헤더 정보를 읽어오는 방법을 보여줍니다. 이 메서드는 현재 HTTP 요청과 관련된 모든 헤더 이름을 담고 있는 Enumeration 객체를 반환합니다.

Enumeration 객체를 얻은 후에는 일반적인 방식으로 반복문을 순회할 수 있습니다. hasMoreElements() 메서드로 반복을 계속할지 여부를 판단하고, nextElement() 메서드로 각 헤더의 이름을 하나씩 가져옵니다.

<%@ page import = "java.io.*,java.util.*" %>
<html>
   <head>
      <title>HTTP Header Request Example</title>
   </head>
   <body>
      <center>
         <h2>HTTP Header Request Example</h2>
         <table width = "100%" border = "1" align = "center">
            <tr bgcolor = "#949494">
               <th>Header Name</th>
               <th>Header Value(s)</th>
            </tr>
            <%
               Enumeration headerNames = request.getHeaderNames();
               while(headerNames.hasMoreElements()) {
                  String paramName = (String)headerNames.nextElement();
                out.print("<tr><td>" + paramName + "</td>\n");
                  String paramValue = request.getHeader(paramName);
                  out.println("<td> " + paramValue + "</td></tr>\n");
               }
            %>
         </table>
      </center>
   </body>
</html>

위 코드를 실행하면 현재 요청에 포함된 모든 헤더 이름과 값이 테이블 형태로 출력됩니다. 예를 들어 User-Agent, Accept-Language, Host 같은 헤더 정보를 확인할 수 있습니다.

자주 사용되는 요청 객체의 주요 메서드

실무에서 유용하게 쓰이는 대표적인 메서드들은 다음과 같습니다.

  • getHeader(String name) : 지정한 이름의 헤더 값을 문자열로 반환합니다.
  • getParameter(String name) : 폼 또는 쿼리 스트링으로 전달된 파라미터 값을 반환합니다.
  • getMethod() : GET, POST 등 요청에 사용된 HTTP 메서드를 반환합니다.
  • getCookies() : 클라이언트가 함께 전송한 쿠키 배열을 반환합니다.
  • getRequestURI() : 클라이언트가 요청한 리소스의 URI를 반환합니다.

이처럼 요청 객체는 클라이언트와 서버 사이에서 전달되는 모든 요청 정보의 관문 역할을 하므로, JSP 웹 애플리케이션을 개발할 때 반드시 이해하고 있어야 하는 핵심 내장 객체입니다.