¼Ò¼³°°Àº ÀÚ¹Ù 4ºÎ  Á¦16Àå ³×Æ®¿÷ÀÇ ±âº»  16.3 URL Ŭ·¡½º  

 

16.3 URL Ŭ·¡½º

 

 

ÀÌ Àå°ú ÀÌÈÄ Àåµé¿¡¼­´Â java.net ÆÐŰÁö¿¡ ÀÖ´Â URLŬ·¡½º¸¦ Æ÷ÇÔÇÑ °ÅÀÇ ºñ½ÁÇÑ ±â´ÉÀ» °¡Áø Ŭ·¡½ºµé¿¡ ´ëÇØ¼­ ¾Ë¾Æ º¸µµ·Ï ÇϰڽÀ´Ï´Ù. ´ÙÀ½°ú °°Àº Ŭ·¡½ºµéÀÌ ´ëÇ¥ÀûÀÎ URL°ü·Ã Ŭ·¡½ºµéÀÔ´Ï´Ù.

 

n         URLŬ·¡½º

n         URLConnectionŬ·¡½º

n         URLEncoderŬ·¡½º

n         URLDecoderŬ·¡½º

n         URLClassLoaderŬ·¡½º

 

ÀÌ Àå¿¡¼­´Â URL Ŭ·¡½ºÀÇ »ç¿ë¹æ¹ý°ú Àǹ̿¡ ´ëÇØ¼­ ¾Ë¾Æ º¸µµ·Ï ÇϰڽÀ´Ï´Ù.

 

URLŬ·¡½º´Â À¥»ó¿¡ Á¸ÀçÇÏ´Â ÀÚ¿ø¿¡ Á¢±ÙÇϰųª, ³×Æ®¿÷ »óÀÇ À¯ÀÏÇÑ ÁÖ¼Ò¸¦ ³ªÅ¸³»±â À§ÇÑ ¹æ¹ý·ÐÀ» Á¦°øÇÕ´Ï´Ù. URLÀÇ ±¸Á¶¸¦ º¸¸é ¡°http://www.jabook.org:8080/web/ test.html¡±Ã³·³ ¡°ÇÁ·ÎÅäÄÝ://È£½ºÆ®À̸§:Æ÷Æ®/È£½ºÆ®»óÀÇ °æ·Î¸í/ÆÄÀÏ¡±ÀÇ ÇüŸ¦ Áö´Ï°í ÀÖ½À´Ï´Ù.

 

±×·³ ¸ÕÀú URLÀ» ±¸¼ºÇϰí ÀÖ´Â °¢ ºÎºÐµéÀ» »ìÆìº¼±î¿ä?

n        ÇÁ·ÎÅäÄÝ(Protocol) : ÀÚ¿ø¿¡ Á¢±ÙÇϱâ À§ÇØ »ç¿ëÇϰíÀÚ ÇÏ´Â ÇÁ·ÎÅäÄÝÀ» ³ªÅ¸³À´Ï´Ù.

n        È£½ºÆ®À̸§(Host) : Á¢±ÙÇÏ·Á´Â ÀÚ¿øÀÌ ÀúÀåµÇ¾î Àִ ȣ½ºÆ®¸¦ ³ªÅ¸³À´Ï´Ù.

n        Æ÷Æ®(Port) : URLÀº ¿ø°Ý È£½ºÆ®»ó¿¡¼­ »ý¼ºµÈ TCP¿¬°á¿¡ ´ëÇÑ Æ÷Æ®¹øÈ£¸¦ ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¸¸¾à Æ÷Æ®¹øÈ£°¡ »ý·«µÇ¾î ÀÖ´Ù¸é, °¢ ÇÁ·ÎÅäÄÝ¿¡ µû¶ó ±âº»°ªÀ» »ç¿ëÇÏ°Ô µË´Ï´Ù

n        °æ·Î¸í(Path) : Á¢±ÙÇÏ·Á´Â ÆÄÀÏÀÌ ÀúÀåµÇ¾î Àִ ȣ½ºÆ®»óÀÇ °æ·Î¸¦ ³ªÅ¸³À´Ï´Ù. ÀÌ ºÎºÐÀº ÇÁ·ÎÅäÄÝ ¶Ç´Â È£½ºÆ®¿¡ µû¶ó ´Ù¸£°Ô Ç¥ÇöµÉ ¼ö ÀÖ°í, ÆÄÀÏ ¶Ç´Â µð·ºÅ͸® ÀÏ ¼ö ÀÖ½À´Ï´Ù. 

