HTTP (2)

💻 Programming/JSP

[JSP] Response Object ( Server Response, Auto Refresh )

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 응답헤더의 유용한 정보들입니다.

 

HeaderDescription
AllowThis header specifies the request methods (GET, POST, etc.) that the server supports.
Cache-ControlThis 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.
ConnectionThis 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-DispositionThis header lets you request that the browser ask the user to save the response to disk in a file of the given name.
Content-EncodingThis header specifies the way in which the page was encoded during transmission.
Content-LanguageThis header signifies the language in which the document is written. For example en, en-us, ru, etc.
Content-LengthThis 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-TypeThis header gives the MIME (Multipurpose Internet Mail Extension) type of the response document.
ExpiresThis header specifies the time at which the content should be considered out-of-date and thus no longer be cached.
Last-ModifiedThis 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.
LocationThis 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.
RefreshThis 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-AfterThis header can be used in conjunction with a 503 (Service Unavailable) response to tell the client how soon it can repeat its request.
Set-CookieThis header specifies a cookie associated with the page.


HttpServletResponse

 HttpServletResponse 객체에서 제공하는 메소드들은 아래와 같습니다.  

 

S.N.Method & Description
1String encodeRedirectURL(String url)
Encodes the specified URL for use in the sendRedirect method or, if encoding is not needed, returns the URL unchanged.
2String encodeURL(String url)
Encodes the specified URL by including the session ID in it, or, if encoding is not needed, returns the URL unchanged.
3boolean containsHeader(String name)
Returns a boolean indicating whether the named response header has already been set.
4boolean isCommitted()
Returns a boolean indicating if the response has been committed.
5void addCookie(Cookie cookie)
Adds the specified cookie to the response.
6void addDateHeader(String name, long date)
Adds a response header with the given name and date-value.
7void addHeader(String name, String value)
Adds a response header with the given name and value.
8void addIntHeader(String name, int value)
Adds a response header with the given name and integer value.
9void flushBuffer()
Forces any content in the buffer to be written to the client.
10void reset()
Clears any data that exists in the buffer as well as the status code and headers.
11void resetBuffer()
Clears the content of the underlying buffer in the response without clearing headers or status code.
12void sendError(int sc)
Sends an error response to the client using the specified status code and clearing the buffer.
13void sendError(int sc, String msg)
Sends an error response to the client using the specified status.
14void sendRedirect(String location)
Sends a temporary redirect response to the client using the specified redirect location URL.
15void setBufferSize(int size)
Sets the preferred buffer size for the body of the response.
16void setCharacterEncoding(String charset)
Sets the character encoding (MIME charset) of the response being sent to the client, for example, to UTF-8.
17void setContentLength(int len)
Sets the length of the content body in the response In HTTP servlets, this method sets the HTTP Content-Length header.
18void setContentType(String type)
Sets the content type of the response being sent to the client, if the response has not been committed yet.
19void setDateHeader(String name, long date)
Sets a response header with the given name and date-value.
20void setHeader(String name, String value)
Sets a response header with the given name and value.
21void setIntHeader(String name, int value)
Sets a response header with the given name and integer value.
22void setLocale(Locale loc)
Sets the locale of the response, if the response has not been committed yet.
23void setStatus(int sc)
Sets the status code for this response.


HTTP Header 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 Example

Current Time is: 9:44:50 PM

 

 

 

 

Reference : http://www.tutorialspoint.com/jsp/jsp_server_response.htm 

 

'💻 Programming > JSP' 카테고리의 다른 글

[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

💻 Programming/JSP

[JSP] Request Object ( Client Request )

사용자가 웹브라우저에서 웹페이지를 요청하면 웹브라우저는 웹서버로 많은 정보를 전달하게 되는데 이 정보들은 모두 HTTP request 의 헤더 내에 포함되어 전달된다. HTTP Protocol 에 대한 내용은 링크를 참조하기 바란다.

 

아래 내용은 브라우저에서 웹서버쪽으로 보내는 정보 중에 중요한 헤더 정보를 간추린 것입니다.

 

HeaderDescription
AcceptThis 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-CharsetThis header specifies the character sets the browser can use to display the information. For example ISO-8859-1.
Accept-EncodingThis 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-LanguageThis 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.
AuthorizationThis header is used by clients to identify themselves when accessing password-protected Web pages.
ConnectionThis 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-LengthThis header is applicable only to POST requests and gives the size of the POST data in bytes.
CookieThis header returns cookies to servers that previously sent them to the browser.
HostThis header specifies the host and port as given in the original URL.
If-Modified-SinceThis 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-SinceThis 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.
RefererThis 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-AgentThis header identifies the browser or other client making the request and can be used to return different content to different types of browsers.



HttpServletRequest 

 HttpServletRequest 객체에서 제공하는 메소드들은 아래와 같습니다.

S.N.Method & Description
1Cookie[] getCookies()
Returns an array containing all of the Cookie objects the client sent with this request.
2Enumeration getAttributeNames()
Returns an Enumeration containing the names of the attributes available to this request.
3Enumeration getHeaderNames()
Returns an enumeration of all the header names this request contains.
4Enumeration getParameterNames()
Returns an Enumeration of String objects containing the names of the parameters contained in this request.
5HttpSession getSession()
Returns the current session associated with this request, or if the request does not have a session, creates one.
6HttpSession 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.
7Locale getLocale()
Returns the preferred Locale that the client will accept content in, based on the Accept-Language header
8Object getAttribute(String name)
Returns the value of the named attribute as an Object, or null if no attribute of the given name exists.
9ServletInputStream getInputStream()
Retrieves the body of the request as binary data using a ServletInputStream.
10String 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
11String getCharacterEncoding()
Returns the name of the character encoding used in the body of this request.
12String getContentType()
Returns the MIME type of the body of the request, or null if the type is not known.
13String getContextPath()
Returns the portion of the request URI that indicates the context of the request.
14String getHeader(String name)
Returns the value of the specified request header as a String.
15String getMethod()
Returns the name of the HTTP method with which this request was made, for example, GET, POST, or PUT.
16String getParameter(String name)
Returns the value of a request parameter as a String, or null if the parameter does not exist.
17String getPathInfo()
Returns any extra path information associated with the URL the client sent when it made this request.
18String getProtocol()
Returns the name and version of the protocol the request.
19String getQueryString()
Returns the query string that is contained in the request URL after the path.
20String getRemoteAddr()
Returns the Internet Protocol (IP) address of the client that sent the request.
21String getRemoteHost()
Returns the fully qualified name of the client that sent the request.
22String 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.
23String 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.
24String getRequestedSessionId()
Returns the session ID specified by the client.
25String getServletPath()
Returns the part of this request's URL that calls the JSP.
26String[] 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.
27boolean isSecure()
Returns a boolean indicating whether this request was made using a secure channel, such as HTTPS.
28int 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.
29int getIntHeader(String name)
Returns the value of the specified request header as an int.
30int getServerPort()
Returns the port number on which this request was received.


HTTP Header Request 예제

아래는 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 파일에 넣고 웹브라우저에서 요청해보세요. 아래와 같은 결과를 얻을 수 있을것입니다.


HTTP Header Request Example

Header NameHeader Value(s)
accept*/*
accept-languageen-us
user-agentMozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; InfoPath.2; MS-RTC LM 8)
accept-encodinggzip, deflate
hostlocalhost:8080

connection

Keep-Alive
cache-control

no-cache

 

 

 

 

 

Reference : http://www.tutorialspoint.com/jsp/jsp_client_request.htm