English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
브라우저가 웹 페이지를 요청할 때, 그것은 직접 읽을 수 없는 정보 시리즈를 네트워크 서버로 보내며, 이 정보는 HTTP 정보 헤더의 일부로 전송됩니다. 더 많은 정보를 얻기 위해 HTTP 프로토콜을 참조할 수 있습니다.
다음 표는 브라우저 측 정보 헤더의 중요한 내용을 나열하며, 향후 네트워크 프로그래밍에서 자주 볼 수 있는 정보입니다:
정보 | 설명 |
---|---|
Accept | 브라우저나 다른 클라이언트가 처리할 수 있는 MIME 유형을 지정합니다. 값은 일반적으로 image/png 또는 image/jpeg |
Accept-Charset | 브라우저가 사용할 문자셋을 지정합니다. 예를 들어 ISO-8859-1 |
Accept-Encoding | 编码 유형을 지정합니다. 값은 일반적으로 gzip 또는compress |
Accept-Language | 클라이언트가 선호하는 언어를 지정하며, servlet은 이 언어로 구성된 결과 집합을 우선으로 반환합니다. 예를 들어 en, en-us, ru 등 |
Authorization | 암호로 보호된 웹 페이지에 접근할 때 다른 사용자를 인식합니다 |
Connection | 클라이언트가 HTTP持久 연결을 처리할 수 있는지 나타냅니다.持久 연결은 클라이언트나 브라우저가 하나의 요청에서 여러 파일을 가져올 수 있게 합니다.Keep-Alive 持久 연결을 활성화하면 |
Content-Length | POST 요청에만 적용되며, POST 데이터의 바이트 수를 나타냅니다 |
Cookie | 브라우저에 전송된 이전 쿠키를 서버로 반환합니다 |
Host | 원래 URL의 호스트 이름과 포트 번호를 나타냅니다 |
If-Modified-Since | 지정된 날짜에 웹 페이지가 수정되면 클라이언트가 이 웹 페이지가 필요하다는 것을 나타냅니다. 서버가 전송합니다304코드를 클라이언트에게 전송하여 업데이트되지 않은 자원을 나타냅니다 |
If-Unmodified-Since | 와 If-Modified-Since와 반대로, 문서가 지정된 날짜 이후로 변경되지 않았을 때만 작업이 성공합니다 |
Referer | 引用된 페이지의 URL을 나타냅니다. 예를 들어, 당신이 페이지1그리고 페이지로 링크를 클릭했습니다2그렇다면 페이지1의 URL은 브라우저가 페이지를 요청할 때 포함됩니다2의 정보 헤더에 |
User-Agent | 다른 브라우저나 클라이언트가 보낸 요청을 구분하고, 다른 유형의 브라우저에 대해 다른 내용을 반환합니다. |
request 객체는 javax.servlet.http.HttpServletRequest 클래스의 예제입니다. 클라이언트가 페이지를 요청할 때마다 JSP 엔진은 이 요청을 대표하는 새로운 객체를 생성합니다.
request 객체는 양식 데이터, 쿠키, HTTP 메서드 등을 포함한 HTTP 정보 헤더를 얻는 방법을 제공합니다.
JSP 프로그래밍에서 일반적으로 사용되는 HTTP 정보 헤더를 얻는 방법을 소개할 것입니다. 자세한 내용은 다음 표를 참조하세요:
순번 | 메서드& 설명 |
---|---|
1 | Cookie[] getCookies() 클라이언트의 모든 쿠키의 배열을 반환합니다 |
2 | Enumeration getAttributeNames() 요청 객체의 모든 속성 이름의 집합을 반환합니다 |
3 | Enumeration getHeaderNames() 모든 HTTP 헤더 이름의 집합을 반환합니다 |
4 | Enumeration getParameterNames() 요청에 모든 매개변수의 집합을 반환합니다 |
5 | HttpSession getSession() 요청에 대한 session 객체를 반환합니다. 없으면 새로운 session 객체를 생성합니다 |
6 | HttpSession getSession(boolean create) 요청에 대한 session 객체를 반환합니다. 없으면 create 매개변수가 true이면 새로운 session 객체를 반환합니다 |
7 | Locale getLocale() 현재 페이지의 Locale 객체를 반환합니다. 이를 통해 response에서 설정할 수 있습니다 |
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) name으로 지정된 정보 헤더를 반환합니다 |
15 | String getMethod() 이 요청의 HTTP 메서드를 반환합니다. 예를 들어 GET, POST 또는 PUT |
16 | String getParameter(String name) 이 요청에서 name으로 지정된 매개변수를 반환합니다. 존재하지 않으면 null을 반환합니다 |
17 | String getPathInfo() 이 요청 URL와 관련된 추가 경로를 반환합니다 |
18 | String getProtocol() 이 request가 사용하는 프로토콜 이름과 버전 반환 |
19 | String getQueryString() 이 request URL에 포함된 쿼리 문자열 반환 |
20 | String getRemoteAddr() 클라이언트의 IP 주소 반환 |
21 | String getRemoteHost() 클라이언트의 전체 이름 반환 |
22 | String getRemoteUser() 로그인 인증을 통해 로그인한 클라이언트 사용자 반환, 사용자가 인증되지 않으면 null 반환 |
23 | String getRequestURI() request의 URI 반환 |
24 | String getRequestedSessionId() request가 지정한 session ID 반환 |
25 | String getServletPath() 요청된 servlet 경로 반환 |
26 | String[] getParameterValues(String name) 지정된 이름의 매개변수의 모든 값을 반환하며, 존재하지 않으면 null 반환 |
27 | boolean isSecure() request가 암호화된 채널을 사용했는지 반환, 예를 들어 HTTPS |
28 | int getContentLength() request 본문에 포함된 바이트 수 반환, 알 수 없으면-1 |
29 | int getIntHeader(String name) 지정된 이름의 request 정보 헤더 값 반환 |
30 | int getServerPort() 서버 포트 번호 반환 |
이 예제에서는 HttpServletRequest 클래스의 getHeaderNames() 메서드를 사용하여 HTTP 정보 헤더를 읽습니다. 이 메서드는 현재 HTTP 요청의 헤더 정보를 열거형으로 반환합니다.
Enumeration 객체를 얻은 후, 표준 방식으로 Enumeration 객체를 순회하며, hasMoreElements() 메서드를 사용하여 중지 시점을 결정하고, nextElement() 메서드를 사용하여 각 매개변수 이름을 얻습니다.
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ page import="java.io.*,java.util.*" %> !DOCTYPE html <html> <head> <meta charset="utf-8"> <title>기본 튜토리얼 웹(oldtoolbag.com)</title> </head> <body> <h2>HTTP 헤더 요청 예제</h2> <table width="100%" border="1" align="center"> <tr bgcolor="#949494"> <th>헤더 이름</th><th>헤더 값(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> </body> </html>
main.jsp에 접근하면 다음과 같은 결과를 얻을 것입니다:
HttpServletRequest 클래스의 다른 메서드를 위에서의 코드에서 시도해 보세요.