7.2 Struts »ç¿ëÇϱâ

ÀÛ¼ºÀÚ : ÁøÀº¿µ ( 2004-08-05)

[¸ÞÀÎ] [¸ñ·Ï]

¸ñÂ÷

7.3.1 Struts Ä¿½ºÅÒ Å±×

óÀ½ ½ºÆ®·¯Ã÷¸¦ Á¢ÇÑ °³¹ßÀÚµéÀº ¹«¾ùÀ» ¸ÕÀú ÇؾßÇÒÁö ¸Á¼³ÀÌ´Â °æ¿ì°¡ ¸¹´Ù. ½ºÆ®·¯Ã÷ API¸¦ º¸¸é "¿Ö ±×¸® ¸¹Àº ÆÐÅ°Áö¿Í Ŭ·¡½ºµéÀÌ ÀÖ´ÂÁö..", "ÀÌ°ÍÀ» ¾ðÁ¦ ´Ù ÀÍÈù´Ü ¸»Àΰ¡?" ÇÏ°í ¾î·Á¿öÇÏ´Â °³¹ßÀÚµéÀÌ ¸¹´Ù. ÇÏÁö¸¸ ½ºÆ®·¯Ã÷°¡ Model 2¿¡ ±â¹ÝÇÏ°í Àֱ⠶§¹®¿¡ Model 2°³¹ß ¹æ½Ä¿¡ ´ëÇÏ¿© ÀÌÇØÇÏ°í ÀÖ´Â °³¹ßÀÚµéÀ̶ó¸é ±× ¿ø¸®¸¦ ÆľÇÇϱâ¶õ »ý°¢º¸´Ù ¾î·ÆÁö ¾Ê´Ù.

¸ÕÀú ½ºÆ®·¯Ã÷ÀÇ Áß½ÉÀ» ÀÌ·ç°í Àִ Ŭ·¡½ºµéÀÇ Å¬·¡½º ´ÙÀ̾î±×·¥À» ÅëÇÏ¿© ½ºÆ®·¯Ã÷ÀÇ ÀüüÀûÀÎ ±×¸²À» Çѹø ±×·Á º¸µµ·Ï ÇÏ°Ú´Ù.


  • ActionServlet : MVC ÄÁÆ®·Ñ·¯ÀÌ¸ç ¿äû µð½ºÆÐÅÍÀÇ ¿ªÇÒÀ» ÇÑ´Ù. ½ºÆ®·µÃ÷ ÇÁ·¹ÀÓ¿öÅ© ³»¿¡ ´Ü ÇϳªÀÇ ¼­ºí¸´ ÀνºÅϽº°¡ Á¸ÀçÇÑ´Ù.
  • ActionMapping : URL ÆÐÅÏ°ú ºñÁî´Ï½º ·ÎÁ÷(Action)°£ÀÇ ¸ÅÇÎÀ» Ç¥ÇöÇÑ´Ù. ÀԷ°ú Ãâ·Â ºû ºñÁî´Ï½º ·ÎÁ÷¿¡ ±â¹ÝÇÑ 'º¸³»Áö´Â'´ë»óÀ» ÁöÁ¤ÇÑ´Ù.
  • ActionForm : MVC¸ðµ¨ÀÌ´Ù. MVCºä·ÎºÎÅÍÀÇ ÀÔ·ÂÀ» Ç¥ÇöÇÏ´Â ÀÚ¹Ùºóó·³ ÀÛµ¿ÇÑ´Ù. ActionServletÀº ÀÚµ¿ÀûÀ¸·Î ºóÀÌ ÀνºÅϽºÈ­µÈ ÀÌÈÄ¿¡ ÇÁ·ÎÆÛƼ¸¦ ÁöÁ¤ÇØ ÁÖ¸ç, ºó¿¡ validate()¸Þ¼Òµå¸¦ °¡Áö°í ÀÖÀ¸¸é »ç¿ëÀÚ°¡ ¸¸µç ActionŬ·¡½º¸¦ È£ÃâÇϱâ ÀÌÀü¿¡ ÀÌ ¸Þ¼Òµå¸¦ È£ÃâÇÑ´Ù. ActionFormÀº JSP ºä¸¦ Ç¥ÇöÇϱâ À§ÇØ È®ÀåµÇ¾ú´Ù.
  • ActionForward : À̵¿ÇÒ ÆäÀÌÁö Á¤º¸¿Í Æ÷¿öµå(forward), ¸®´ÙÀÌ·ºÆ®(redirect)Áß ¾î´À ¹æ½ÄÀ¸·Î ´ÙÀ½ ÆäÀÌÁö·Î À̵¿ÇÒ °ÍÀÎÁö¿¡ ´ëÇÑ Á¤º¸¸¦ ´ã°í ÀÖ´Ù.
  • Action : ºñÁî´Ï½º ·ÎÁ÷À» ³ªÅ¸³»¸ç MVC¸ðµ¨ÀÌ´Ù. ƯÁ¤ÇÑ ¿äû¿¡ ´ëÇÑ ºñÁî´Ï½º ·ÎÁ÷À» ó¸®Çϱâ À§ÇØ È®ÀåµÈ´Ù. ¿¹¸¦ µé¾î /login URI¸¦ À§ÇØ LoginActionÀ» ¸¸µç´Ù.


