SPRING
2016.03.03 / 19:07

Spring - Spring Ãʱ⠼³Á¤

dwsi
Ãßõ ¼ö 356


À̹ÌÁö                                                                    <±×¸²Ãâó : À¥°³¹ßÀÚ¸¦ À§ÇÑ Spring 2.5 ÇÁ·Î±×·¡¹Ö: ÀúÀÚ ÃÖ¹ü±Õ>

SpringFrameWork´Â À¥À» °³¹ßÇϴµ¥ ÀÖ¾î Full SpecÀ» Áö¿øÇÏ´Â ÇÁ·¹ÀÓ ¿÷ÀÌ´Ù.
SpringMVC·Î À¥°³¹ßÀ» ÇÒ¶§ ÀÛµ¿ ¼ø¼­´Â À§ÀÇ ±×¸²°ú °°´Ù.

1. Ŭ¶óÀ̾ðÆ®·Î ºÎÅÍ URLÀÌ ¿äûµÇ¾î µé¾î¿À¸é Á¦ÀϸÕÀú web.xml ÆÄÀÏÀ» ·ÎµùÇÏ¿© ½ºÇÁ¸µ¿¡¼­ Áö¿øÇÏ´Â DispatcherServletÀÌ ½ÇÇàµÈ´Ù.
(À̸§¿¡¼­ ¾Ë¼ö ÀÖµíÀÌ SpringFramework´Â Servlet ±â¹ÝÀÓÀ¸·Î ½ºÇÁ¸µ¿¡¼­ Áö¿øÇØÁÖ´Â Controller¿¡¼­´Â HttpServletRequest,HttpServletResponse ÀÎÅÍÆäÀ̽º¸¦ ÀÌ¿ëÇؼ­ request, response ÀνºÅϽº¸¦ »ç¿ë ÇÒ ¼ö°¡ ÀÖ´Ù.)

2. DispatcherServletÀº Ŭ¶óÀ̾ðÆ®·ÎºÎÅÍ µé¾î¿Â URLÀ» HandlerMapping À̶ó´Â °÷À¸·Î Àü¼ÛÈÄ¿¡ URLÀ» ºÐ¼®Çؼ­ ¾Ë¸ÂÀº ÄÁÆ®·Ñ·¯ À̸§À» DispatcherServlet À¸·Î º¸³½´Ù.

3. HandlerMappingÀ̶ó´Â °ÍÀ» ÅëÇؼ­ ½ÇÇàµÉ ControllerÀÇ À̸§À» ÀԷ¹ÞÀº DispatcherServletÀº Àü´Þ¹ÞÀº Controller¸¦ ½ÇÇà ½ÃŲ´Ù. ÀÌ·¸°Ô ½ÇÇàµÈ Controller´Â ½ºÇÁ¸µ¿¡¼­ Á¦°øÇÏ´Â ModelAndView °´Ã¼¿¡ ºäÆäÀÌÁö¿¡ Àü´ÞÇÒ °´Ã¼¿Í ºäÆäÀÌÁö À̸§ Á¤º¸¸¦ ´ã°í DispatcherServletÀ¸·Î º¸³½´Ù.

4. ViewResolver¸¦ ÅëÇØ º¸¿©Áú ViewÆäÀÌÁö¸¦ Ž»öÇÑÈÄ ViewÆäÀÌÁö¸¦ º¸¿©ÁØ´Ù.

SpringMVC ÀÇ À¥°³¹ßÀº À§¿Í°°Àº ·çƾÀ¸·Î ¿òÁ÷À̱⠶§¹®¿¡ ½ºÇÁ¸µ Ãʱ⠼³Á¤À» ÇÒ¶§´Â ´ÙÀ½°ú °°ÀÌ ¼ø¼­¸¦ »ý°¢Çϸ鼭 ¼ÂÆÃÀ» Çϸé ÀØ¾î ¹ö¸®Áö ¾Ê´Â´Ù.

<½ºÇÁ¸µ ¼³Á¤>
1. web.xml ¼¼ÆÃ
¨ç DispatcherServletÀ» ¼¼ÆÃÇØ ÁØ´Ù.
<servlet>
   <servlet-name>dispatcher</servlet-name>
   <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
   <!-- ±âº» À§Ä¡´Â [servlet name]-servlet.xml Àº WEB-INF¿¡¼­ ºÒ·¯ ¿ÀÁö¸¸ ±âŸ ´Ù¸¥À§Ä¡¿¡ ÀÖÀ»¶§´Â À§Ä¡¸¦ ÁöÁ¤ÇÑ´Ù -->
   <init-param>
    <param-name>contextConfigLocation</param-name>
     <!-- Ŭ·¡½º Æнº¿¡ À§Ä¡ÇÑ ÆÄÀϷκÎÅÍ ¼³Á¤Á¤º¸¸¦ ÀÐÀ¸·Á¸é "classpath:" ¸¦ ºÙÀÌ°í °æ·Î¸¦ ½áÁØ´Ù -->
     <!-- ex) classpath:kr/co/springboard/config.xml -->

    <param-value>/WEB-INF/config/dispatcher-servlet.xml</param-value>
   </init-param>
  </servlet>


<servlet-mapping>
   <servlet-name>dispatcher</servlet-name>
   <url-pattern>*.do</url-pattern>
</servlet-mapping>

Url patternÀÌ ~~.do ·Î µé¾î¿À°Ô µÇ¸é À§¿¡ ¼³Á¤¿¡ servlet nameÀÌ dispatcherÀÎ servletÀ» ½ÇÇàÇؼ­ SpringÀÇ ÇÙ½ÉÀÎ DispatcherServletÀ» ½ÇÇàÇÑ´Ù.

