{"id":1156,"date":"2024-05-10T10:09:29","date_gmt":"2024-05-10T01:09:29","guid":{"rendered":"https:\/\/java.ihavenomoney.co.kr\/?page_id=1156"},"modified":"2024-05-10T10:09:30","modified_gmt":"2024-05-10T01:09:30","slug":"spring-mvc-architecture","status":"publish","type":"page","link":"https:\/\/java.ihavenomoney.co.kr\/?page_id=1156","title":{"rendered":"Spring MVC Architecture"},"content":{"rendered":"\n<p><\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" src=\"https:\/\/terasolunaorg.github.io\/guideline\/5.0.1.RELEASE\/en\/_images\/RequestLifecycle.png\" alt=\"\"\/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">web.xml \uc815\ubcf4\ubcf4\uae30<\/h2>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><pre class=\"lang:xhtml decode:true \" >&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\n&lt;web-app xmlns:xsi=\"http:\/\/www.w3.org\/2001\/XMLSchema-instance\" \n         xmlns=\"http:\/\/java.sun.com\/xml\/ns\/javaee\" \n\t\t xmlns:web=\"http:\/\/java.sun.com\/xml\/ns\/javaee\/web-app_2_5.xsd\" \n\t\t xsi:schemaLocation=\"http:\/\/java.sun.com\/xml\/ns\/javaee http:\/\/java.sun.com\/xml\/ns\/javaee\/web-app_2_5.xsd\" \n\t\t id=\"WebApp_ID\" version=\"2.5\"&gt;\n  &lt;display-name&gt;SPRINGTEST&lt;\/display-name&gt;&lt;!-- \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc758 \uc774\ub984\uc744 \uc815\uc758 --&gt;\n  &lt;description&gt;SPRINGTEST Application&lt;\/description&gt;&lt;!-- \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc5d0 \ub300\ud55c \uc124\uba85 --&gt;\n  \n  &lt;welcome-file-list&gt; &lt;!--  \uc6f9 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc774 \uc0ac\uc6a9\uc790\uc5d0\uac8c \ucc98\uc74c \ubcf4\uc5ec\uc904 \ud398\uc774\uc9c0\ub97c \uc815\uc758 --&gt;\n    &lt;welcome-file&gt;index.jsp&lt;\/welcome-file&gt;\n  &lt;\/welcome-file-list&gt;\n  \n  &lt;context-param&gt; &lt;!--  Spring \ud504\ub808\uc784\uc6cc\ud06c \uad6c\uc131 \ud30c\uc77c\uc758 \uc704\uce58 --&gt;\n    &lt;param-name&gt;contextConfigLocation&lt;\/param-name&gt;\n    &lt;param-value&gt;\/WEB-INF\/spring\/*-context.xml&lt;\/param-value&gt;\n  &lt;\/context-param&gt;\n  &lt;filter&gt; &lt;!--  \ubb38\uc790 \uc778\ucf54\ub529 \ubc29\uc2dd  --&gt;\n    &lt;filter-name&gt;characterEncodingFilter&lt;\/filter-name&gt;\n    &lt;filter-class&gt;org.springframework.web.filter.CharacterEncodingFilter&lt;\/filter-class&gt;\n    &lt;init-param&gt;\n      &lt;param-name&gt;encoding&lt;\/param-name&gt;\n      &lt;param-value&gt;UTF-8&lt;\/param-value&gt;\n    &lt;\/init-param&gt;\n  &lt;\/filter&gt;  \n  &lt;filter-mapping&gt;\n    &lt;filter-name&gt;characterEncodingFilter&lt;\/filter-name&gt;\n    &lt;url-pattern&gt;\/*&lt;\/url-pattern&gt;\n  &lt;\/filter-mapping&gt;  \n  &lt;listener&gt; &lt;!-- \uc6f9 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc758 \uc0dd\uba85 \uc8fc\uae30 \uc774\ubca4\ud2b8\ub97c \ucc98\ub9ac  --&gt;\n    &lt;listener-class&gt;org.springframework.web.context.ContextLoaderListener&lt;\/listener-class&gt;\n  &lt;\/listener&gt;  \n  \n  &lt;servlet&gt; &lt;!-- \uc11c\ube14\ub9bf Controller: \uc0ac\uc6a9\uc790 \uc815\uc758 CommonActionCtrl \ud074\ub798\uc2a4\ub97c \uc0ac\uc6a9\ud558\uba70, *.do URL \ud328\ud134\uc5d0 \ub9e4\ud551\ub429\ub2c8\ub2e4.  --&gt;\n    &lt;servlet-name&gt;Controller&lt;\/servlet-name&gt;\n    &lt;servlet-class&gt;com.finix.common.ctrl.CommonActionCtrl&lt;\/servlet-class&gt;\n    &lt;init-param&gt;\n      &lt;param-name&gt;actionConfig&lt;\/param-name&gt;\n      &lt;param-value&gt;\/WEB-INF\/classes\/resource\/ActionConfig.properties&lt;\/param-value&gt;\n    &lt;\/init-param&gt;\n    &lt;load-on-startup&gt;0&lt;\/load-on-startup&gt;\n  &lt;\/servlet&gt;\n  \n  &lt;servlet-mapping&gt; \n    &lt;servlet-name&gt;Controller&lt;\/servlet-name&gt;\n    &lt;url-pattern&gt;*.do&lt;\/url-pattern&gt;\n  &lt;\/servlet-mapping&gt;\n  \n  &lt;servlet&gt; &lt;!-- \uc11c\ube14\ub9bf spring: Spring\uc758 DispatcherServlet\uc744 \uc0ac\uc6a9\ud558\uc5ec, *.action URL \ud328\ud134\uc5d0 \ub9e4\ud551\ub429\ub2c8\ub2e4. \uc774\ub294 MVC \ud328\ud134\uc744 \uc9c0\uc6d0\ud558\uc5ec, \ubaa8\ub378\uacfc \ubdf0\ub97c \uc5f0\uacb0\ud558\ub294 \uc911\ucd94\uc801\uc778 \uc5ed\ud560\uc744 \ud569\ub2c8\ub2e4.  --&gt;\n    &lt;servlet-name&gt;spring&lt;\/servlet-name&gt;\n    &lt;servlet-class&gt;org.springframework.web.servlet.DispatcherServlet&lt;\/servlet-class&gt;\n    &lt;init-param&gt;\n      &lt;param-name&gt;contextConfigLocation&lt;\/param-name&gt;\n      &lt;param-value&gt;\/WEB-INF\/spring\/finix-context.xml&lt;\/param-value&gt;\n    &lt;\/init-param&gt;\n    &lt;load-on-startup&gt;1&lt;\/load-on-startup&gt;\n  &lt;\/servlet&gt;   \n\n  &lt;servlet-mapping&gt;\n    &lt;servlet-name&gt;spring&lt;\/servlet-name&gt;\n    &lt;url-pattern&gt;*.action&lt;\/url-pattern&gt;\n  &lt;\/servlet-mapping&gt;\n  \n  &lt;session-config&gt;&lt;!-- \uc138\uc158 \uc720\uc9c0 \uc2dc\uac04\uc744 1\uc2dc\uac04 --&gt;\n\t&lt;session-timeout&gt;60&lt;\/session-timeout&gt;\n  &lt;\/session-config&gt;\n  &lt;listener&gt;\n\t&lt;listener-class&gt;\n\t\tcom.finix.common.ctrl.SessionListener\n\t&lt;\/listener-class&gt;\n  &lt;\/listener&gt;\n  \n  &lt;!-- \ub370\uc774\ud130\ubca0\uc774\uc2a4 \uc5f0\uacb0\uc744 \uc704\ud55c \ub450 \uac00\uc9c0 \ub9ac\uc18c\uc2a4 \ucc38\uc870\uac00 \uc124\uc815 --&gt;\n  &lt;resource-ref&gt;\n    &lt;description&gt;Connection&lt;\/description&gt;\n    &lt;res-ref-name&gt;jdbc\/FiniX&lt;\/res-ref-name&gt;\n    &lt;res-type&gt;javax.sql.DataSource&lt;\/res-type&gt;\n    &lt;res-auth&gt;Container&lt;\/res-auth&gt;\n  &lt;\/resource-ref&gt;\n  \n  &lt;resource-ref&gt;\n    &lt;description&gt;Connection&lt;\/description&gt;\n    &lt;res-ref-name&gt;jdbc\/WWW_WORLD&lt;\/res-ref-name&gt;\n    &lt;res-type&gt;javax.sql.DataSource&lt;\/res-type&gt;\n    &lt;res-auth&gt;Container&lt;\/res-auth&gt;\n  &lt;\/resource-ref&gt;\n&lt;\/web-app&gt;<\/pre><\/div>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><\/div>\n\n\n\n<div class=\"wp-block-urvanov-syntax-highlighter-code-block\"><\/div>\n","protected":false},"excerpt":{"rendered":"<p>web.xml \uc815\ubcf4\ubcf4\uae30<\/p>\n","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-1156","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/java.ihavenomoney.co.kr\/index.php?rest_route=\/wp\/v2\/pages\/1156","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/java.ihavenomoney.co.kr\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/java.ihavenomoney.co.kr\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/java.ihavenomoney.co.kr\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/java.ihavenomoney.co.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1156"}],"version-history":[{"count":1,"href":"https:\/\/java.ihavenomoney.co.kr\/index.php?rest_route=\/wp\/v2\/pages\/1156\/revisions"}],"predecessor-version":[{"id":1157,"href":"https:\/\/java.ihavenomoney.co.kr\/index.php?rest_route=\/wp\/v2\/pages\/1156\/revisions\/1157"}],"wp:attachment":[{"href":"https:\/\/java.ihavenomoney.co.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1156"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}