7.3.2 Struts ÇÙ½É Å¬·¡½º

¨ç ActionServlet
óÀ½À¸·Î ³íÀÇÇÒ ½ºÆ®·µÃ÷ ÇÁ·¹ÀÓ¿öÅ©ÀÇ ÄÄÆ÷³ÍÆ®´Â ActionServletÀÌ´Ù. org.apache.struts.action ÆÐÅ°Áö¿¡ ÀÖ´Â ActionServletÀº Ãß»óŬ·¡½ºÀÎ javax.servlet.HttpServlet Ãß»óŬ·¡½º¸¦ »ó¼Ó¹Þ¾Ò´Ù. Ŭ¶óÀ̾ðÆ®·Î ºÎÅÍ È£Ãâ ¹ÞÀ¸¸é °¡Àå ¸ÕÀú È£ÃâµÇ´Â Ŭ·¡½ºÀÌ´Ù.

  • process() : doGet() À̳ª doPost()·ÎºÎÅÍ ¿äû°ú ÀÀ´äÀ» ³Ñ°Ü¹Þ´Â´Ù. process()¸Þ¼Òµå´Â ¿äûÀ» ó¸®Çϱâ À§ÇØ, ActionServlet¾È¿¡ ÀÖ´Â ´Ù¸¥ ¸Þ¼Òµå¸¦ È£ÃâÇÑ´Ù. process()¸Þ¼Òµå´Â ¿äûÀ» ó¸®Çϱâ À§ÇØ, ActionServlet¾È¿¡ ÀÖ´Â ´Ù¸¥ ¸Þ¼Òµå¸¦ È£ÃâÇÑ´Ù. ¿©±â¿¡¼­´Â Áß¿äÇÑ 9°³ÀÇ ¸Þ¼Òµå¸¦ »ìÆ캼 °ÍÀÌ´Ù.
    • processPath() : ¿äû URI ÀÎÀÚ¿¡¼­ Á¢¹Ì»ç³ª Á¢µÎ»ç¸¦ Á¦°ÅÇÏ¿© URI¸¦ ÃßÃâÇÑ´Ù. ¿¹¸¦ µé¾î, /login.do¶ó¸é /loginÀ» ¹ÝȯÇÑ´Ù.
    • processLocale() : LocaleÀÌ ¿äû¿¡ ¼³Á¤µÇ¾î ÀÖÀ¸¸é °Ë»çÇÏ°í, ¾øÀ¸¸é Çϳª ¸¸µé¾î¼­ ¼¼¼Ç¿¡ ÀúÀåÇÑ´Ù.
    • processMapping() : ActionMapping°´Ã¼¸¦ ¾ò±â À§ÇØ path¸¦ Å°·Î ÀÌ¿ëÇÑ´Ù. ¸¸¾à path°¡ ¸Â´Â ActionMapping°´Ã¼°¡ ActionMappings collection¾È¿¡ ÀÖÀ¸¸é process()¸Þ¼Òµå·Î ¹ÝȯµÈ´Ù.
    • processActionForm() : ActionMappingÀÇ name¼Ó¼ºÀ» ÀÌ¿ëÇÏ¿© ÀÌ·± Á¾·ùÀÇ ActionFormÀÌ ÀÌ¹Ì ¸¸µé¾îÁ³´ÂÁö¸¦ È®ÀÎÇÑ´Ù. ±×·¸´Ù¸é, ±× ActionFormÀÌ process()¸Þ¼Òµå·Î ¹ÝȯµÇ¸ç, ±×·¸Áö ¾ÊÀ¸¸é ActionMapping¿¡ Á¤ÀÇµÈ »õ·Î¿î ActionFormÀ» ¸¸µé¾î¼­ ¹ÝȯÇÑ´Ù.
    • processPopulate() : ActionForm³»¿¡ ActionServletÀÇ ÂüÁ¶¸¦ ¼³Á¤Çϸç, ActionForm()ÀÇ reset()¸Þ¼Òµå¸¦ È£ÃâÇÏ¿© °ªµéÀ» µðÆúÆ® °ªÀ¸·Î ¸¸µç´Ù.
    • processValidate() : ActionForm¿¡ È®ÀÎÀÛ¾÷ÀÌ ÇÊ¿äÇÑÁö¸¦ °Ë»çÇÑ´Ù.
    • processActionCreate() : ActionMapping°ú ¿¬°áµÈ ActionŬ·¡½º¸¦ ¹ÝȯÇÑ´Ù. ÀÌ ¸Þ¼Òµå´Â ActionÄ÷º¼Ç¿¡¼­¿øÇÏ´Â ActionŬ·¡½ºÀÇ ÀνºÅϽº°¡ ÀÖ´ÂÁö¸¦ °Ë»çÇÏ°í, ¸¸¾à ÀÖÀ¸¸é À̸¦ ¹ÝȯÇϸç, ¾øÀ¸¸é »õ·Î¿î Action Ŭ·¡½ºÀÇ °´Ã¼¸¦ ¸¸µé°í À̸¦ ActionÄ÷º¼Ç¿¡ ÀúÀåÇϸç, ÀÌ¿¡ ´ëÇÑ ÂüÁ¶¸¦ ¹ÝȯÇÑ´Ù. ¹ÝȯµÈ ActionŬ·¡½º´Â ¿äû URI¿¡ ¸ÅÇεǸç, ¿äûÀ» ó¸®ÇÏ´Â ºñÁî´Ï½º ·ÎÁ÷À» °¡Áö°í ÀÖ´Ù.
    • processActionPerform() : processActionCreate()¿¡¼­ ¹ÝȯµÈ Action°´Ã¼ÀÇ perform()¸Þ¼Òµå°¡ È£ÃâµÈ´Ù. ºñÁî´Ï½º ·ÎÁ÷À» ¼öÇàÇÑ ÈÄ¿¡, Action°´Ã¼´Â ActionServletÀÌ ¿äûÀ» º¸³¾ Ÿ°ÙÀ» °¡Áö°í ÀÖ´Â ActionMappingÀ» ¹ÝȯÇÑ´Ù.
    • processActionForward() : RequestDispatcher³ª Request.sendRedirect()¸¦ ÀÌ¿ëÇÏ¿© ¿øÇÏ´Â ºä¸¦ ¸¸µé°í, ¿äûÀ» ActionServlet¿¡ ÀÇÇØ ¿ÏÀüÈ÷ ó¸®ÇÑ´Ù.

  • initApplication() : ¾ÖÇø®ÄÉÀ̼ÇÀ» À§ÇØ MessageResource¸¦ ·ÎµùÇÑ´Ù.
  • initMapping() : ActionServlet¿¡ pageckage.ClassforNameÀ» µî·ÏÇϵµ·Ï ÇÑ´Ù. formBeanÀÇ µðÆúÆ® Ŭ·¡½º´Â org.apache.struts.action.ActionFormBeanÀÌ´Ù.
  • initDigester() : org.apache.struts.digester.DigesterŬ·¡½º¸¦ ½á¾î struts-config.xml ÆÄÀϷκÎÅÍ ¼³Á¤À» ÀоîµéÀδÙ.
  • initOter() : ÃʱâÈ­¿¡ ÇÊ¿äÇÑ ÀÛ¾÷À» ó¸®ÇÑ´Ù. struts-config.xml¿¡ ÀÖ´Â initOther()´Â content , locale , cache¸¦ ã´Â´Ù.

