¼Ò¼³°°ÀºJSP1ºÎ  4Àå Core of Servlet  14 Request¸Þ½ÃÁö¸¦ º¸³»¾î ÆäÀÌÁö ¹Þ±â  

 

14 HttpServletRequest – Request¸Þ½ÃÁö¸¦ º¸³»¾î ÆäÀÌÁö ¹Þ±â

 

Ŭ¶óÀÌ¾ðÆ®°¡ ¸Þ½ÃÁö¸¦ ¿äûÇÏ°í ±×¸®°í HTTP¼­¹ö°¡ ó¸®ÇÏ´Â °úÁ¤Àº ¸î´Ü°èÀÇ ÀýÂ÷¸¦ °ÅÄ¡°Ô µË´Ï´Ù. ÀÌ·¯ÇÑ ÀýÂ÷µéÀº À¥ºê¶ó¿ìÁ®³ª ¼­ºí¸´ ÀÚü¿¡¼­µµ ¼û°ÜÁ® ÀÖÁö¸¸ ÀÌ ÀýÂ÷¸¦ ÁöŰ¸é¼­ ÇÁ·Î±×·¥À» ÇØ º¸µµ·Ï ÇϰڽÀ´Ï´Ù. Ŭ¶óÀÌ¾ðÆ®°¡ ¸Þ½ÃÁö¸¦ ¿äûÇÒ ¶§ HTTP¼­¹ö°¡ ó¸®ÇÏ´Â °úÁ¤À» ±×¸²À¸·Î ³ªÅ¸³»°í ÀÖ½À´Ï´Ù.

 

 

 

¸ÕÀú ¿©·¯ºÐÀº Request ¸Þ½ÃÁö¸¦ ¸¸µé¾î¾ß ÇÕ´Ï´Ù. ±×¸®°í Request¸Þ½ÃÁö¸¦ HTTPÀ¥¼­¹ö·Î º¸³»¸é Responseµ¥ÀÌÅ͸¦ ¹ÞÀ» ¼ö ÀÖ½À´Ï´Ù. À̰ÍÀ» ÇÁ·Î±×·¥À¸·Î Áõ¸íÇØ º¸µµ·Ï ÇϰڽÀ´Ï´Ù.

 

RequestMessage.java

Request Message¿Í Response Message Áõ¸í

package chap4;
import java.io.*; 
import javax.servlet.*; 
import javax.servlet.http.*; 
import java.net.*;
public class RequestMessage extends HttpServlet { 
  
public void doGet(HttpServletRequest request, HttpServletResponse response) 
    
throws ServletException, IOException { 
    OutputStream out = response.getOutputStream(); 
    InetAddress webServer = InetAddress.getByName(
"kr.yahoo.com");
    Socket httpPipe = 
new Socket(webServer, 80);//À¥¼­¹öÆ÷Æ®:80
    
InputStream is = httpPipe.getInputStream();
    PrintStream os = 
new PrintStream(httpPipe.getOutputStream());
    os.println(
"GET " "/index.html" " HTTP/1.0\n");// send GET HTTP request
    
int temp;
    ByteArrayOutputStream baos = 
new ByteArrayOutputStream();
    
while ( (temp = is.read())!=-1) {
      baos.write(temp);
    }
    out.write(baos.toByteArray());
    os.close();
    is.close();
    out.close();
  } 
}

C:\jakarta\webapps\MySample\WEB-INF\classes\chap4>javac RequestMessage.java

 

Åë½ÅÇϱâ À§ÇÑ ¼ÒÄÏÀ» »ý¼ºÇϰí ÀÖ½À´Ï´Ù. ÇöÀç ¿¬°áÇÏ·Á°í ÇÏ´Â ¼­¹ö´Â http://kr.yahoo.com/index.htmlÀÔ´Ï´Ù. ŸÄÏ URLÀ» ÀÌ¿ëÇÏ¿© ¼ÒÄÏÀ» »ý¼ºÇÏ´Â ¹æ¹ýÀº ´ÙÀ½°ú °°½À´Ï´Ù.

 

n        InetAddress webServer = InetAddress.getByName("kr.yahoo.com");

