개발 창고/Web

[JSP] Header 정보 가져오기

로이제로 2022. 11. 6. 22:19
반응형
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib uri="http://www.opensymphony.com/sitemesh/decorator" prefix="decorator" %>
<%@ taglib uri="http://www.opensymphony.com/sitemesh/page" prefix="page" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>
<%@ page import="java.util.Enumeration" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
// 헤더 전체정보 보기
Enumeration<String> em = request.getHeaderNames();

while(em.hasMoreElements()){
    String name = em.nextElement() ;
    String val  = request.getHeader(name) ;
    
    out.println("<p>" + name + " : " + val + "</p>") ;
}
%>
</body>
</html>

 위와 같이 페이지를 생성하면 아래와 같은 결과를 가져올 수 있습니다.

 이 중에서 첫 번째로 중요한 부분은

 

<%@ page import="java.util.Enumeration" %>

 

위와 같이 해더 정보의 key들이 담겨있는 Enumeration을 파라미터로 받기 위하여 해당 jsp로 import를 해야 합니다.

 

 

<%

// 헤더 전체 정보 보기

Enumeration<String> em = request.getHeaderNames();

 

while(em.hasMoreElements()){

    String name = em.nextElement() ;

    String val  = request.getHeader(name) ;

    

    out.println("<p>" + name + " : " + val + "</p>") ;

}

%>

 

이후에 body에서 위와 같이 request를 통해 header key 목록을 받은 후, loop를 통해,

request.getHeader(key)

를 통하여 값을 반환받을 수 있습니다.

 

 

위 내용에서 보면 key 목록으로

host, coneection, pragma, cache-congtrol, sec-ch-ua,... 등을 받아서

request.getHeader를 통해

localhost:8080, keep-alive, no-cache, "Google Chrome... 등의 값을 추출했음을 확인 가능합니다.

 

이 중에서 필요한 게, host와 cookie라고 한다면 아래와 같은 소스로 굳이 Enumeration과 loop를 통하지 않고 직접 조회도 가능합니다.

 

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib uri="http://www.opensymphony.com/sitemesh/decorator" prefix="decorator" %>
<%@ taglib uri="http://www.opensymphony.com/sitemesh/page" prefix="page" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
// 헤더 host 보기
String host  = request.getHeader("host");
out.println("<p>host : " + host + "</p>") ;

// 헤더 Cookie 보기
String cookie  = request.getHeader("cookie");
out.println("<p>cookie : " + cookie + "</p>") ;
%>
</body>
</html>

반응형