¨è ActionMapping
ºñÁî´Ï½º ·ÎÁ÷À» ó¸®ÇÒ ActionŬ·¡½º¿¡ ¿äûÀ» º¸³»±â À§ÇØ ActionServletÀÌ ¾Ë¾Æ¾ß ÇÒ Ã³¸® Á¤º¸¸¦ °¡Áö°í ÀÖ´Ù. ActionMappingÀº <action-mappings> ¿ä¼Ò ³»ÀÇ <action>Á¤º¸¸¦ ÀÌ¿ëÇÏ¿© ¸¸µé¾îÁø´Ù.
<action-mappings>
    <action name="loginForm" path="/login" type="kr.co.a.LoginAction" input="/login.jsp">
    </action>
</action-mappings>

/loginÀÇ °æ·Î¸¦ °¡Áø ¿äûÀ» ¹ÞÀ¸¸é, ¾×¼Ç Ŭ·¡½º´Â LoginActionÀÌ°í, ÀÔ·ÂÀº loginFormÀÌ Ç¥ÇöÇϸç ÀÔ·Â ÆûÀÇ °æ·Î´Â /login.jsp¶ó´Â °ÍÀ» ÀǹÌÇÑ´Ù.
  • name : ÀÌ ¾×¼ÇÀÌ »ç¿ëÇÒ struts-config.xml¿¡ Á¤ÀÇµÈ Æû ºóÀÇ À̸§
  • path : ÀÌ ¸ÅÇÎÀ» ¼±ÅÃÇÏ´Â µ¥ ¸ÅĪµÇ´Â ¿äû URI. URI´Â '/'·Î ½ÃÀÛÇØ¾ß ÇÑ´Ù.
  • type : ÀÌ ¸ÅÇο¡¼­ »ç¿ëµÇ´Â Action ±¸ÇöÀÇ ¿ÏÀüÇÑ Àڹ٠Ŭ·¡½º À̸§
  • input : ÀÔ·Â ÆäÀÌÁö¸¦ ¸ÅÇÎÇÑ´Ù. ActionServletÀÌ ActionFormÀÇ È®ÀÎÀÛ¾÷À» ¼öÇàÇϴµ¥, ¸¸ÀÏ ¿¡·¯°¡ ÀÖ´Ù¸é inputº¯¼ö°¡ forward³ª sendRedirectÀÇ ¸ñÇ¥°¡ µÉ °ÍÀÌ´Ù.