n        Socket httpPipe = new Socket(webServer, 80);//À¥¼­¹öÆ÷Æ®:80

 

¼ÒÄÏÀÌ ¹«»çÈ÷ »ý¼ºµÇ¾ú´Ù¸é ¿©·¯ºÐµéÀº ÇØ´ç ¼ÒÄÏ¿¡ ÀԷ½ºÆ®¸²°ú Ãâ·Â½ºÆ®¸²À» »ý¼ºÇϽøé ÇØ´ç À¥¼­¹ö·Î µ¥ÀÌÅ͸¦ º¸³»°Å³ª µ¥ÀÌÅ͸¦ ¹Þ¾ÆµéÀÏ ¼ö ÀÖ½À´Ï´Ù. ´ÙÀ½°ú °°Àº ±¸¹®À¸·Î »ý¼ºµÈ ¼ÒÄÏ¿¡ ½ºÆ®¸²À» ¿­°í ÀÖ½À´Ï´Ù.

 

n        InputStream is = httpPipe.getInputStream();

n        PrintStream os = new PrintStream(httpPipe.getOutputStream());

 

½ºÆ®¸²ÀÌ »ý¼ºµÇ¾ú´Ù¸é Ãâ·Â½ºÆ®¸²À» ÀÌ¿ëÇÏ¿© ¿¬°áµÈ À¥¼­¹ö¿¡ ¿äû¸Þ½ÃÁö¸¦ º¸³À´Ï´Ù. ¿äû¸Þ½ÃÁö¸¦ ¸¸µå´Â ¹æ¹ý¿¡ ´ëÇØ¼­´Â ÀÌÀü Àý¿¡¼­ ³íÇÏ¿´À¸´Ï Âü°íÇϽñ⠹ٶø´Ï´Ù. °ø¹éÀ» »ðÀÔÇØ¾ßÇÏ´Â °ÍÀ» ÀØÁö¸¶½Ã±â ¹Ù¶ø´Ï´Ù.

 

n        os.println("GET " + "/index.html" + " HTTP/1.0\n");

 

Ãâ·Â ½ºÆ®¸²À¸·Î Request¸Þ½ÃÁö¸¦ º¸³½´Ù¸é ¼ÒÄÏ¿¡ ¿¬°áµÈ ÀԷ½ºÆ®¸²À¸·Î µ¥ÀÌÅͰ¡ µé¾î¿À°Ô µÉ °ÍÀÔ´Ï´Ù. µ¥ÀÌÅ͸¦ ByteArrayStream¿¡ ÀûÀçÇϰí ÀûÀçµÈ ¹ÙÀÌÆ®µéÀ» ¼­ºí¸´ÀÇ out½ºÆ®¸²À¸·Î Ãâ·ÂÇØ¼­ º¸³»°í ÀÖ½À´Ï´Ù.

 

n        int temp;

n        ByteArrayOutputStream baos = new ByteArrayOutputStream();

n        while ( (temp = is.read())!=-1) {

n           baos.write(temp);

n        }

n        out.write(baos.toByteArray());

 

 Å¬¶óÀÌ¾ðÆ®°¡ Àü¼ÛÇÏ´Â Response ¸Þ½ÃÁöÀÇ ±¸¼ºµµ´Â ´ÙÀ½°ú °°½À´Ï´Ù.

 

 

 Response ¸Þ½ÃÁö´Â Response »óÅ ¶óÀΰú Çì´õºÎºÐ ±×¸®°í µ¥ÀÌÅÍ ºÎºÐÀ¸·Î ³ª´µ¾î Áý´Ï´Ù.

Response ¸Þ½ÃÁöÀÇ ±¸¼º¿ä¼Ò

n        Response Status Line

n        Header Line

n        Body(data)

 

 Response »óŶóÀÎÀº Version°ú »óŸ¦ ³ªÅ¸³»´Â Ç¥½Ã°¡ µé¾î ÀÖ½À´Ï´Ù.

 

