[*.do¿¡¼ /* ·Î ¹Ù²Ù°Ô µÈ ÀÌÀ¯]
½ºÇÁ¸µ 3.1 »ùÇà ÇÁ·ÎÁ§Æ®ÀÇ web.xml(DD) ±¸¼º ½Ã url-patternÀ» *.do¿Í °°ÀÌ ¼³Á¤ÇÏ¿´´Ù.
ÀÌÀ¯´Â ´Ü¼øÇÏ´Ù.
ÇÁ·ÎÁ§Æ®¸¦ ÁøÇàÇÒ ¶§ Ç×»ó *.do¸¦ »ç¿ëÇ߱⠶§¹®ÀÌ´Ù.
ÇÏÁö¸¸ REST ¹æ½ÄÀÇ À¥ ¾îÇø®ÄÉÀ̼ÇÀ» ±¸¼ºÇϱâ À§Çؼ´Â ´ÙÀ½°ú °°Àº URL Çü½ÄÀ» Á¦°øÇØ¾ß Çϴµ¥ ÇöÀç´Â *.do¿Í °°ÀÌ µÇ¾î Àֱ⠶§¹®¿¡ patternÀ» /* ¿Í °°ÀÌ º¯°æÇؾ߸¸ Çß´Ù.
http://localhost:8080/user/list
[Çö»ó]
ÀÌÁ¦ ³»°¡ ¸¸µé¾î ³õÀº ÇÁ·ÎÁ§Æ®´Â REST ¹æ½ÄÀ» Áö¿øÇÏ´Â spring web applicationÀÌ µÇ¾ú´Ù.
Ç㳪 controller mapping urlÀ» È£ÃâÇϸé 404 ¿¡·¯°¡ ¹ß»ýÇÏ¸é¼ ¾Æ·¡¿Í °°Àº ·Î±×°¡ ÂïÈù´Ù.
No mapping found for HTTP request with URI [/WEB-INF/view/common/layout/default/layout.jsp] in
DispatcherServlet with name 'dispatcher'
[¿øÀÎ]
controller mapping urlÀ» ¸ø ã¾Æ¼ ¹ß»ýÇÏ´Â 404°¡ ¾Æ´Ñ /WEB-INF/view/common/layout/default/layout.jsp ÀÇ ¸ÅÇÎ URLÀ» ãÀ» ¼ö ¾ø¾î¼ ¹ß»ýÇÏ´Â ¿À·ù¿´´Ù.
ÀÌ ¿À·ù°¡ ¹ß»ýÇÏ´Â ¿øÀÎÀ» ¾Ë±â À§Çؼ´Â ¼ºí¸´ ÄÁÅ×ÀÌ³Ê¿Í À¥ ¾îÇø®ÄÉÀ̼ǰ£ÀÇ ¿¬µ¿ ¹æ¹ýÀ» ¾Ë¾Æ¾ß ÇÑ´Ù.
ÀÏ´Ü url-pattern¿¡ µî·ÏÇÒ ¼ö ÀÖ´Â URLÀº ´ÙÀ½°ú °°´Ù.
"/"·Î ½ÃÀÛÇÏ°í "/*"·Î ³¡³ª´Â ÆÐÅÏÀº path·Î ÀνÄ
"*."À¸·Î ½ÃÀÛÇÏ´Â °æ¿ì È®ÀåÀÚ ¸ÅĪ
"/"¸¸ Á¤ÀÇÇÑ °æ¿ì µðÆúÆ® ¼ºí¸´ ÀǹÌ
±× ¿ÜÀÇ °æ¿ì µ¿Ä¡ ¸ÅĪ
À§ÀÇ ÆÐÅÏ ¸ÅĪ¿¡ Á¸ÀçÇÏÁö´Â ¾ÊÁö¸¸ /*´Â ¿äû ¹Þ´Â ¸ðµç URLÀ» ó¸®ÇÑ´Ù´Â Àǹ̴Ù. (¾Æ·¡¿Í °°Àº À¯ÇüÀÇ ÆÐÅÏ ¸ðµÎ)
/user/list
/user/list.do
/user/userList.jsp
/img/test.png
°á±¹ ¸ðµç ¿äûÀ» DispatcherServlet¿¡¼ ó¸®ÇÏ°Ú´Ù°í ÁöÁ¤ÇßÀ¸´Ï jsp¿¡ ´ëÇÑ È£Ãâµµ DispatcherServletÀÌ Ã³¸®¸¦ ÇÏ·Á°í Çß´ø °ÍÀÌ´Ù.
ÀÌ·Î ÀÎÇÏ¿© jsp¿¡ ÇØ´çÇÏ´Â mapping urlÀ» ãÀ» ¼ö ¾ø¾î HTTP 404 ¿À·ù°¡ ¹ß»ýÇÏ°Ô µÈ °ÍÀÌ´Ù.
[ÇØ°á ¹æ¾È]
±×·³ ÇØ°á ¹æ¹ýÀº ¹»±î?
°á·ÐÀûÀ¸·Î ¸»ÇÏÀÚ¸é url-patternÀ» "/" ·Î ÁöÁ¤ÇÏ¸é µÈ´Ù.
ÇØ°á ¹æ¹ýÀº °£´ÜÇÏÁö¸¸ ¿Ö ÀÌ·¸°Ô ¼³Á¤Çϸé Àß µÇ´ÂÁö ±Ã±ÝÇØ Á³´Ù.
À§¿¡¼ ¾ð±ÞÇßÁö¸¸ "/"·Î Á¤ÀÇÇÑ °æ¿ì µðÆúÆ® ¼ºí¸´À» ÀǹÌÇÑ´Ù°í ÇÏ¿´´Ù.
ÀÌ°Ô ¹º ¸»Àΰ¡?
ÀÌ ¸»ÀÇ Àǹ̸¦ ã¾Æ º¸´Ï µðÆúÆ® ¼ºí¸´Àº ¼ºí¸´ ¸ÅÇÎ URL¿¡ °É¸®Áö ¾Ê´Â ¿äûµéÀ» ó¸®ÇÑ´Ù°í ÇÑ´Ù.
¶Ç Àǹ®ÀÌ »ý±ä´Ù.
³ ¼ºí¸´ ¸ÅÇÎÀ» "/" ¿Í °°ÀÌ ÇÑ °³¸¸ ¸¸µé¾ú´Âµ¥...°á±¹ °Å¸£´Â ÀÛ¾÷ ¾øÀÌ ³»°¡ ¸¸µé¾î ³õÀº ¼ºí¸´ ¸ÅÇο¡ ¸ðµÎ °É¸®´Â °Í ¾Æ´Ñ°¡?
±×¸®°í µðÆúÆ® ¼ºí¸´Àº ¹º°¡?
À§ÀÇ Àǹ®µéÀ» ÇØ°áÇϱâ À§Çؼ ÀÌÁ¦ tomcat ¼ºí¸´ ÄÁÅ×À̳ʿ¡ ´ëÇؼ ¾ð±ÞÇÒ ¶§°¡ ¿Ô´Ù.
${TOMCAT_HOME}/conf/web.xml ÆÄÀÏÀ» ¿¾î º¸¸é ´ÙÀ½°ú °°ÀÌ ¼¼ °³ÀÇ ¼ºí¸´ ¸ÅÇÎÀÌ Á¸ÀçÇÑ´Ù.
<servlet-mapping>
<servlet-name>default</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>default</servlet-name>
<servlet-class>org.apache.catalina.servlets.DefaultServlet</servlet-class>
<init-param>
<param-name>debug</param-name>
<param-value>0</param-value>
</init-param>
<init-param>
<param-name>listings</param-name>
<param-value>false</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>jsp</servlet-name>
<url-pattern>*.jsp</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>jsp</servlet-name>
<url-pattern>*.jspx</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>jsp</servlet-name>
<servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
<init-param>
<param-name>fork</param-name>
<param-value>false</param-value>
</init-param>
<init-param>
<param-name>xpoweredBy</param-name>
<param-value>false</param-value>
</init-param>
<load-on-startup>3</load-on-startup>
</servlet>
*.jsp, *.jspx¿Í °°Àº url ÆÐÅÏÀº JspServletÀÌ Ã³¸®ÇÏ°í, DefaultServletÀº spring Controller mapping°ú jsp ÆÐÅÏ¿¡ °É¸®Áö ¾Ê´Â ¿äû µéÀ» ó¸®ÇÑ´Ù´Â °á·ÐÀÌ ³ª¿Â´Ù.
Áï, DefaultServletÀº png, jpg, js, htmlµî Á¤ÀûÀÎ content¸¦ ó¸®ÇÑ´Ù´Â ¸»ÀÌ´Ù.
Á¤¸®Çϸé
http://localhost:8080/user/userList.jsp <- JspServlet ¿äû ó¸®
http://localhost:8080/img/button.jpg <- DefaultServlet ¿äû ó¸®
http://localhost:8080/user/list <- DispatcherServlet ¿äû ó¸®
[½ºÇÁ¸µ¿¡¼ Á¤Àû content È£Ã⠽à 404 ¿¡·¯ ¹ß»ý]
¹®Á¦°¡ »ý°å´Ù.
http://localhost:8080/user/list ´Â Á¤»óÀûÀ¸·Î µ¿ÀÛÇϴµ¥
http://localhost:8080/img/button.jpg ·Î È£Ãâ ÇÒ ¶§ 404 ¿¡·¯°¡ ¹ß»ýÇÑ´Ù.
DispatcherServlet with name 'dispatcher' processing GET request for [/img/button.jpg]
·Î±×¸¦ º¸¸é *.jpg È£Ã⠽à DefaultServletÀÌ Ã³¸®ÇÏ´Â °ÍÀÌ ¾Æ´Ñ DispatcherServletÀÌ Ã³¸®¸¦ ÇÏ°Ô µÇ´Â °ÍÀ» º¼ ¼ö ÀÖ´Ù.
´ç¿¬È÷ DispatcherServletÀÌ Ã³¸®¸¦ ÇÏ°Ô µÇ¸é controller mapping URLÀÌ Á¸ÀçÇÏÁö ¾ÊÀ¸´Ï 404 ¿À·ù°¡ ¹ß»ýÇÑ´Ù.
DispatcherServletÀº url-patternÀ» "/" ¿Í °°ÀÌ ¼³Á¤ÇÏ°Ô µÇ¸é¼ tomcatÀÇ server.xml¿¡ Á¤ÀǵǾî ÀÖ´Â url-pattern "/"À» ¹«½ÃÇϱ⠶§¹®ÀÌ´Ù.
°á±¹ DispatcherServlet url-patternÀ» ÀçÁ¤ÀÇÇÏ°Ô µÇ¾î¼ DefaultServletÀº ´õÀÌ»ó µ¿ÀÛÇÒ ¼ö ¾ø°Ô µÈ °ÍÀÌ´Ù.
½ºÇÁ¸µ¿¡¼´Â À̸¦ ÇØ°áÇϱâ À§Çؼ <mvc:default-servlet-handler /> ¼³Á¤À» Áö¿øÇÑ´Ù.
<mvc:default-servlet-handler /> ¼³Á¤Àº ³»ºÎÀûÀ¸·Î DefaultServletHttpRequestHandler°¡ ´ã´çÇÏ°Ô µÇ°í, ÀÌ Çڵ鷯(ÄÁÆ®·Ñ·¯)´Â /**·Î ¸ÅÇεǾî ÀÖ´Ù°í ÇÑ´Ù. (¾Æ·¡ Åäºñ´Ô ±Û Âü°í)
DefaultServletHttpRequestHandler°¡ ÇÏ´Â ¿ªÇÒÀº DispatcherServletÀÌ Ã³¸® ¸øÇÏ´Â ¸ÅÇÎ urlÀ» DefaultServletÀ¸·Î ³Ñ±â´Â °ÍÀÌ´Ù.
µåµð¾î Á¤¸® ³¡...
À̶ó°í »ý°¢ÇÏ¸é ¿À»ê.
<mvc:default-servlet-handler /> ¼³Á¤À» Ãß°¡ÇÏ´Ï http://localhost:8080/user/list È£Ã⠽à 404¿¡·¯°¡ ¹ß»ýÇÑ´Ù.
·Î±×¸¦ È®ÀÎÇØ º¸´Ï ÀÌ»óÇÑ ºÎºÐÀÌ ÀÖ¾ú´Ù.
¾Æ·¡¿Í °°ÀÌ SimpleUrlHandlerMapping¿¡¼ 󸮸¦ ÇÏ°í ÀÖ´Â °ÍÀÌ´Ù.
SimpleUrlHandlerMapping - Matching patterns for request [/user/list] are [/**]
µðÆúÆ® Çڵ鷯 ¸ÅÇÎÀÎ DefaultAnnotationHandlerMappingÀÌ Ã³¸®ÇØ¾ß Çϴµ¥ ¿Ö SimpleUrlHandlerMappingÀÌ Ã³¸®¸¦ ÇÏ°Ô µÈ °ÍÀϱî?
ÀÌÀ¯´Â µÎ °³ ÀÌ»óÀÇ Çڵ鷯 ¸ÅÇÎÀÌ µî·ÏµÇ¾úÀ» °æ¿ì¿¡´Â µðÆúÆ® Àü·«ÀÌ ¹«½ÃµÇ±â ¶§¹®ÀÌ´Ù.
°á±¹ <mvc:annotation-driven /> ¼³Á¤À» ÅëÇØ DefaultAnnotationHandlerMappingÀÌ ÀÚµ¿ µî·ÏµÇ°Ô ¼³Á¤ÇÏ¿´°í, ÀÌ·Î½á ¸ðµç ¿äûÀÌ Á¤»óÀûÀ¸·Î µ¿ÀÛÇÏ¿´´Ù.
´ÜÁö url-pattern¸¸ Á¤¸®ÇÏ·Á°í Çߴµ¥ ²¿¸®¿¡ ²¿¸®¸¦ ¹°¾î¼ ½ºÇÁ¸µ±îÁö ¼³Á¤±îÁö ¿À°Ô µÇ¾ú´Ù.
Áö±Ý±îÁö url-pattern¿¡ ´ëÇؼ ´ë¼ö·ÓÁö ¾Ê°Ô »ý°¢Çߴµ¥ ±î¸é ±ò¼ö·Ï °øºÎÇØ¾ß ÇÒ °ÍµéÀÌ »ê´õ¹ÌÀÌ´Ù.
±×·¡µµ ¿À´Ã ÇÏ·ç ³»°¡ ¹º°¡¸¦ ¹è¿ï ¼ö ÀÖ¾ú´Ù´Â °Í¿¡ º¸¶÷À» ´À³¤´Ù.