¨è DI ¸¦ ¼±¾ðÇÒ applicationContext ÆÄÀÏÀ» ·ÎµùÇϱâ À§Çؼ­ ¾Ë¸ÂÀº ¸®½º³Ê¿Í Context ParamÀ» ¼³Á¤ÇØ ÁØ´Ù.

<listener>
   <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

<context-param>
  <param-name>contextConfigLocation</param-name>
  <param-value>
   /WEB-INF/config/applicationContext.xml
  </param-value>
 </context-param>

ContextLoaderListner´Â ±âº»ÀûÀ¸·Î /WEB-INF/applicationContext.xml À» ¼³Á¤ ÆÄÀÏ·Î ·ÎµùÇÑ´Ù.
´Ù¸¥À§Ä¡¿¡ ÀÖÀ»¶§ À§¿Í°°ÀÌ context-param¼³Á¤À» ÅëÇØ À§Ä¡¸¦ Á¤ÇØ ÁØ´Ù. ±×¸®°í contextÆÄÀÏÀÌ ¸¹À»¶§´Â ,(ÄÞ¸¶)¸¦ Âï°í ´Ù¸¥ °æ·Î¸¦ ¶Ç ÀÔ·ÂÇÏ¸é µÈ´Ù.
contextÆÄÀÏ À̸§ÀÌ applicationContext.xml °ú applicationContext-ibatis.xml À̶ó¸é applicationContext*.xml À̶ó°í ¼³Á¤Çϸé Çѹø¿¡ µÎ°¡Áö ÆÄÀÏÀ» ºÒ·¯ µéÀδÙ.

¨é encoding ¼³Á¤À» ÇØÁØ´Ù.
jsp¿¡¼­ response.setCharactorEncoding() ¸Þ¼Òµå¸¦ »ç¿ëÇؼ­ ÆäÀÌÁö¿¡ ¸Â´Â Äɸ¯ÅͼÂÀ» ÁöÁ¤ÇÒ ¼ö ÀÖÀ¸³ª ½ºÇÁ¸µ¿¡¼­´Â À§¿Í °°Àº ¼³Á¤ ¾øÀÌ Äɸ¯ÅÍ ¼ÂÀ» ÁöÁ¤ÇØ ÁÙ ¼ö ÀÖ´Ù.

<filter>
   <filter-name>encodingFilter</filter-name>
   <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
   <init-param>
    <param-name>encoding</param-name>
    <param-value>EUC-KR</param-value>
   </init-param>
  </filter>
  
  <filter-mapping>
   <filter-name>encodingFilter</filter-name>
   <url-pattern>/*</url-pattern>
  </filter-mapping>

2. À§¿¡¼­ ¼±¾ðÇÑ dispatcher-servlet.xml ÆÄÀÏÀ» »ý¼ºÇÑ´Ù.
¨ç urlHandlerMappingÀ» ¼³Á¤ÇÑ´Ù.
<bean id="springBoardUrlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
     <property name="mappings">  <!-- mappings´Â ¹Ù²î¸é ¾ÈµÈ´Ù. -->
      <props>
       <prop key="/boardList.do">listAbstractCommandController</prop>
       <prop key="/boardWrite.do">writeSimpleFormController</prop>
       <prop key="/boardReadDelete.do">readDeleteMultiActionController</prop>
      </props>
     </property>
    </bean>

boardList.do ¶ó´Â url·Î µé¾î¿À¸é listAbstractCommandController Ŭ·¡½º¸¦ ½ÇÇà ½ÃŲ´Ù. ¹°·Ð ÀÌ À̸§Àº ³ªÁß¿¡ ¼³Á¤ÇÒ applicationContext.xml ¿¡ ¼±¾ðµÇ¾îÀÖ´Â beanÀÇ id¿Í °°¾Æ¾ß ÇÑ´Ù.

¨è ModelAndView°´Ã¼¸¦ ¹Þ¾Æ ViewÆäÀÌÁö·Î À̵¿½ÃÄÑÁÙ View Resolver¸¦ ±¸ÇöÇÑ´Ù.

<bean id="viewResolver"
       class="org.springframework.web.servlet.view.InternalResourceViewResolver">
       <property name="prefix" value="/WEB-INF/view/"/>
       <property name="suffix" value=".jsp"/>
</bean> 

À§¿Í °°Àº ¼³Á¤À¸·Î ¸¸¾à¿¡ ModelAndView ¿¡ ViewName ÀÌ boardList ¶ó´Â String °ªÀÌ µé¾î ÀÖÀ¸¸é /WEB-INF/view/boardList.jsp ¶ó´Â ÆÄÀÏÀ» ºÎ¸£°Ô µÈ´Ù. prefix´Â °æ·ÎÀÇ ¾Õ¿¡ ºÙ´Â °Í, Áï viewNameÀÇ ¾ÕÂÊ¿¡ ºÙ´Â °Í, subffix´Â viewNameµÚ¿¡ ºÙ´Â°Í, Áï È®ÀåÀÚ¶ó°í »ý°¢ÇÏ¸é µÇ°Ú´Ù.


3.½ºÇÁ¸µ¿¡¼­ »ç¿ëÇÒ DI¸¦ applicationContext.xml¿¡ ¼³Á¤ÇÑ´Ù.

4. ±â´É¿¡ ¸Â°Ô °¢Á¾ Controller¸¦ »ç¿ëÇؼ­ ±¸ÇöÇÑ´Ù.

SpringBoard.war