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() |
4 | 열거 getParameterNames() |
5 | HttpSession getSession() |
6 | HttpSession getSession(boolean create) |
가 반환됩니다. 7 | 로캘 getLocale() |
응답으로 설정할 수 있는 현재 페이지의 Locale 개체를 반환합니다. 8 | Object getAttribute(문자열 이름) |
9 | ServletInputStream getInputStream() |
10 | 문자열 getAuthType() |
에 대해 보호 조치가 설정되지 않은 경우 null을 반환합니다. 11 | 문자열 getCharacterEncoding() |
12 | String getContentType() |
13 | String getContextPath() |
에 지정된 컨텍스트 경로를 반환합니다. 14 | String getHeader(문자열 이름) |
15 | 문자열 getMethod() |
16 | String getParameter(문자열 이름) |
17 | 문자열 getPathInfo() |
18 | String getProtocol() |
19 | String getQueryString() |
을 반환합니다. 20 | String getRemoteAddr() |
21 | String getRemoteHost() |
22 | 문자열 getRemoteUser() |
23 | 문자열 getRequestURI() |
24 | 문자열 getRequestedSessionId() |
25 | 문자열 getServletPath() |
26 | String[] getParameterValues(문자열 이름) |
27 | 부울 isSecure() |
28 | int getContentLength() |
을 반환합니다. 29 | int getIntHeader(문자열 이름) |
30 | int 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에 액세스하면 다음과 같은 결과를 얻을 수 있습니다.
위 코드에서 HttpServletRequest 클래스의 다른 메서드를 시도해 볼 수 있습니다.