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

JSP에서 HTTP 요청 헤더 정보를 읽는 방법

JSP에서 클라이언트가 전송한 HTTP 헤더 정보를 확인하려면 HttpServletRequest 객체가 제공하는 getHeaderNames() 메서드를 사용하면 됩니다. 이 메서드는 현재 HTTP 요청과 연관된 모든 헤더 이름을 담고 있는 Enumeration 객체를 반환합니다.

Enumeration 객체를 확보한 후에는 일반적인 반복문 방식으로 순회할 수 있습니다. hasMoreElements() 메서드로 반복을 계속할지 여부를 판단하고, nextElement() 메서드로 각 헤더의 이름을 하나씩 꺼내옵니다. 그런 다음 request.getHeader(헤더이름)을 호출하면 해당 헤더의 값을 문자열로 얻을 수 있습니다.

전체 헤더 목록 출력 예제

다음 예제는 getHeaderNames() 메서드를 활용해 현재 요청의 모든 HTTP 헤더 이름과 값을 테이블 형태로 출력합니다.

<%@ 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>

참고: 자주 사용되는 헤더 관련 메서드

  • getHeader(String name) — 지정한 이름의 헤더 값을 String으로 반환하며, 헤더가 없으면 null을 반환합니다.
  • getIntHeader(String name) — 헤더 값을 int 타입으로 반환하며, 값이 없으면 -1을 반환합니다.
  • getDateHeader(String name) — 날짜 형식의 헤더 값을 long 타입(밀리초)으로 반환합니다.

모든 헤더를 확인하는 대신 특정 헤더만 필요하다면 위 메서드들에 헤더 이름을 직접 지정하여 간편하게 값을 조회할 수 있습니다. 예를 들어 request.getHeader("User-Agent")를 호출하면 클라이언트의 브라우저 및 OS 정보를 확인할 수 있습니다.