n        ÆÄÀÏ(File) : Á¢±ÙÇÏ·Á´Â ÆÄÀÏÀÔ´Ï´Ù. ¶Ç URL¿¡¼­´Â ÂüÁ¶¸¦ ³ªÅ¸³¾ ¼ö ÀÖ½À´Ï´Ù. À̶§ ÂüÁ¶´Â ¡®#¡¯¹®ÀÚ¸¦ ÀÌ¿ëÇØ¼­ ³ªÅ¸³¾ ¼ö ÀÖ½À´Ï´Ù.

(¿¹: http://java.sun.com/index.html#chapter1)

 

ÀÌ·¯ÇÑ URL±¸Á¶¸¦ º¸´Ù Æí¸®ÇÏ°Ô »ç¿ëÇÒ ¼ö ÀÖµµ·Ï Çϴ Ŭ·¡½º°¡ ¹Ù·Î URLŬ·¡½ºÀÔ´Ï´Ù. URL°´Ã¼¸¦ »ý¼ºÇÏ´Â ¹æ¹ýÀº 2°¡Áö·Î ºÐ·ùÇØ º¼ ¼ö ÀÖ½À´Ï´Ù. Çϳª´Â ¸Å°³º¯¼ö Çü½ÄÀ¸·Î °¢°¢ÀÇ µ¥ÀÌÅ͸¦ ³Ö¾î¼­ »ý¼ºÇÏ´Â ¹æ¹ý°ú Àüü URLÀ» StringÀ¸·Î ÀÔ·ÂÇÏ´Â ¹æ¹ýÀÌ ÀÖ½À´Ï´Ù. ÀÌÇØ°¡ Àß ¾È µÇ½ÃÁÒ? ±×·³ ±× ¹æ¹ýÀ» ÀÚ¼¼È÷ º¸±â À§ÇØ .¹Ì´Ï Äڵ带 ¸¸µé¾î º¸µµ·Ï ÇϰڽÀ´Ï´Ù. À̰ÍÀ» º¸¸é ÀÌÇØ°¡ ½±°Ô µÇ½Ç °ÍÀÔ´Ï´Ù.

 

URL °´Ã¼¸¦ »ý¼ºÇÏ´Â ¹æ¹ý

try {

   // Á¶ÇÕÇü½ÄÀ¸·Î »ç¿ëÇÏ´Â ¹æ¹ý

   URL url1 = new URL("http", "hostname", 80, "index.html");

 

   // StringÀ» »ç¿ëÇÏ´Â ¹æ¹ý

   URL url2 = new URL("http://hostname:80/index.html");

 } catch (MalformedURLException e) {}

 

URL°´Ã¼¸¦ »ý¼ºÇÒ ¼ö ÀÖ´Â ÀÛ¾÷À» ¾Ë¾Æ º¸±â À§Çؼ­ URLŬ·¡½ºÀÇ ÁÖ¿ä ¸Þ¼­µåµéÀ» ¾Ë¾Æ º¸µµ·Ï ÇϰڽÀ´Ï´Ù.

 

    URLŬ·¡½ºÀÇ ÁÖ¿ä ¸Þ¼­µå

n        public String getProtocol()

n        public String getHost()

n        public String getFile()

n        public String getRef()

n        public InputStream openStream()

n        public int getPort() ¡¦  µîµî.

 

  ÀÌ ¸Þ¼­µåµéÀ» º¸´Ï ¡®URLŬ·¡½º´Â InetAddressŬ·¡½ºº¸´Ù ¾à°£ ´õ È®Àå µÈ °³³äÀ̱¸³ª!¡¯ ¶ó´Â »ý°¢ÀÌ µéÁÒ? InetAddressŬ·¡½º´Â ´ÜÁö È£½ºÆ®À̸§°ú IP Address¿¡ °ü·ÃµÈ Á¤º¸¸¸À» ´Ù·çÁö¸¸, URLŬ·¡½º¿¡¼­´Â º¸´Ù ¹Ì¼¼ÇÑ Á¤º¸±îÁö ºÐ·ùÇØ¼­ ÃßÃâÇÒ ¼ö ÀÖ½À´Ï´Ù. ±×¸®°í URLŬ·¡½º¸¸ÀÇ Æ¯Â¡Àº ³×Æ®¿÷ ¿¬°á±îÁö ÇÒ ¼ö ÀÖ´Ù´Â °ÍÀÔ´Ï´Ù. ´ÙÀ½ ¿¹Á¦´Â URLŬ·¡½º¸¦ ÀÌ¿ëÇØ ³×Æ®¿÷À¸·Î ƯÁ¤ÆÄÀÏÀ» ¿¬°áÇÏ¿© ±× URLÀÚüÀÇ Á¤º¸¸¦ ÃßÃâÇÏ´Â ÇÁ·Î±×·¥ÀÔ´Ï´Ù. ÀÌ ¿¹Á¦¸¦ ÅëÇØ InetAddressŬ·¡½º¿Í URLŬ·¡½ºÀÇ »ç¿ë»óÀÇ Â÷ÀÌÁ¡À» È®½ÇÈ÷ ¾Æ½Ã°Ô µÉ °ÍÀÔ´Ï´Ù.

 

URLTest.java(URL°´Ã¼ ½ºÆ®¸² Å×½ºÆ®)

import java.net.*;

import java.io.*;

public class URLTest {

   public static void main(String args[]) {

       try {

          URL home  = new  URL("http://www.jabook.org:80/index.html");

          BufferedReader br;

          String line;

          System.out.println("Port: "+home.getPort());

          System.out.println("Protocol: "+home.getProtocol());

          System.out.println("HostName: "+home.getHost());

          System.out.println("File: "+home.getFile());

          System.out.println("Ref: "+home.getRef());

          br = new BufferedReader(new InputStreamReader(home.openStream()));

          while ((line = br.readLine()) != null) {

             System.out.println(line);

          }

          br.close();

       } catch (Exception e) {

          System.out.println("Exception: " + e);

       }

   }

}

C:\JavaExample\16>javac URLTest.java

C:\JavaExample\16>java URLTest

Port: 80

Protocol: http

HostName: www.jabook.org

File: /index.html

Ref: null

<html>

<head>

<title>º¸¼®ÀÚ¹Ù</title>

</head>

<frameset rows="42,100%" frameborder=0 border=0>

    <frame src="head.html" name="menuhead" scrolling="no" marginwidth="0

" marginheight="0" target="_self" noresize>

      <frame name="down" src="intro.html" scrolling="auto">

    </frameset>

</html>

 

ÀÌ ¿¹Á¦¿¡¼­´Â ¸Å°³º¯¼ö¸¦ StringÇü½ÄÀ¸·Î ÀÔ·ÂÇÏ¿© URL°´Ã¼¸¦ »ý¼ºÇϰí ÀÖ½À´Ï´Ù. ÀÌ °´Ã¼¸¦ »ý¼ºÇÒ ¶§ ¿©·¯ºÐÀº MalformedURLException󸮸¦ ÇØ ÁÖ¾î¾ß ÇÕ´Ï´Ù. ÀÌ ¿¹Á¦¿¡¼­´Â ÃÖ»óÀ§ ExceptionÀ» ó¸®Çϱ⠶§¹®¿¡ ¸ðµç ¿¡·¯Ã³¸®¸¦ Æ÷ÇÔÇÏ°Ô µË´Ï´Ù.

 

n        URL home  = new  URL("http://www.jabook.org:80/index.html");

 

±×¸®°í »ý¼ºµÈ URL°´Ã¼ homeÀ» ÀÌ¿ëÇÏ¿© ¸î °¡Áö Á¤º¸¸¦ ÃßÃâÇϰí ÀÖ½À´Ï´Ù.

 

n        home.getPort(): port¸¦ intÇüÀ¸·Î ¸®ÅÏÇÕ´Ï´Ù.

n        home.getProtocol(): protocolÀ» StringÇüÀ¸·Î ¸®ÅÏÇÕ´Ï´Ù.

n        home.getHost():È£½ºÆ® À̸§À» StringÇüÀ¸·Î ¸®ÅÏÇÕ´Ï´Ù.

n        home.getFile():ÆÄÀÏÀ̸§À» StringÇüÀ¸·Î ¸®ÅÏÇÕ´Ï´Ù.

n        home.getRef(): Reference¸¦ StringÇüÀ¸·Î ¸®ÅÏÇÕ´Ï´Ù.

 

 ±âº»ÀûÀÎ ÀÛ¾÷Àº ÀÌ¿Í °°ÀÌ URLÀÚüÀÇ Á¤º¸¸¦ ÃßÃâÇÏ´Â ÀÛ¾÷ÀÔ´Ï´Ù. ±×¸®°í URL°´Ã¼¸¦ ÀÌ¿ëÇÏ¿© ÇØ´ç URL¿¡ ConnectionÀ» »ý¼ºÇÏ¿© StreamÀ» ¿­°í µ¥ÀÌÅ͸¦ ¾òÀ» ¼ö ÀÖ½À´Ï´Ù. ½ºÆ®¸²À» »ý¼ºÇÏ´Â ¹æ¹ýÀº ¸ÕÀú URL°´Ã¼ homeÀ» ÀÌ¿ëÇÏ¿© openStream()¸Þ¼­µå¸¦ È£ÃâÇÏ¿© InputStreamÀ» ¾ò¾î³»°Ô µÇ¸ç InputStreamÀ» »ç¿ëÇÏ±â ÆíÇÑ ½ºÆ®¸²À¸·Î º¯È¯ÇÏ´Â ÀÛ¾÷À» ÇÕ´Ï´Ù.

 

n         BufferedReader br = new BufferedReader(new InputStreamReader(home.openStream()));

 

ÀÌ ±¸¹®À» ´Ù½Ã ¿©·¯ÁÙ·Î Ç®¾î¼­ ¾´´Ù¸é ´ÙÀ½°ú °°ÀÌ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.

 

n        InputStream is = home.openStream();

n        InputStreamReader isr = new InputStreamReader(is);

n        BufferedReader br = new BufferedReader(isr);

 

½ºÆ®¸²À» º¯È¯ÇÏ´Â °ÍÀº ¿©·¯ ¹ø º¸¾ÒÀ» °ÍÀÔ´Ï´Ù. À§ÀÇ ½ºÆ®¸²Àº Á¦ÀÏ ¸ÕÀú Byte½ºÆ®¸²ÀÎ InputStream is ¾òÀº ÈÄ ÀÌ °´Ã¼ is¸¦ 1Â÷ÀûÀ¸·Î Character½ºÆ®¸²ÀÎ InputStreamReader·Î º¯È¯Çϰí ÀÖ½À´Ï´Ù. ±×¸®°í ÀÌ ¹®ÀÚ ½ºÆ®¸²À» Buffer±â´ÉÀÌ ÀÖ´Â, ÇÑ ÁÙ ´ÜÀ§·Î ÀÛ¾÷ÇÒ ¼ö ÀÖ´Â BufferedReader·Î º¯È¯Çϰí ÀÖ½À´Ï´Ù. ÀÌ·¸°Ô º¯È¯ÇÑ ÀÌÀ¯´Â ½ºÆ®¸µÀ» ÇÑ ÁÙ¾¿ ÀÛ¾÷Çϱâ À§Çؼ­ º¯È¯ÇÑ °ÍÀÔ´Ï´Ù.

 

 »ý¼ºµÈ ½ºÆ®¸²À» ÅëÇØ¼­ µ¥ÀÌÅ͸¦ ÇÑ ÁÙ´ÜÀ§·Î ÀÐ¾î µéÀ̰í ÀÖ½À´Ï´Ù.

 

n        String line=null;

n        while ((line = br.readLine()) != null) {

n                System.out.println(line);

n        }

 

¸¶Áö¸·À¸·Î, ¿­¸° ½ºÆ®¸²À» ´Ý¾ÆÁÖ°í ÀÖ½À´Ï´Ù.

 

n        br.close();

 

URLŬ·¡½ºÀÇ »ý¼ºÀÚ¸Þ¼­µå

public URL(String spec) throws MalformedURLException : String Ç¥Çö¿¡¼­ URL °´Ã¼¸¦ ÀÛ¼ºÇÑ´Ù. ÀÌ »ý¼ºÀڴ ù¹øÂ° Àμö·Î nullÀ» »ç¿ëÇÏ¿© Àμö°¡ µÎ °³ÀÎ »ý¼ºÀÚ¸¦ È£ÃâÇÑ´Ù.

public URL(URL context, String spec) throws MalformedURLException : ÁöÁ¤µÈ ¹®¸Æ ³»¿¡¼­ ¸Å°³º¯¼ö specÀ» ºÐ¼®ÇÏ¿© URLÀ» ÀÛ¼ºÇÑ´Ù. context Àμö°¡ nullÀÌ ¾Æ´Ï°í spec Àμö°¡ ºÎºÐÀûÀÎ URLÁÖ¼ÒÀÎ °æ¿ì, ÄÄÆ÷³ÍÆ®°¡ ´©¶ôµÈ ¹®ÀÚ¿­Àº context Àμö¿¡¼­ »ó¼ÓµÈ´Ù. String Àμö·Î ÁöÁ¤µÇ´Â ½ºÆåÀº ÇÁ·ÎÅäÄÝ ÁöÁ¤ ¿©ºÎ¸¦ ¾Ë¾Æ³»±â À§ÇØ ºÐ¼®µÈ´Ù. String¿¡¼­ ASCII ½½·¡½Ã ¹®ÀÚ('/')°¡ óÀ½ ³ª¿À±â Àü¿¡ ASCII ÄÝ·Ð(':') ¹®ÀÚ°¡ ¸ÕÀú ³ª¿À´Â °æ¿ì, ÄÝ·Ð ÀÌÀüÀÇ ¹®ÀÚ°¡ ÇÁ·ÎÅäÄÝ·Î ±¸¼ºµÈ´Ù.

public URL(String protocol, String host, String file) throws MalformedURLException : ÁöÁ¤µÈ protocol¸í, host¸í ¹× file¸í¿¡¼­ Àý´ë°æ·Î·Î URLÀ» ÀÛ¼ºÇÑ´Ù. ÁöÁ¤µÈ ÇÁ·ÎÅäÄÝÀÇ ±âº» Æ÷Æ®°¡ »ç¿ëµÈ´Ù.

ÀÌ ¸Þ¼Òµå´Â Àμö·Î protocol, host, -1 ¹× fileÀ» »ç¿ëÇÏ´Â »ý¼ºÀÚ¸¦ È£ÃâÇÑ´Ù

public URL(String protocol, String host, int port, String file, URLStreamHandler handler) throws MalformedURLException : ÇÁ·ÎÅäÄÝ, È£½ºÆ®¸í, Æ÷Æ®¹øÈ£, ±×¸®°í ÆÄÀϸíÀ» ÀÏÀÏÀÌ ÁöÁ¤ÇÏ¿© ±×¿¡ ´ëÀÀÇÏ´Â URL °³Ã¼¸¦ »ý¼ºÇÑ´Ù. Æ÷Æ®¹øÈ£¸¦ -1·Î ÁöÁ¤ÇÏ¸é ±× ÇÁ·ÎÅäÄÝÀÇ °íÀ¯ Æ÷Æ®¹øÈ£·Î ÀÚµ¿ ÁöÁ¤µÈ´Ù. ¶ÇÇÑ ÀÌ ±¸¼ºÀÚ´Â URLStreamHandler °³Ã¼, Áï, ½ºÆ®¸² ÇÁ·ÎÅäÄÝ Çڵ鷯stream protocol handler¸¦ ÁöÁ¤Çϵµ·Ï µÇ¾î ÀÖ´Ù.

 

URLŬ·¡½ºÀÇ ÁÖ¿ä ¸â¹ö¸Þ¼­µå

public String getFile() : URLÀÇ ÆÄÀϸíÀ» ¸®ÅÏÇÑ´Ù.

public String getHost() : Àû¿ë °¡´ÉÇÑ °æ¿ì, URLÀÇ È£½ºÆ®¸íÀ» ¸®ÅÏÇÑ´Ù. "file" ÇÁ·ÎÅäÄÝÀÇ °æ¿ì, ºñ¾î ÀÖ´Â ¹®ÀÚ¿­ÀÌ´Ù.

public int getPort() : URLÀÇ Æ÷Æ® ¹øÈ£¸¦ ¸®ÅÏÇÕ´Ï´Ù. Æ÷Æ®°¡ ¼³Á¤µÇÁö ¾ÊÀº °æ¿ì -1À» ¸®ÅÏÇÑ´Ù.

public String getProtocol() : URLÀÇ ÇÁ·ÎÅäÄݸíÀ» ¸®ÅÏÇÑ´Ù.

public String getRef() : URLÀÇ ¾ÞÄ¿("ÂüÁ¶"¶ó°íµµ ÇÔ)¸¦ ¸®ÅÏÇÑ´Ù.

public URLConnection openConnection() throws IOException : URL·Î ÂüÁ¶µÇ´Â ¿ø°Ý °´Ã¼·ÎÀÇ ¿¬°áÀ» ³ªÅ¸³»´Â URLConnection °´Ã¼¸¦ ¸®ÅÏÇÑ´Ù. ¿¬°áÀÌ ¿­¸®Áö ¾ÊÀº °æ¿ì, URL¿¡ ´ëÇÑ ÇÁ·ÎÅäÄÝ Çڵ鷯ÀÇ openConnectionÀ» È£ÃâÇÏ¿© ¿¬°áÀ» ¿¬´Ù.

 

URLŬ·¡½º¸¦ ÀÌ¿ëÇÏ¸é ³×Æ®¿÷¿¡ ¿¬°áÇÏ¿© URLÀÇ Æ¯Á¤ Á¤º¸¸¦ ¾òÀ» ¼ö ÀÖ½À´Ï´Ù. ÀÌ URL °´Ã¼´Â ÀÚ¿øÀÇ À§Ä¡»Ó ¾Æ´Ï¶ó ±× URLÀ» À§ÇÑ ½ºÆ®¸² ÇÁ·ÎÅäÄÝ Çڵ鷯(Stream Protocol Handler)¸¦ °¡Áö°í Àִµ¥ URLŬ·¡½º³»ÀÇ openConnection()¸Þ¼­µå°¡ ±× ¿ªÇÒÀ» ´ã´çÇÕ´Ï´Ù. ±×·¡¼­ URL¿¡ ´ëÇÑ Á¢¼ÓÀº openConnection()¸Þ¼­µå¸¦ È£ÃâÇÒ ¶§¸¶´Ù ¸Å¹ø »õ·ÎÀÌ ÀÌ·ç¾îÁöÁÒ. 

 

±×·±µ¥ À§ ÁÖ¿ä ¸â¹ö¸Þ¼­µå ¼³¸íÀ» ÀÚ¼¼È÷ º¸¸é openConnection()¸Þ¼­µåÀÇ ¹ÝȯÇüÀÌ URLConnectionÀ¸·Î µÇ¾î ÀÖ½À´Ï´Ù. Ȳ´çÇϽÃÁÒ? ÀÌ´Â URLConnectionÀÌ ¸ðµç Á¢¼Ó Ŭ·¡½ºÀÇ ÃÖ»óÀ§Å¬·¡½ºÀ̱⠶§¹®Àε¥ ½ÇÁ¦·Î´Â ±× URL ÇÁ·ÎÅäÄÝ¿¡ ¸Â´Â Á¢¼ÓŬ·¡½º °´Ã¼°¡ µÇµ¹·ÁÁö´Â °ÍÀÔ´Ï´Ù. °¡·É HTTPÀÇ °æ¿ì¿¡´Â HttpURLConnectionÀÌ, JARÀÇ °æ¿ì¿¡´Â  JarURLConnectionÀÌ µÇµ¹·ÁÁý´Ï´Ù. ÀÌÇØ°¡ Àß  ¾ÈµÅ½Å´Ù±¸¿ä? ±×·³ ´ÙÀ½ Àý¿¡¼­ URLŬ·¡½º¿Í URLConnectionŬ·¡½ºÀÇ Â÷À̸¦ Çѹø »ìÆìº¸µµ·Ï ÇÏÁÒ

 

¢Ñ URLŬ·¡½º

À¥»ó¿¡ Á¸ÀçÇÏ´Â ÀÚ¿ø¿¡ Á¢±ÙÇϰųª, ³×Æ®¿÷ »óÀÇ À¯ÀÏÇÑ ÁÖ¼Ò¸¦ ³ªÅ¸³»±â À§ÇÑ ¹æ¹ý·ÐÀ» Á¦°øÇÑ´Ù.



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