Web server가 HTTP request에 대한 응답을 브라우저에 보낼때 그 응답은 전형적으로 상태정보와 몇몇 응답 헤더들 그리고 빈 줄 그리고 문서로 이루어져 있다. 보통 아래처럼 응답이 구성된다.
HTTP/1.1 200 OK Content-Type: text/html Header2: ... ... HeaderN: ... ( 빈 줄 ) <!doctype ...> <html> <head>...</head> <body> ... </body> </html>
상태정보를 표시하는 첫번째 줄은 HTTP 버전 (위 예제에서는 HTTP/1.1 ), 상태코드 ( 위 예제에서는 200 ), 그리고 상태코드에 맞는 짧은 메시지 (위 예에서는 OK )로 구성됩니다.
아래 테이블의 내용은 HTTP 1.1 응답헤더의 유용한 정보들입니다.
Header | Description |
---|---|
Allow | This header specifies the request methods (GET, POST, etc.) that the server supports. |
Cache-Control | This header specifies the circumstances in which the response document can safely be cached. It can have values public, private or no-cache etc. Public means document is cacheable, Private means document is for a single user and can only be stored in private (nonshared) caches and no-cache means document should never be cached. |
Connection | This header instructs the browser whether to use persistent in HTTP connections or not. A value of close instructs the browser not to use persistent HTTP connections and keep-alive means using persistent connections. |
Content-Disposition | This header lets you request that the browser ask the user to save the response to disk in a file of the given name. |
Content-Encoding | This header specifies the way in which the page was encoded during transmission. |
Content-Language | This header signifies the language in which the document is written. For example en, en-us, ru, etc. |
Content-Length | This header indicates the number of bytes in the response. This information is needed only if the browser is using a persistent (keep-alive) HTTP connection. |
Content-Type | This header gives the MIME (Multipurpose Internet Mail Extension) type of the response document. |
Expires | This header specifies the time at which the content should be considered out-of-date and thus no longer be cached. |
Last-Modified | This header indicates when the document was last changed. The client can then cache the document and supply a date by an If-Modified-Since request header in later requests. |
Location | This header should be included with all responses that have a status code in the 300s. This notifies the browser of the document address. The browser automatically reconnects to this location and retrieves the new document. |
Refresh | This header specifies how soon the browser should ask for an updated page. You can specify time in number of seconds after which a page would be refreshed. |
Retry-After | This header can be used in conjunction with a 503 (Service Unavailable) response to tell the client how soon it can repeat its request. |
Set-Cookie | This header specifies a cookie associated with the page. |
HttpServletResponse 객체에서 제공하는 메소드들은 아래와 같습니다.
S.N. | Method & Description |
---|---|
1 | String encodeRedirectURL(String url) Encodes the specified URL for use in the sendRedirect method or, if encoding is not needed, returns the URL unchanged. |
2 | String encodeURL(String url) Encodes the specified URL by including the session ID in it, or, if encoding is not needed, returns the URL unchanged. |
3 | boolean containsHeader(String name) Returns a boolean indicating whether the named response header has already been set. |
4 | boolean isCommitted() Returns a boolean indicating if the response has been committed. |
5 | void addCookie(Cookie cookie) Adds the specified cookie to the response. |
6 | void addDateHeader(String name, long date) Adds a response header with the given name and date-value. |
7 | void addHeader(String name, String value) Adds a response header with the given name and value. |
8 | void addIntHeader(String name, int value) Adds a response header with the given name and integer value. |
9 | void flushBuffer() Forces any content in the buffer to be written to the client. |
10 | void reset() Clears any data that exists in the buffer as well as the status code and headers. |
11 | void resetBuffer() Clears the content of the underlying buffer in the response without clearing headers or status code. |
12 | void sendError(int sc) Sends an error response to the client using the specified status code and clearing the buffer. |
13 | void sendError(int sc, String msg) Sends an error response to the client using the specified status. |
14 | void sendRedirect(String location) Sends a temporary redirect response to the client using the specified redirect location URL. |
15 | void setBufferSize(int size) Sets the preferred buffer size for the body of the response. |
16 | void setCharacterEncoding(String charset) Sets the character encoding (MIME charset) of the response being sent to the client, for example, to UTF-8. |
17 | void setContentLength(int len) Sets the length of the content body in the response In HTTP servlets, this method sets the HTTP Content-Length header. |
18 | void setContentType(String type) Sets the content type of the response being sent to the client, if the response has not been committed yet. |
19 | void setDateHeader(String name, long date) Sets a response header with the given name and date-value. |
20 | void setHeader(String name, String value) Sets a response header with the given name and value. |
21 | void setIntHeader(String name, int value) Sets a response header with the given name and integer value. |
22 | void setLocale(Locale loc) Sets the locale of the response, if the response has not been committed yet. |
23 | void setStatus(int sc) Sets the status code for this response. |
아래 소스는 디지털 시계를 보여주기 위해서 Refresh헤더에 5초마다 새로고침하도록 setIntHeader() 메소드를 이용해서 값을 세팅하는 것을 보여주고 있습니다.
<%@ page import="java.io.*,java.util.*" %> <html> <head> <title>Auto Refresh Header Example</title> </head> <body> <center> <h2>Auto Refresh Header Example</h2> <% // Set refresh, autoload time as 5 seconds response.setIntHeader("Refresh", 5); // Get current time Calendar calendar = new GregorianCalendar(); String am_pm; int hour = calendar.get(Calendar.HOUR); int minute = calendar.get(Calendar.MINUTE); int second = calendar.get(Calendar.SECOND); if(calendar.get(Calendar.AM_PM) == 0) am_pm = "AM"; else am_pm = "PM"; String CT = hour+":"+ minute +":"+ second +" "+ am_pm; out.println("Current Time is: " + CT + "\n"); %> </center> </body> </html>
main.jsp 에 위 소스를 넣고 웹브라우저에서 요청하면 아래처럼 5초마다 새로고침되는 디지털 시계를 보실 수 있으실거에요.
Auto Refresh Header ExampleCurrent Time is: 9:44:50 PM |
Reference : http://www.tutorialspoint.com/jsp/jsp_server_response.htm
[JSP] Filters ( 필터 사용하기 ) (0) | 2019.02.15 |
---|---|
[JSP] Form 데이타 처리 (0) | 2019.02.15 |
[JSP] Request Object ( Client Request ) (0) | 2019.02.15 |
[JSP] Implicit Objects ( 묵시적 객체들 ) (0) | 2019.02.15 |
[JSP] Actions ( 액션 ) (0) | 2019.02.15 |
사용자가 웹브라우저에서 웹페이지를 요청하면 웹브라우저는 웹서버로 많은 정보를 전달하게 되는데 이 정보들은 모두 HTTP request 의 헤더 내에 포함되어 전달된다. HTTP Protocol 에 대한 내용은 링크를 참조하기 바란다.
아래 내용은 브라우저에서 웹서버쪽으로 보내는 정보 중에 중요한 헤더 정보를 간추린 것입니다.
Header | Description |
---|---|
Accept | This header specifies the MIME types that the browser or other clients can handle. Values of image/png or image/jpeg are the two most common possibilities. |
Accept-Charset | This header specifies the character sets the browser can use to display the information. For example ISO-8859-1. |
Accept-Encoding | This header specifies the types of encodings that the browser knows how to handle. Values of gzip or compress are the two most common possibilities. |
Accept-Language | This header specifies the client's preferred languages in case the servlet can produce results in more than one language. For example en, en-us, ru, etc. |
Authorization | This header is used by clients to identify themselves when accessing password-protected Web pages. |
Connection | This header indicates whether the client can handle persistent HTTP connections. Persistent connections permit the client or other browser to retrieve multiple files with a single request. A value of Keep-Alive means that persistent connections should be used |
Content-Length | This header is applicable only to POST requests and gives the size of the POST data in bytes. |
Cookie | This header returns cookies to servers that previously sent them to the browser. |
Host | This header specifies the host and port as given in the original URL. |
If-Modified-Since | This header indicates that the client wants the page only if it has been changed after the specified date. The server sends a code, 304 which means Not Modified header if no newer result is available. |
If-Unmodified-Since | This header is the reverse of If-Modified-Since; it specifies that the operation should succeed only if the document is older than the specified date. |
Referer | This header indicates the URL of the referring Web page. For example, if you are at Web page 1 and click on a link to Web page 2, the URL of Web page 1 is included in the Referer header when the browser requests Web page 2. |
User-Agent | This header identifies the browser or other client making the request and can be used to return different content to different types of browsers. |
HttpServletRequest 객체에서 제공하는 메소드들은 아래와 같습니다.
S.N. | Method & Description |
---|---|
1 | Cookie[] getCookies() Returns an array containing all of the Cookie objects the client sent with this request. |
2 | Enumeration getAttributeNames() Returns an Enumeration containing the names of the attributes available to this request. |
3 | Enumeration getHeaderNames() Returns an enumeration of all the header names this request contains. |
4 | Enumeration getParameterNames() Returns an Enumeration of String objects containing the names of the parameters contained in this request. |
5 | HttpSession getSession() Returns the current session associated with this request, or if the request does not have a session, creates one. |
6 | HttpSession getSession(boolean create) Returns the current HttpSession associated with this request or, if if there is no current session and create is true, returns a new session. |
7 | Locale getLocale() Returns the preferred Locale that the client will accept content in, based on the Accept-Language header |
8 | Object getAttribute(String name) Returns the value of the named attribute as an Object, or null if no attribute of the given name exists. |
9 | ServletInputStream getInputStream() Retrieves the body of the request as binary data using a ServletInputStream. |
10 | String getAuthType() Returns the name of the authentication scheme used to protect the servlet, for example, "BASIC" or "SSL," or null if the JSP was not protected |
11 | String getCharacterEncoding() Returns the name of the character encoding used in the body of this request. |
12 | String getContentType() Returns the MIME type of the body of the request, or null if the type is not known. |
13 | String getContextPath() Returns the portion of the request URI that indicates the context of the request. |
14 | String getHeader(String name) Returns the value of the specified request header as a String. |
15 | String getMethod() Returns the name of the HTTP method with which this request was made, for example, GET, POST, or PUT. |
16 | String getParameter(String name) Returns the value of a request parameter as a String, or null if the parameter does not exist. |
17 | String getPathInfo() Returns any extra path information associated with the URL the client sent when it made this request. |
18 | String getProtocol() Returns the name and version of the protocol the request. |
19 | String getQueryString() Returns the query string that is contained in the request URL after the path. |
20 | String getRemoteAddr() Returns the Internet Protocol (IP) address of the client that sent the request. |
21 | String getRemoteHost() Returns the fully qualified name of the client that sent the request. |
22 | String getRemoteUser() Returns the login of the user making this request, if the user has been authenticated, or null if the user has not been authenticated. |
23 | String getRequestURI() Returns the part of this request's URL from the protocol name up to the query string in the first line of the HTTP request. |
24 | String getRequestedSessionId() Returns the session ID specified by the client. |
25 | String getServletPath() Returns the part of this request's URL that calls the JSP. |
26 | String[] getParameterValues(String name) Returns an array of String objects containing all of the values the given request parameter has, or null if the parameter does not exist. |
27 | boolean isSecure() Returns a boolean indicating whether this request was made using a secure channel, such as HTTPS. |
28 | int getContentLength() Returns the length, in bytes, of the request body and made available by the input stream, or -1 if the length is not known. |
29 | int getIntHeader(String name) Returns the value of the specified request header as an int. |
30 | int getServerPort() Returns the port number on which this request was received. |
아래는 HttpServletRequest의 getHeaderNames()메소드 예제입니다. 이 메소드는 현재 요청에 대한 HTTP header 정보를 읽어와서 Enumeration을 반환합니다. Enumeration을 얻어오면 우리는 hasMoreElements() 메소드를 이용해서 루프를 돌면서 nextElement() 메소드를 이용해서 헤더명을 가져올 수 있습니다. 아래 예제는 그렇게 얻어온 헤더명을 이용해서 해당 헤더명에 대한 실제 값까지 얻어와서 화면에 출력하는 기능을 하는 페이지입니다.
<%@ page import="java.io.*,java.util.*" %> <html> <head> <title>HTTP Header Request Example</title> </head> <body> <center> <h2>HTTP Header Request Example</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> </center> </body> </html>
위 소스코드를 main.jsp 파일에 넣고 웹브라우저에서 요청해보세요. 아래와 같은 결과를 얻을 수 있을것입니다.
Header Name | Header Value(s) |
---|---|
accept | */* |
accept-language | en-us |
user-agent | Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; InfoPath.2; MS-RTC LM 8) |
accept-encoding | gzip, deflate |
host | localhost:8080 |
connection | Keep-Alive |
cache-control | no-cache |
Reference : http://www.tutorialspoint.com/jsp/jsp_client_request.htm
[JSP] Form 데이타 처리 (0) | 2019.02.15 |
---|---|
[JSP] Response Object ( Server Response, Auto Refresh ) (0) | 2019.02.15 |
[JSP] Implicit Objects ( 묵시적 객체들 ) (0) | 2019.02.15 |
[JSP] Actions ( 액션 ) (0) | 2019.02.15 |
[JSP] Custom Tags ( 커스텀, 사용자 정의 태그 ) (0) | 2019.02.15 |