¨é ActionForm
ActionFormŬ·¡½º´Â struts-config.xml¿¡ ÀÇÇØ Á¤ÀǵȴÙ.
<form-beans>
    <form-bean name="loginForm" type="kr.co.a.LoginForm" />
</form-beans>

¸ðµç ActionForm ±¸ÇöÀº <form-beans>ű×ÀÇ ¸öü¿¡ µî·ÏµÇ¾î¾ß ÇÑ´Ù. ActionFormÀÌ Ãß»ó Ŭ·¡½ºÀ̹ǷÎ, °³¹ßÀÚ´Â À̸¦ È®ÀåÇÏ¿© »ç¿ëÀÚÀÇ ÀÔ·Â µ¥ÀÌÅ͸¦ ÀúÀåÇϴ Ŭ·¡½º¸¦ ¸¸µé¾î¾ß ÇÑ´Ù.
  • name : ActionMapping¿¡¼­ Á¤ÀÇµÈ ¹üÀ§ ¾È¿¡¼­ À̸¦ ¾ò±â À§ÇØ »ç¿ëµÈ´À º¯¼ö¸í
  • type : »ç¿ëÀÚ°¡ ±¸ÇöÇÑ ActionForm¿¡ ´ëÇÑ ÆÐÅ°ÁöÀÇ ¿Ã¹Ù¸¥ ÂüÁ¶

¨ê Action
¾î¶² URI¿¡ ƯÁ¤ ¾×¼ÇÀ» Á¦°øÇϱâ À§ÇØ È®ÀåµÈ´Ù. ÀÌ°ÍÀÇ ¸ñÀûÀº ¿äûÀ» À§ÇÑ ºñÁî´Ï½º ·ÎÁ÷À» ½ÇÇàÇÏ´Â °ÍÀÌ´Ù. ActionŬ·¡½º´Â ActionServlet¿¡ ÀÇÇØ ÀνºÅϽº·Î ¸¸µé¾îÁø´Ù. ActionŬ·¡½º´Â ±âº» LocaleÀ» ÀúÀåÇϸç, ¾ÖÇø®ÄÉÀ̼ǿ¡ ´ëÇÑ MessageResourcesÀÇ ÂüÁ¶¸¦ ÀúÀåÇÑ´Ù.

¨ë ActionForward
ActionForwardŬ·¡½º´Â struts-config.xml ÆÄÀÏ¿¡¼­ ¼³Á¤µÈ´Ù. µÎ Á¾·ùÀÇ ActionForward°¡ ÀÖ´Ù.

Âü°í¹®Çå