JSP 클라이언트 요청


브라우저가 웹페이지를 요청할 때 일련의 정보를 HTTP 헤더의 일부로 전송하기 때문에 직접 읽을 수 없는 일련의 정보를 네트워크 서버로 보냅니다. 자세한 내용은 HTTP 프로토콜을 확인하세요.

다음 표에는 향후 네트워크 프로그래밍에서 이 정보를 자주 보게 될 브라우저 측 정보 헤더의 몇 가지 중요한 내용이 나열되어 있습니다.

정보설명
수락 브라우저나 다른 클라이언트가 처리할 수 있는 MIME 유형을 지정합니다. 해당 값은 일반적으로 image/png 또는 image/jpeg
입니다. Accept-Charset                 브라우저에서 사용할 문자 집합을 지정합니다. 예: ISO-8859-1
인코딩 허용                 인코딩 유형을 지정합니다. 해당 값은 일반적으로 gzip 또는 compress
입니다. 수용 언어                 클라이언트의 기본 언어를 지정합니다. 서블릿이 이 언어를 지원하는 경우 서블릿은 현재 언어로 설정된 결과를 반환하는 데 우선순위를 부여합니다. 예를 들어 en, en-us, ru 등
승인               비밀번호로 보호된 웹 페이지에 액세스할 때 다른 사용자 식별
                      연결                 클라이언트가 HTTP 영구 연결을 처리할 수 있는지 여부를 나타냅니다. 지속적인 연결을 통해 클라이언트나 브라우저는 한 번의 요청으로 여러 파일을 가져올 수 있습니다.Keep-Alive는 지속적인 연결 활성화를 의미합니다
콘텐츠 길이                 POST 데이터의 바이트 수를 나타내는 POST 요청에만 적용 가능
쿠키                 이전에 브라우저로 전송된 쿠키를 서버로 반환
                       진행자 원본 URL
에 호스트 이름과 포트 번호를 표시하세요. If-수정-이후                 지정된 날짜에 수정된 경우에만 이 웹 페이지가 클라이언트에 필요함을 나타냅니다. 서버는 업데이트된 리소스가 없음을 나타내는 304 코드를 클라이언트에 보냅니다.
If-수정되지 않은-이후                 If-Modified-Since와 달리 지정된 날짜 이후에 문서가 수정되지 않은 경우에만 작업이 성공합니다
추천인               참조된 페이지의 URL을 표시합니다. 예를 들어, 1페이지에 있는 상태에서 2페이지에 대한 링크를 클릭하면 1페이지의 URL이 2페이지
에 대한 브라우저 요청 헤더에 포함됩니다. 사용자 에이전트                 다양한 브라우저나 클라이언트에서 보낸 요청을 구별하고 다양한 유형의 브라우저에 다양한 콘텐츠를 반환하는 데 사용됩니다.

HttpServletRequest 클래스

요청 객체는 javax.servlet.http.HttpServletRequest 클래스의 인스턴스입니다. 클라이언트가 페이지를 요청할 때마다 JSP 엔진은 요청을 나타내는 새 객체를 생성합니다.

요청 개체는 양식 데이터, 쿠키, HTTP 메서드 등을 포함하여 HTTP 정보 헤더를 얻기 위한 일련의 메서드를 제공합니다.

다음으로 JSP 프로그래밍에서 HTTP 정보 헤더를 얻기 위해 일반적으로 사용되는 몇 가지 방법을 소개하겠습니다. 자세한 내용은 아래 표를 참조하세요.

일련번호방법& 설명
                    1쿠키[] getCookies()


클라이언트의 모든 쿠키 배열을 반환합니다.
2열거 getAttributeNames()


요청 객체
의 모든 속성 이름 집합을 반환합니다. 3열거 getHeaderNames()


모든 HTTP 헤더의 이름 집합을 반환합니다
4열거 getParameterNames()


요청의 모든 매개변수 집합을 반환합니다.
5HttpSession getSession()


요청에 해당하는 세션 객체를 반환합니다.
6HttpSession getSession(boolean create)


요청에 해당하는 세션 개체를 반환하고 매개변수 create가 true인 경우 새 세션 개체
가 반환됩니다. 7로캘 getLocale()


응답으로 설정할 수 있는 현재 페이지의 Locale 개체를 반환합니다. 8Object getAttribute(문자열 이름)


name이라는 속성 값을 반환하거나, 존재하지 않는 경우 null을 반환합니다.
9ServletInputStream getInputStream()


요청된 입력 스트림을 반환합니다
10문자열 getAuthType()


"BASIC" 또는 "SSL"과 같이 서블릿을 보호하는 데 사용되는 인증 체계의 이름을 반환하거나 JSP
에 대해 보호 조치가 설정되지 않은 경우 null을 반환합니다. 11문자열 getCharacterEncoding()


요청의 문자 인코딩 세트 이름을 반환합니다
12String getContentType()


요청 본문의 MIME 유형을 반환하거나, 알 수 없는 경우 null을 반환합니다
13String getContextPath()


요청 URI
에 지정된 컨텍스트 경로를 반환합니다. 14String getHeader(문자열 이름)


이름으로 지정된 정보 헤더를 반환합니다
15문자열 getMethod()


이 요청에서 GET, POST 또는 PUT과 같은 HTTP 메서드를 반환합니다
16String getParameter(문자열 이름)


이 요청에서 이름으로 지정된 매개변수를 반환하거나, 존재하지 않는 경우 null을 반환합니다
17문자열 getPathInfo()


이 요청 URL과 연결된 추가 경로를 반환합니다.
                  18String getProtocol()


이 요청에 사용된 프로토콜 이름과 버전을 반환합니다.
19String getQueryString()


이 요청 URL에 포함된 쿼리 문자열
을 반환합니다. 20String getRemoteAddr()


클라이언트의 IP 주소를 반환합니다
21String getRemoteHost()


클라이언트의 전체 이름을 반환합니다.
22문자열 getRemoteUser()


클라이언트에서 로그인 인증을 통과한 사용자를 반환합니다. 사용자가 인증되지 않은 경우 null을 반환합니다
23문자열 getRequestURI()


요청 URI 반환
24문자열 getRequestedSessionId()


요청에 의해 지정된 세션 ID를 반환합니다
25문자열 getServletPath()


요청된 서블릿 경로를 반환합니다
26String[] getParameterValues(문자열 이름)


지정된 이름을 가진 매개변수의 모든 값을 반환하거나 존재하지 않는 경우 null을 반환합니다
27부울 isSecure()


요청이 HTTPS와 같은 암호화된 채널을 사용하는지 여부를 반환합니다
28int getContentLength()


요청 본문에 포함된 바이트 수를 반환합니다. 알 수 없는 경우 -1
을 반환합니다. 29int getIntHeader(문자열 이름)


지정된 이름을 가진 요청 헤더의 값을 반환합니다
30int getServerPort()


반환 서버 포트번호

HTTP 헤더 예제

이 예제에서는 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>php中文网(php.cn)</title>
</head>
<body>
<h2>HTTP 头部请求实例</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>
</body>
</html>

main.jsp에 액세스하면 다음과 같은 결과를 얻을 수 있습니다.

jspheadmsg.jpg

위 코드에서 HttpServletRequest 클래스의 다른 메서드를 시도해 볼 수 있습니다.