n        HTTP/1.1  200  OK

 

 ÇöÀç´Â 200 OK¸¦ Ç¥½ÃÇϰí ÀÖÁö¸¸ ´Ù¾çÇÑ »óŸ¦ Ç¥½ÃÇϱâ À§ÇÑ ¹øÈ£¸¦ °¡Áö°í ÀÖ½À´Ï´Ù. ÀÌ ¹øÈ£´Â »óÅ¿¡ µû¶ó¼­ ´Ù¸£°Ô Ç¥½ÃµÇ´Âµ¥ ´ëÇ¥ÀûÀ¸·Î ¸¹ÀÌ »ç¿ëµÇ´Â »óŹøÈ£¸¦ »ìÆìº¸¸é ´ÙÀ½°ú °°½À´Ï´Ù.

 

n        200 OK: Ŭ¶óÀ̾ðÆ®ÀÇ ¿äûÀÌ ¼º°øÀûÀ¸·Î ¼öÇàµÊ

n        301 Moved Permanently: ¿äû URLÀÌ À̵¿µÇ¾úÀ¸¸ç »õ·Î¿î À§Ä¡°¡ Á¤ÇØÁü

n        400 Bad Request: ¼­¹ö°¡ ÀÌÇØÇÒ ¼ö ¾ø´Â ¿äû ¸Þ½ÃÁö

n        404 Not Found : ÇØ´ç À¥¼­¹ö¿¡¼­ ¿äû URLÀ» ãÀ» ¼ö ¾øÀ½

n        505 HTTP Version Not Supported: ÇöÀçÀÇ ¹öÁ¯¿¡¼­´Â Áö¿øÇÏÁö ¾ÊÀ½

 

 ±×¸®°í HeaderºÎºÐÀº RequestÀÇ Çì´õºÎºÐ°ú ¸¶Âù°¡Áö·Î ÇìµåÀ̸§°ú °ªÀ¸·Î ±¸ºÐµÇ¾î ÀÖÀ¸¸ç Response¿¡ ÇÊ¿äÇÑ Çì´õµéÀ» Æ÷ÇÔÇϰí ÀÖ½À´Ï´Ù.

 

n        Date: Wed, 06 Mar 2002 17:25:03 GMT

n        P3P: policyref="http://p3p.yahoo.com/w3c/p3p.xml", CP="CAO DSP COR CUR ADM DEV TAI PSA PSD IVAi IVDi CONi TELo OTPi OUR DELi SAMi OTRi UNRi PUBi IND PHY ONL UNI PUR FIN COM NAV INT DEM CNT STA POL HEA PRE GOV"

n        Last-Modified: Wed, 06 Mar 2002 13:42:14 GMT

n        ETag: "34b842-93d0-3c861cb6"

n        Accept-Ranges: bytes

n        Content-Length: 37840

n        Connection: close

n        Content-Type: text/html

 

ÀÌ·¯ÇÑ ÀýÂ÷¸¦ °ÅÄ¡°í ³ª¸é ¿©·¯ºÐÀº À§ÀÇ °á°úÈ­¸é°ú °°ÀÌ Çì´õÁ¤º¸¿Í ÇØ´çÆäÀÌÁö¸¦ º¼ ¼ö ÀÖÀ» °ÍÀÔ´Ï´Ù. À̶§ ¿©·¯ºÐÀÌ À¯½ÉÈ÷ º¸¼Å¾ß ÇÒ °ÍÀº ResponseÀÇ Çì´õÁ¤º¸ÀÔ´Ï´Ù. ¾Õ Àý¿¡¼­ RequestÀÇ Á¤º¸¿¡ ´ëÇØ¼­ ¾ð±ÞÇß½À´Ï´Ù. À̹ø Àý¿¡¼­ ¿©·¯ºÐÀº Response Message ±× ÀÚü¸¦ Á÷Á¢ ´«À¸·Î È®ÀÎ ÇÏ½Ç ¼ö ÀÖÀ» °ÍÀÔ´Ï´Ù.  À§ÀÇ ±×¸²°ú °°Àº ResponseÀÇ Çì´õ Á¤º¸¸¦ º¸½Ç ¼ö ÀÖÀ» °ÍÀÔ´Ï´Ù.

jabookÀúÀÚ¸íÇÔ
Á¦¸ñ:¼Ò¼³°°ÀºJSP1ºÎ
ÀúÀÚ:ÃÖ¿µ°ü