브라우저가 웹 페이지를 요청할 때 정보는 HTTP 헤더의 일부로 전송되기 때문에 직접 읽을 수 없는 일련의 정보를 웹 서버에 보냅니다. 자세한 내용은 HTTP 프로토콜을 확인하세요.
다음 표에는 브라우저 측 정보 헤더의 몇 가지 중요한 내용이 나열되어 있으며 향후 네트워크 프로그래밍에서 이 정보를 자주 보게 됩니다.
정보 | 설명하다 |
---|---|
수용하다 | 브라우저나 다른 클라이언트가 처리할 수 있는 MIME 유형을 지정합니다. 해당 값은 일반적으로 image/png 또는 image/jpeg 입니다. |
Accept-Charset | 브라우저에서 사용할 문자 집합을 지정합니다. ISO-8859-1과 같은 |
수락-인코딩 | 인코딩 유형을 지정합니다. 해당 값은 일반적으로 gzip 또는 압축 입니다. |
수락 언어 | 클라이언트의 기본 언어를 지정합니다. 서블릿이 이 언어를 지원하는 경우 서블릿은 현재 언어로 설정된 결과를 반환하는 데 우선순위를 부여합니다. en, en-us, ru 등과 같은 |
권한 부여 | 비밀번호로 보호된 웹 페이지에 액세스할 때 다른 사용자 식별 |
연결 | 클라이언트가 HTTP 영구 연결을 처리할 수 있는지 여부를 나타냅니다. 지속적인 연결을 통해 클라이언트나 브라우저는 한 번의 요청으로 여러 파일을 가져올 수 있습니다. Keep-Alive는 지속적인 연결을 활성화하는 것을 의미합니다. |
콘텐츠 길이 | POST 요청에만 적용되며 POST 데이터의 바이트 수를 나타냅니다. |
쿠키 | 이전에 브라우저로 전송된 쿠키를 서버로 반환합니다. |
주인 | 원래 URL에 호스트 이름과 포트 번호를 표시하십시오. |
If-수정-이후 | 지정된 날짜에 수정된 경우에만 클라이언트에 이 웹 페이지가 필요함을 나타냅니다. 서버는 업데이트된 리소스가 없음을 나타내는 304 코드를 클라이언트에 보냅니다. |
If-수정되지 않은-이후 | If-Modified-Since와 달리 지정된 날짜 이후 문서가 수정되지 않은 경우에만 작업이 성공합니다. |
추천인 | 참조된 페이지의 URL을 표시합니다. 예를 들어, 1페이지에 있는 상태에서 2페이지에 대한 링크를 클릭하면 1페이지의 URL이 2페이지에 대한 브라우저 요청 헤더에 포함됩니다. |
사용자 에이전트 | 다양한 브라우저나 클라이언트에서 보낸 요청을 구별하고 다양한 유형의 브라우저에 다양한 콘텐츠를 반환하는 데 사용됩니다. |
요청 객체는 javax.servlet.http.HttpServletRequest 클래스의 인스턴스입니다. 클라이언트가 페이지를 요청할 때마다 JSP 엔진은 요청을 나타내는 새 객체를 생성합니다.
요청 객체는 양식 데이터, 쿠키, HTTP 메소드 등을 포함하여 HTTP 정보 헤더를 얻기 위한 일련의 메소드를 제공합니다.
다음으로 JSP 프로그래밍에서 HTTP 정보 헤더를 얻기 위해 일반적으로 사용되는 몇 가지 방법을 소개하겠습니다. 자세한 내용은 아래 표를 참조하세요.
일련번호 | 방법 및 설명 |
---|---|
1 | Cookie[] getCookies()는 클라이언트의 모든 쿠키 배열을 반환합니다. |
2 | 열거 getAttributeNames()는 요청 객체의 모든 속성 이름 컬렉션을 반환합니다. |
3 | 열거 getHeaderNames()는 모든 HTTP 헤더의 이름 모음을 반환합니다. |
4 | 열거 getParameterNames()는 요청의 모든 매개변수 컬렉션을 반환합니다. |
5 | HttpSession getSession()은 요청에 해당하는 세션 개체를 반환합니다. 그렇지 않은 경우 새로 만듭니다. |
6 | HttpSession getSession(boolean create)은 요청에 해당하는 세션 객체를 반환하고 create 매개변수가 true인 경우 새 세션 객체가 반환됩니다. |
7 | Locale getLocale()은 응답으로 설정할 수 있는 현재 페이지의 Locale 객체를 반환합니다. |
8 | Object getAttribute(String name)는 name이라는 속성 값을 반환하거나, 존재하지 않는 경우 null을 반환합니다. |
9 | ServletInputStream getInputStream()은 요청된 입력 스트림을 반환합니다. |
10 | String getAuthType()은 "BASIC" 또는 "SSL"과 같은 서블릿을 보호하는 데 사용되는 인증 체계의 이름을 반환하거나 JSP가 보호 조치를 설정하지 않은 경우 null을 반환합니다. |
11 | String getCharacterEncoding()은 요청의 문자 인코딩 세트 이름을 반환합니다. |
12 | String getContentType()은 요청 본문의 MIME 유형을 반환하거나 알 수 없는 경우 null을 반환합니다. |
13 | String getContextPath()는 요청 URI에 지정된 컨텍스트 경로를 반환합니다. |
14 | String getHeader(String name)은 이름으로 지정된 정보 헤더를 반환합니다. |
15 | String getMethod()는 이 요청에서 GET, POST 또는 PUT와 같은 HTTP 메소드를 반환합니다. |
16 | String getParameter(String name)는 이 요청에서 이름으로 지정된 매개변수를 반환하거나 존재하지 않는 경우 null을 반환합니다. |
17 | String getPathInfo()는 이 요청 URL과 연관된 추가 경로를 반환합니다. |
18 | String getProtocol()은 이 요청에 사용된 프로토콜 이름과 버전을 반환합니다. |
19 | String getQueryString()은 이 요청 URL에 포함된 쿼리 문자열을 반환합니다. |
20 | String getRemoteAddr() 은 클라이언트의 IP 주소를 반환합니다. |
스물하나 | String getRemoteHost()는 클라이언트의 전체 이름을 반환합니다. |
스물 둘 | String getRemoteUser()는 로그인을 통해 클라이언트에서 인증한 사용자를 반환하거나, 사용자가 인증되지 않은 경우 null을 반환합니다. |
스물셋 | String getRequestURI()는 요청의 URI를 반환합니다. |
스물넷 | String getRequestedSessionId()는 요청에 지정된 세션 ID를 반환합니다. |
25 | String getServletPath()는 요청된 서블릿 경로를 반환합니다. |
26 | String[] getParameterValues(String name)은 지정된 이름을 가진 매개변수의 모든 값을 반환하거나 존재하지 않는 경우 null을 반환합니다. |
27 | boolean isSecure()는 요청이 HTTPS와 같은 암호화된 채널을 사용하는지 여부를 반환합니다. |
28 | int getContentLength()는 요청 본문에 포함된 바이트 수를 반환합니다. 알 수 없는 경우 -1을 반환합니다. |
29 | int getIntHeader(String name) 지정된 이름을 가진 요청 헤더의 값을 반환합니다. |
30 | int getServerPort()는 서버 포트 번호를 반환합니다. |
이 예에서는 HttpServletRequest 클래스의 getHeaderNames() 메서드를 사용하여 HTTP 헤더를 읽습니다. 이 메소드는 현재 HTTP 요청의 헤더 정보를 열거형으로 반환합니다.
Enumeration 개체를 얻은 후 표준 메서드를 사용하여 Enumeration 개체를 순회하고 hasMoreElements() 메서드를 사용하여 중지 시기를 결정하고 nextElement() 메서드를 사용하여 각 매개변수의 이름을 가져옵니다.
<%@ page import="java.io.*,java.util.*" %><html><head><title>HTTP 헤더 요청 예</title></head><body><center><h2 >HTTP 헤더 요청 예</h2><table align="center"><tr bgcolor="#949494"><th>헤더 이름</th><th>헤더 값</th></tr ><% 열거 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>
main.jsp에 액세스하면 다음과 같은 결과를 얻을 수 있습니다.
헤더 이름 | 헤더 값 |
---|---|
수용하다 | */* |
수용 언어 | en-us |
사용자 에이전트 | Mozilla/4.0(호환 가능, MSIE 7.0, Windows NT 5.1, Trident/4.0, InfoPath.2, MS-RTC LM 8) |
인코딩 허용 | gzip, 수축 |
주인 | 로컬호스트:8080 |
연결 | 연결 유지 |
캐시 제어 | 캐시 없음 |
위 코드에서 HttpServletRequest 클래스의 다른 메서드를 사용해 볼 수 있습니다.