{"id":230,"date":"2009-02-10T04:17:55","date_gmt":"2009-02-10T04:17:55","guid":{"rendered":"http:\/\/apollo89.com\/wordpress\/?p=230"},"modified":"2013-02-05T12:53:16","modified_gmt":"2013-02-05T03:53:16","slug":"%ec%9b%b9-%ed%94%84%eb%a0%88%ec%9e%84%ec%9b%8c%ed%81%ac%ec%9d%98-%eb%b9%84%ea%b5%90-wicket","status":"publish","type":"post","link":"https:\/\/apollo89.com\/wordpress\/?p=230","title":{"rendered":"\uc6f9 \ud504\ub808\uc784\uc6cc\ud06c\uc758 \ube44\uad50 : Wicket"},"content":{"rendered":"<p>&nbsp;<\/p>\n<p>Wicket \uc774\ub780 \ubb34\uc5c7\uc778\uac00? \uc544\ub798\ub294 Wicket \uc0ac\uc774\ud2b8\uc5d0\uc11c \uc778\uc6a9\ud55c \uc124\uba85\uc774\ub2e4.<\/p>\n<p>Wicket \uc740 \ub2e8\uc21c\ud568(Simplicity)\uacfc \uacc4\uce35\ud654(Separation of Concerns)\ub418\uc5b4 \uc788\uace0 \uc644\uc804\ud788 \uc0c8\ub85c\uc6b4 \uc218\uc900\uc73c\ub85c \uac1c\ubc1c\uc744<br \/>\n\uc6a9\uc774\ud558\uac8c \ud574\uc8fc\ub294 \uc790\ubc14 \uc6f9 \uc5b4\ud50c\ub9ac\ucf00\uc774\uc158 \ud504\ub808\uc784\uc6cc\ud06c\uc774\ub2e4. Wicket \ud398\uc774\uc9c0\ub294 \uc77c\ubc18\uc801\uc778 WYSIWYG HTML \ud234\uc744 \uc0ac\uc6a9\ud558\uc5ec \uc791\uc131\ud560 \uc218 \uc788\ub2e4. \ub3d9\uc801\uc778 \ucee8\ud150\uce20 \ucc98\ub9ac\uc640 \ud3fc \ucc98\ub9ac\ub294 \uc5ec\ub7ec\ubd84\uc774 \uc88b\uc544\ud558\ub294 \uae30\uc220\uc744 \uc0ac\uc6a9\ud558\uc5ec \uc27d\uac8c \uc601\uc18d\ud654\ub420 \uc218 \uc788\ub294 POJO \ub370\uc774\ud130 \ube48\uc5d0 \uc758\ud55c \ucef4\ud3ec\ub10c\ud2b8 \ubaa8\ub378\uc744 \uc0ac\uc6a9\ud558\uc5ec \ubaa8\ub450 \uc790\ubc14 \ucf54\ub4dc \ub0b4\uc5d0\uc11c \uc774\ub8e8\uc5b4\uc9c4\ub2e4.<\/p>\n<p>Wicket \uc740 \ucef4\ud3ec\ub10c\ud2b8(\uc6f9\uc744 \uc704\ud55c Swing\uc758 JComponent\ub97c \uc0dd\uac01\ud558\ub77c)\ub97c \uc0ac\uc6a9\ud558\uc5ec \ud504\ub860\ud2b8\uc5d4\ub4dc\uc758 \ube44\uc96c\uc5bc \ub514\uc790\uc778(HTML)\uc744 \ubc31\uc5d4\ub4dc \uc5b4\ud50c\ub9ac\ucf00\uc774\uc158 \ub85c\uc9c1(Java)\uc73c\ub85c\ubd80\ud130 \ubd84\ub9ac\ud55c\ub2e4. \ub610 \ub2e4\ub978 MVC \ud504\ub808\uc784\uc6cc\ud06c\uac00 \ub418\ub294 \ub300\uc2e0\uc5d0 Wicket\uc740 \uc804\ud1b5\uc801\uc778 GUI\uc640 \uac19\uc740 \uc774\ubca4\ud2b8 \uae30\ubc18\uc758 \ud504\ub808\uc784\uc6cc\ud06c\uc5d0 \ub354 \uac00\uae5d\ub2e4. \uac01 &#8216;\ucef4\ud3ec\ub10c\ud2b8&#8217;\ub97c HTML \ucf54\ub4dc\ub85c \uc774\ub8e8\uc5b4\uc9c4 &#8216;view&#8217; \ud30c\ud2b8\ub97c \uac16\uace0 \uc788\ub294 \uc791\uc740 MVC\ub85c \ubcfc \uc218 \uc788\ub2e4. \uc7a0\uc2dc \ud6c4\uc5d0 \uc54c\uac8c\ub418\uaca0\uc9c0\ub9cc, JSP\ucc98\ub7fc \ud398\uc774\uc9c0\uc5d0 \ub85c\uc9c1\uc774 \uc11e\uc774\ub294 \uac83\uc774 \uc544\ub2c8\ub77c \ubaa8\ub4e0 \uc5b4\ud50c\ub9ac\ucf00\uc774\uc158 \ub85c\uc9c1\uc740 \uc790\ubc14 \ud074\ub798\uc2a4 \uc548\uc5d0 \ub4e4\uc5b4\uac04\ub2e4(\uc9c4\uc815\ud55c \uc5f0\uad00\uc758 \ubd84\ub9ac). \uc790\ubc14\ucf54\ub4dc\ub294 \ub300\ubd80\ubd84\uc758 \uc5b4\ub5a4 HTML \ud0dc\uadf8\uc5d0\ub3c4 \uc0ac\uc6a9\ub420 \uc218 \uc788\ub294 \ud2b9\ubcc4\ud55c wicket:id \uc18d\uc131\uc744 \uc0ac\uc6a9\ud558\uc5ec HTML \ud398\uc774\uc9c0\uc5d0 \ud569\uccd0\uc9c4\ub2e4. wicket:id\ub294 Wicket \uc5d0\uac8c \uadf8 \ud0dc\uadf8\uc5d0 \ucef4\ud3ec\ub10c\ud2b8\ub97c \ub80c\ub354\ub9c1\ud560 \uac83\uc744 \uc54c\ub824\uc900\ub2e4. Wicket\uc740 \ucef4\ud3ec\ub10c\ud2b8\uc5d0 id\ub97c \uc124\uc815\ud568\uc73c\ub85c\uc368 \uc6f9\ud398\uc774\uc9c0\uc5d0<br \/>\n\uc720\ub2c8\ud06c\ud558\uac8c \uc815\uc758\ub418\ub294 Label, Link, List \ub4f1\uacfc \uac19\uc740 \ucef4\ud3ec\ub10c\ud2b8\uc640 \ubaa8\ub378\uc5d0 \uc758\ud574 \ud45c\ud604\ub418\ub294 \ucee8\ud150\uce20\ub97c \uac00\uc9c0\uace0 \uc788\ub2e4.<\/p>\n<p>\uc790 \uc774\uc81c \uc6b0\ub9ac\uc758 \uc608\uc81c\uc5d0 \ub300\ud574 \uc598\uae30\ud560 \uc2dc\uac04\uc774\ub2e4. \uc6b0\ub9ac\ub294 3\ud398\uc774\uc9c0\ub97c \ud45c\uc2dc\ud558\ub294 \uc5b4\ud50c\ub9ac\ucf00\uc774\uc158\uc744 \ub9cc\ub4e4\ub824\uace0 \ud55c\ub2e4. \ud558\ub098\ub294 \ube14\ub85c\uadf8 \ubaa9\ub85d\uc744 \ubcf4\uc5ec\uc8fc\ub294 Home Page, \ub610 \ud558\ub098\ub294 \uac01 \ube14\ub85c\uadf8\uc758 \uc0c1\uc138 \ub0b4\uc6a9\uc744 \ubcf4\uc5ec\uc8fc\ub294 Blog Detail Page, \uadf8\ub9ac\uace0 \uc720\uc800\uac00 \uc720\ud6a8\ud558\uc9c0 \uc54a\uc740 \ud398\uc774\uc9c0(\uc720\ud6a8\ud558\uc9c0 \uc54a\uc740 \ube14\ub85c\uadf8 \uc5d4\ud2b8\ub9ac)\uc5d0 \uc811\uadfc\ud558\ub824\uace0 \ud560 \ub54c \ubcf4\uc5ec\uc9c8 \ud2b9\ubcc4\ud55c Page Not Found \ud398\uc774\uc9c0\uc774\ub2e4.<\/p>\n<p>Wicket \uc744 \uc0ac\uc6a9\ud558\uae30 \uc704\ud574\uc11c\ub294 \uba87\uac00\uc9c0 \uc694\uad6c\uc0ac\ud56d\uc774 \uc788\ub2e4. \uc8fc\uc694\ud55c \uc694\uad6c\uc0ac\ud56d\uc758 \ud55c\uac00\uc9c0\ub294 \uc5ec\ub7ec\ubd84\uc758 \uc6f9 \uc5b4\ud50c\ub9ac\ucf00\uc774\uc158\uc740 <a href=\"http:\/\/wicket.sourceforge.net\/apidocs\/wicket\/protocol\/http\/WebApplication.html\" target=\"_blank\">WebApplication<\/a>?\ud074\ub798\uc2a4\ub97c \ud655\uc7a5\ud55c \ud074\ub798\uc2a4\ub97c \uac00\uc838\uc57c \ud55c\ub2e4\ub294 \uac83\uc774\ub2e4. \uc774\uac83\uc740 Wicket\uc744 \ub2e4\ub978 \ud504\ub808\uc784\uc6cc\ud06c\uc640 \ub2e4\ub974\uac8c \ud558\ub294 \uc2dc\uc791\uc810\uc774\ub2e4. \ub0b4\uac00 \ubcf8 \ub300\ubd80\ubd84\uc758 \ub2e4\ub978 \uc6f9 \ud504\ub808\uc784\uc6cc\ud06c\ub294 &#8220;XML\uc5d0 \ub9e4\uc5ec\uc788\ub2e4.&#8221; \ud398\uc774\uc9c0\uc640 \uc0c1\ud638\uc791\uc6a9\uc744 \uc815\uc758\ud558\uae30 \uc704\ud574 \uc5ec\ub7ec\ubd84\uc740 \ud558\ub098 \ub610\ub294 \uadf8 \uc774\uc0c1\uc758 XML \ud30c\uc77c\uc744 \uc791\uc131\ud574\uc57c\ud55c\ub2e4. Struts\uc5d0\uc11c \uc5ec\ub7ec\ubd84\uc740 \ucd5c\uc18c\ud55c struts-config.xml \ud30c\uc77c\uc744 \uc791\uc131\ud574\uc57c \ud558\uace0, \ub9cc\uc57d Tiles\ub97c \uc0ac\uc6a9\ud55c\ub2e4\uba74 \ub610 \ub2e4\ub978 XML \uc124\uc815 \ud30c\uc77c\uc744 \ud544\uc694\ub85c \ud55c\ub2e4. JSF\ub294 faces-config.xml\uc744 \uc791\uc131\ud574\uc57c \ud55c\ub2e4. XML\uc744 \uc0ac\uc6a9\ud558\ub294 \uac83\uc774 \uc798\ubabb\ub41c \uac83\uc740 \uc544\ub2c8\uc9c0\ub9cc, \uc774\ub7ec\ud55c \uc811\uadfc\ubc29\ubc95\uc740 \uc5ec\ub7ec\ubd84\uc758 \ub85c\uc9c1\uc744 \uc5ec\ub7ec \uacf3\uc73c\ub85c \ud750\ud2b8\ub7ec\ub193\uace0, \uc774\uac83\uc740 \uc791\uc5c5\uc744 \ud558\uae30\uc5d0 \uc880 \ub354 \uace4\ub780\ud558\uac8c \ub9cc\ub4e0\ub2e4. \uc5ec\ub7ec\ubd84\uc774 Wicket\uc744 \uc0ac\uc6a9\ud55c\ub2e4\uba74 \uc815\ub9d0\ub85c \uc218\uc815\ud574\uc57c\ud560 \ud544\uc694\uac00 \uc788\ub294 XML \ud30c\uc77c\uc740 \uc624\uc9c1 web.xml \ud558\ub098 \ubc16\uc5d0 \uc5c6\ub2e4. \uadf8\ub9ac\uace0 \uc774\uac83\uc740 Wicket\ub9cc\uc758 \uc694\uad6c\uc0ac\ud56d\uc774 \uc544\ub2c8\ub77c \uc11c\ube14\ub9bf \uc2a4\ud399\uc758 \uc694\uad6c\uc0ac\ud56d\uc774\ub2e4.<\/p>\n<p>\uadf8\ub798\uc11c, \uc6b0\ub9ac\uc758 \uc608\uc81c \uc5b4\ud50c\ub9ac\ucf00\uc774\uc158\uc744 \ub2e4\ub8f0 \uc11c\ube14\ub9bf\uc744 \uc815\uc758\ud558\uae30 \uc704\ud574 web.xml \uc5d0 \ub2e4\uc74c\uc744 \ucd94\uac00\ud55c\ub2e4.<\/p>\n<pre class=\"lang:xhtml decode:true \" >    &lt;servlet&gt;\r\n        &lt;servlet-name&gt;blog&lt;\/servlet-name&gt;\r\n        &lt;servlet-class&gt;wicket.protocol.http.WicketServlet&lt;\/servlet-class&gt;\r\n        &lt;init-param&gt;\r\n            &lt;param-name&gt;applicationClassName&lt;\/param-name&gt;\r\n            &lt;param-value&gt;org.javageek.wicket.BlogApplication&lt;\/param-value&gt;\r\n        &lt;\/init-param&gt;\r\n        &lt;load-on-startup&gt;1&lt;\/load-on-startup&gt;\r\n    &lt;\/servlet&gt;\r\n    &lt;servlet-mapping&gt;\r\n        &lt;servlet-name&gt;blog&lt;\/servlet-name&gt;\r\n        &lt;url-pattern&gt;\/app\/*&lt;\/url-pattern&gt;\r\n    &lt;\/servlet-mapping&gt;<\/pre>\n<p>\ubcf4\ub294 \ubc14\uc640 \uac19\uc774 <a href=\"http:\/\/wicket.sourceforge.net\/apidocs\/wicket\/protocol\/http\/WicketServlet.html\" target=\"_blank\">WicketServlet<\/a>?\uc11c\ube14\ub9bf\uc744 \uc815\uc758\ud558\uace0, \ucd08\uae30\ud654 \ud30c\ub77c\ubbf8\ud130\ub294 WebApplication \uc744 \ud655\uc7a5\ud558\ub294 \ud074\ub798\uc2a4\uc758 \uc644\uc804\ud55c classpath\uc774\ub2e4. \uadf8\uac83\uc740 \uc6b0\ub9ac\uc758 \uba54\uc778 \uc5b4\ud50c\ub9ac\ucf00\uc774\uc158 \ud074\ub798\uc2a4\uc778 BlogApplication \uc774\ub2e4. \uc544\ub798\ub294 BlogApplication \ud074\ub798\uc2a4\uc758 \ucf54\ub4dc\uc774\ub2e4.<\/p>\n<pre class=\"lang:java decode:true \" >package org.javageek.wicket;\r\n\r\nimport wicket.Application;\r\nimport wicket.protocol.http.WebApplication;\r\nimport wicket.settings.IMarkupSettings;\r\nimport domain.Blog;\r\nimport domain.BlogService;\r\n\r\npublic class BlogApplication extends WebApplication {\r\n\r\n    private BlogService blogService = new BlogService();\r\n\r\n    public BlogApplication() {}\r\n  \r\n\r\n    public static final BlogApplication instance() {\r\n        return (BlogApplication) Application.get();\r\n    }\r\n\r\n    public Blog getBlog() {\r\n        return blogService.getBlog();\r\n    }\r\n\r\n    public Class getHomePage() {\r\n        return Index.class;\r\n    }\r\n\r\n    protected void init() {\r\n        IMarkupSettings markupSettings = getMarkupSettings();\r\n        configure(DEVELOPMENT);\r\n        markupSettings.setStripWicketTags(true);\r\n        markupSettings.setDefaultMarkupEncoding(\"UTF-8\");\r\n        markupSettings.setStripXmlDeclarationFromOutput(false);\r\n\r\n        mountBookmarkablePage(\"\/index\", Index.class);\r\n        mountBookmarkablePage(\"\/viewBlogEntry\", ViewBlogEntry.class);\r\n    }\r\n}<\/pre>\n<p>\ucf54\ub4dc\uc5d0\uc11c \ubcf4\ub294 \ubc14\uc640 \uac19\uc774 \uc6f9 \uc5b4\ud50c\ub9ac\ucf00\uc774\uc158 \uc124\uc815\uc740 \uc790\ubc14 \ucf54\ub4dc\uc758 init() \uba54\uc18c\ub4dc \uc548\uc5d0\uc11c \uc124\uc815\ub41c\ub2e4. \ub0b4\uac00 \uc0ac\uc6a9\ud55c \uc774\ub7ec\ud55c \uc124\uc815\uc758 \ub300\ubd80\ubd84\uc740 \uac1c\ubc1c\uc744 \uc704\ud55c \uac83\uc774\uc5b4\uc11c \uc790\uc138\ud55c \uc758\ubbf8\ub294 \uc124\uba85\ud558\uc9c0 \uc54a\uace0 \ub118\uc5b4\uac00\uaca0\ub2e4. Wicket \uc758 Javadoc API\ub97c \ucc38\uace0\ud558\uba74 \ub354 \uc790\uc138\ud788 \uc54c \uc218 \uc788\ub2e4. \uc6b0\ub9ac\uac00 \uad00\uc2ec\uc744 \uac00\uc838\uc57c\ud560 \uc8fc\uc694\ud55c \ucf54\ub4dc\ub294 \uad75\uc740 \uae00\uc528\uccb4\ub85c \ub098\uc628 \ubd80\ubd84\uc774\ub2e4. \uc774\uac83\uc740 \uc6b0\ub9ac\uac00 \ud648\ud398\uc774\uc9c0(\uc6b0\ub9ac\uc758 \uc5b4\ud50c\ub9ac\ucf00\uc774\uc158\uc758 \uba54\uc778 \ud398\uc774\uc9c0)\ub85c\uc11c \uc751\ub2f5\ud560 \ucef4\ud3ec\ub10c\ud2b8\ub97c \uc124\uc815\ud558\ub294 \ubd80\ubd84\uc774\uace0, \uc6b0\ub9ac\uc758 \ud648\ud398\uc774\uc9c0\uc778 Index \ud074\ub798\uc2a4\ub97c \ub9ac\ud134\ud558\uace0 \uc788\ub2e4.<\/p>\n<p>Wicket \ud398\uc774\uc9c0 \ucef4\ud3ec\ub10c\ud2b8\ub294 <a href=\"http:\/\/wicket.sourceforge.net\/apidocs\/wicket\/markup\/html\/WebPage.html\" target=\"_blank\">WebPage<\/a> \ud074\ub798\uc2a4\ub97c \ud655\uc7a5\ud574\uc57c\ud55c\ub2e4. \ub530\ub77c\uc11c \uc6b0\ub9ac\uc758 \ubaa8\ub4e0 \ud398\uc774\uc9c0\ub294 <a href=\"http:\/\/wicket.sourceforge.net\/apidocs\/wicket\/markup\/html\/WebPage.html\" target=\"_blank\">WebPage<\/a>\uc758 \uc11c\ube0c\ud074\ub798\uc2a4\uac00 \ub420 \uac83\uc774\ub2e4. \uadf8\ub7ec\ub098, \ubaa8\ub4e0 \ud398\uc774\uc9c0\uac00 \uc77c\uad00\ub418\uac8c \ubcf4\uc774\ub3c4\ub85d \ud558\uae30 \uc704\ud574 WebPage \ub97c \ud655\uc7a5\ud558\ub294 \ucd94\uc0c1 \ubca0\uc774\uc2a4 \ud074\ub798\uc2a4\ub97c \uc815\uc758\ud558\uace0 \uc5b4\ud50c\ub9ac\ucf00\uc774\uc158\uc758 \ubaa8\ub4e0 \ud398\uc774\uc9c0\ub294 \uc774 \ud074\ub798\uc2a4\ub97c \ud655\uc7a5\ud558\ub3c4\ub85d \ud560 \uac83\uc774\ub2e4. BasePage \ub294 \ud398\uc774\uc9c0\uc5d0 \uacf5\ud1b5\ub41c \ucef4\ud3ec\ub10c\ud2b8\ub4e4\uc744 \ucd94\uac00\ud558\ub294 \ub9e4\uc6b0 \uae30\ubcf8\uc801\uc778 \ud074\ub798\uc2a4\uc774\ub2e4.<\/p>\n<pre class=\"lang:java decode:true \" >package org.javageek.wicket;\r\n\r\nimport domain.Blog;\r\nimport wicket.markup.html.WebPage;\r\nimport wicket.markup.html.basic.Label;\r\n\r\npublic abstract class BasePage extends WebPage {\r\n\r\n    public BasePage() {\r\n        Blog blog = getBlog();\r\n        add(new Label(\"blogName\", blog.getName()));\r\n        add(new Label(\"blogDescription\", blog.getDescription()));\r\n    }\r\n\r\n    public Blog getBlog() {\r\n        return BlogApplication.instance().getBlog();\r\n    }\r\n}<\/pre>\n<p>\uc5ec\uae30\uc11c\ubd80\ud130 \uc7ac\ubbf8\uc788\ub294 \ubd80\ubd84\uc774 \uc2dc\uc791\ub41c\ub2e4. \ubcf4\ub294 \ubc14\uc640 \uac19\uc774, \ub09c \ub2e8\uc9c0 \uac01\uac01 id \uc2a4\ud2b8\ub9c1\uacfc content\ub97c \uac00\uc9c4 \ub450\uac1c\uc758 Label \ucef4\ud3ec\ub10c\ud2b8\ub97c \ucd94\uac00\ud588\ub2e4. Wicket\uc740 \ubaa8\ub4e0 \ucef4\ud3ec\ub10c\ud2b8\uc5d0 \ub300\ud574 \ubaa8\ub378\uc744 \uc815\uc758\ud558\uc9c0\ub9cc \ub610\ud55c Label\uc744 \uc704\ud574 \ub0b4\uac00 \uc0ac\uc6a9\ud55c \uac83\ucc98\ub7fc \ud3b8\ub9ac\ud55c \uba54\uc18c\ub4dc\ub97c \uc81c\uacf5\ud55c\ub2e4. Wicket\uc740 \ub0b4\uac00 \ud30c\ub77c\ubbf8\ud130\ub85c \ubcf4\ub0b8 \uc2a4\ud2b8\ub9c1\uc744 \ubaa8\ub378 \uac1d\uccb4\ub85c \uac10\uc300 \uac83\uc774\ub2e4. \ub530\ub77c\uc11c \ub09c Label\uacfc \uac19\uc774 \ub9e4\uc6b0 \uac04\ub2e8\ud55c \uc815\uc801\uc778 \ucef4\ud3ec\ub10c\ud2b8\uc758 \uacbd\uc6b0\uc5d0 \ub300\ud574 \uac71\uc815\ud560 \ud544\uc694\uac00 \uc5c6\ub2e4. \ud398\uc774\uc9c0 \ud074\ub798\uc2a4\uac00 \uc778\uc2a4\ud134\uc2a4\ud654 \ub41c \ud6c4\uc5d0 Label \ucef4\ud3ec\ub10c\ud2b8\ub294 \ub0b4\uac00 \uac01\uac01\uc758 id\ub97c \uc5b4\ub514\uc5d0 \uc0ac\uc6a9\ud558\uac74 \uac04\uc5d0 \ub80c\ub354\ub9c1\ud558\ub294 \ub3d9\uc548 HTML \ub0b4\uc5d0\uc11c \uc0ac\uc6a9\uac00\ub2a5\ud558\uac8c \ub420 \uac83\uc774\ub2e4.<\/p>\n<p>BasePage HTML\uc740 \ub2e4\uc74c\uacfc \uac19\ub2e4.<\/p>\n<pre class=\"lang:xhtml decode:true \" >&lt;?xml version=\"1.0\" encoding=\"utf-8\"?&gt;\r\n&lt;!DOCTYPE html PUBLIC \"-\/\/W3C\/\/DTD XHTML 1.0 Transitional\/\/EN\" \"http:\/\/www.w3.org\/TR\/xhtml1\/DTD\/xhtml1-transitional.dtd\"&gt;\r\n&lt;html xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\" xmlns:wicket=\"http:\/\/wicket.sourceforge.net\/\"\r\n      xml:lang=\"utf-8\"\r\n      lang=\"utf-8\"&gt;\r\n  &lt;wicket:head&gt;\r\n      &lt;meta http-equiv=\"Content-Type\" content=\"text\/html; charset=UTF-8\"\/&gt;\r\n    &lt;title wicket:id=\"pageTitle\"&gt;[Blog Entry Title]&lt;\/title&gt;\r\n    &lt;link rel=\"stylesheet\" href=\"screen.css\" type=\"text\/css\" \/&gt;\r\n  &lt;\/wicket:head&gt;\r\n  &lt;body&gt;\r\n    &lt;div id=\"container\"&gt;\r\n      &lt;h1&gt;&lt;span wicket:id=\"blogName\"&gt;[Blog Name]&lt;\/span&gt;&lt;\/h1&gt;\r\n      &lt;h2&gt;&lt;span wicket:id=\"blogDescription\"&gt;[Blog Description]&lt;\/span&gt;&lt;\/h2&gt;\r\n      &lt;wicket:child\/&gt;\r\n    &lt;\/div&gt;\r\n  &lt;\/body&gt;\r\n&lt;\/html&gt;<\/pre>\n<p>\ub09c BasePage \ud074\ub798\uc2a4\ub97c \ucd94\uc0c1 \ud074\ub798\uc2a4\ub85c \ub9cc\ub4e4\uc5c8\ub2e4. \ub530\ub77c\uc11c \uc5ec\ub7ec\ubd84\uc740 BasePage \ub97c \uc2e4\uc81c \ud398\uc774\uc9c0\ub85c \uc0ac\uc6a9\ud560 \uc218 \uc5c6\uace0 \ub300\uc2e0 \uc11c\ube0c\ud074\ub798\uc2a4\ub97c \ub9cc\ub4e4\uc5b4\uc11c \uc0ac\uc6a9\ud574\uc57c \ud55c\ub2e4. body \ubd80\ubd84\uc744 \uc880 \ub354 \uc790\uc138\ud788 \ubcf4\uba74, &lt;wicket:child\/&gt; \ud0dc\uadf8\uac00 \uc788\ub294\ub370 \uc774\uac83\uc740 BasePage \uc11c\ube0c\ud074\ub798\uc2a4\uc758 HTML \uc5d0 \uc758\ud574 \ub300\uccb4\ub420 \uac83\uc774\ub2e4. \uc6b0\ub9ac\ub294 BasePage \ub97c \uc11c\ube0c\ud074\ub798\uc2a4\ud560 \uac83\uc774\uae30 \ub54c\ubb38\uc5d0, \uc774 HTML \uc740 \ud398\uc774\uc9c0 \ud15c\ud50c\ub9bf\uc73c\ub85c\uc11c\uc758 \uc5ed\ud560\uc744 \uc218\ud589\ud55c\ub2e4.<\/p>\n<p>Wicket \uc740 HTML \uc744 \ud30c\uc2f1\ud558\uace0 wicket:id \uc18d\uc131\uc744 \uac00\uc9c4 \uc5b4\ub5a4 \ud0dc\uadf8\ub77c\ub3c4 \ucef4\ud3ec\ub10c\ud2b8\uc758 id\uc5d0 \uc758\uac70\ud558\uc5ec \ucef4\ud3ec\ub10c\ud2b8\uc758 \ubaa8\ub378 \ucee8\ud150\uce20\ub85c \ub300\uccb4\ud558\ub294 \uc791\uc5c5\uc744 \ud55c\ub2e4.<\/p>\n<p>\uc6b0\ub9ac\uc758 \uba54\uc778 \ud398\uc774\uc9c0 \ud074\ub798\uc2a4\ub294 Index \ub294 BasePage\ub97c \uc11c\ube0c\ud074\ub798\uc2a4\uc2f1\ud558\uace0 3\uac1c\uc758 \uac00\uc7a5 \ucd5c\uadfc\uc758 \ube14\ub85c\uadf8 \uc5d4\ud2b8\ub9ac\ub97c \ub0a0\uc9dc\uc758 \uc5ed\uc21c\uc73c\ub85c \ubcf4\uc5ec\uc8fc\ub294 \ub85c\uc9c1\uc744 \ucc98\ub9ac\ud55c\ub2e4. \uac01\uac01\uc758 \ube14\ub85c\uadf8 \uc5d4\ud2b8\ub9ac\uc5d0 \ub300\ud574 \uc6b0\ub9ac\ub294 \uc81c\ubaa9\uacfc \ubc1c\ucdcc(&#8220;Read more&#8221; \ub9c1\ud06c\uc640 \ud568\uaed8) \ub610\ub294 \uc804\uccb4 \ubcf8\ubb38 \uadf8\ub9ac\uace0 \ube14\ub85c\uadf8\uac00 \uac8c\uc2dc\ub41c \ub0a0\uc9dc\ub97c \ubcf4\uc5ec\uc904 \ud544\uc694\uac00 \uc788\ub2e4.<\/p>\n<p>Index \ud398\uc774\uc9c0 \ud074\ub798\uc2a4\uc758 \ucf54\ub4dc\ub294 :<\/p>\n<pre class=\"lang:java decode:true \" >package org.javageek.wicket;\r\n\r\nimport java.text.DateFormat;\r\nimport java.util.List;\r\nimport wicket.PageParameters;\r\nimport wicket.markup.html.basic.Label;\r\nimport wicket.markup.html.link.BookmarkablePageLink;\r\nimport wicket.markup.html.list.ListItem;\r\nimport wicket.markup.html.list.ListView;\r\nimport wicket.model.IModel;\r\nimport wicket.model.LoadableDetachableModel;\r\nimport wicket.util.string.Strings;\r\nimport domain.BlogEntry;\r\n\r\npublic class Index extends BasePage {\r\n\r\n    public Index() {\r\n        IModel entriesModel = new LoadableDetachableModel() {\r\n            @Override\r\n            protected Object load() {\r\n                return getBlog().getBlogEntries();\r\n            }\r\n        };\r\n\r\n        add(new ListView(\"blogEntries\", entriesModel) {\r\n            @Override\r\n            protected IModel getListItemModel(IModel model, int index) {\r\n                List entries = (List) model.getObject(this);\r\n                BlogEntry current = (BlogEntry) entries.get(index);\r\n                return new BlogEntryModel(current);\r\n            }\r\n\r\n            @Override\r\n            protected void populateItem(ListItem item) {\r\n                final BlogEntry entry = (BlogEntry) item.getModelObject();\r\n                final String excerpt = entry.getExcerpt();\r\n                final boolean hasExcerpt = !Strings.isEmpty(excerpt);\r\n                item.add(new Label(\"entryTitle\", entry.getTitle()));\r\n                PageParameters params = new PageParameters();\r\n                params.put(\"id\", entry.getId());\r\n                item.add(new BookmarkablePageLink(\"viewBlogEntry\",\r\n                        ViewBlogEntry.class, params) {\r\n                    @Override\r\n                    public boolean isVisible() {\r\n                        return hasExcerpt;\r\n                    }\r\n                });\r\n                if (hasExcerpt) {\r\n                    item.add(new Label(\"entryBody\", entry.getExcerpt())\r\n                            .setEscapeModelStrings(false));\r\n                } else {\r\n                    item.add(new Label(\"entryBody\", entry.getBody())\r\n                            .setEscapeModelStrings(false));\r\n                }\r\n                DateFormat df = DateFormat.getDateTimeInstance(DateFormat.LONG,\r\n                        DateFormat.LONG, getBlog().getLocale());\r\n                item.add(new Label(\"entryDate\", df.format(entry.getDate())));\r\n            }\r\n        });\r\n        add(new Label(\"pageTitle\", getBlog().getName()));\r\n    }\r\n\r\n}<\/pre>\n<p>\uadf8\ub9ac\uace0 Index \ud398\uc774\uc9c0\ub97c \uc704\ud55c \uc804\uccb4 HTML \uc740 \ub2e4\uc74c\uacfc \uac19\ub2e4.<\/p>\n<pre class=\"lang:xhtml decode:true \" >&lt;wicket:extend&gt;\r\n    &lt;div class=\"blogEntry\" wicket:id=\"blogEntries\"&gt;\r\n    &lt;h3 wicket:id=\"entryTitle\"&gt;[Blog Entry Title]&lt;\/h3&gt;\r\n    &lt;div wicket:id=\"entryBody\"&gt;[Blog Entry Body]&lt;\/div&gt;\r\n    &lt;p&gt;&lt;a href=\"#\" wicket:id=\"viewBlogEntry\"&gt;Read more&lt;\/a&gt;&lt;\/p&gt;\r\n    &lt;p&gt;Posted on &lt;span wicket:id=\"entryDate\"&gt;[Blog Entry Date]&lt;\/span&gt;&lt;\/p&gt;\r\n    &lt;\/div&gt;\r\n&lt;\/wicket:extend&gt;<\/pre>\n<p>\ubcf4\ub294 \ubc14\uc640 \uac19\uc774, \ub098\ub294 \uc8fc\ub85c \uc790\ubc14 \ucf54\ub4dc\ub97c \uc774\uc6a9\ud558\uace0 Wicket \uc5d0\uac8c \ucef4\ud3ec\ub10c\ud2b8\ub97c \uc5b4\ub514\uc11c \uc5b4\ub5bb\uac8c \ub80c\ub354\ub9c1\ud558\ub294\uc9c0 \ub9d0\ud558\ub294 \ub9e4\uc6b0 \uc801\uc740 \uc591\uc758 HTML \ucf54\ub4dc\ub9cc\uc73c\ub85c \uc6f9\ud398\uc774\uc9c0\ub97c \uc0dd\uc131\ud588\ub2e4. \ub610\ud55c wicket:id \uc18d\uc131\uc740 \uac70\uc758 \ub300\ubd80\ubd84\uc758 \uc5b4\ub5a4 HTML \ud0dc\uadf8\uc5d0\ub3c4 \uc801\uc6a9\ub420 \uc218 \uc788\ub2e4. \uc774\uc81c \ub098\ub294 Wicket \uc758 \ubaa8\ub378\uc774 \uc5b4\ub5bb\uac8c \uc791\uc6a9\ud558\ub294\uc9c0\uc5d0 \ub300\ud574 \ub354 \uc774\uc0c1 \uc790\uc138\ud788 \ub2e4\ub8e8\uc9c0\ub294 \uc54a\uc744 \uac83\uc774\ub2e4. \uadf8\ub7ec\ub098 Wicket \uc740 <a href=\"http:\/\/wicket.sourceforge.net\/apidocs\/wicket\/model\/IModel.html\" target=\"_blank\">IModel<\/a> \uacfc \uac19\uc740 \uba87 \uac00\uc9c0 \uc778\ud130\ud398\uc774\uc2a4\ub97c \uc774\uc6a9\ud574\uc11c \ub3c4\uba54\uc778 \uac1d\uccb4\ub85c\ubd80\ud130 Wicket \ubaa8\ub378 \uac1d\uccb4\ub85c \ubaa8\ub378\uc758 \ubd84\ub9ac\ub97c \uc81c\uacf5\ud55c\ub2e4\uace0 \ub9d0\ud560 \uc218 \uc788\ub2e4.<\/p>\n<p>\ud55c \uac00\uc9c0 \uc9c0\uc801\ud558\uace0 \uc2f6\uc740 \ud765\ubbf8\ub85c\uc6b4 \ubd80\ubd84\uc740 <a href=\"http:\/\/wicket.sourceforge.net\/apidocs\/wicket\/markup\/html\/link\/BookmarkablePageLink.html\" target=\"_blank\">BookmarkablePageLink<\/a>(\ubcfc\ub4dc\uccb4\ub85c \ub098\uc628 \ubd80\ubd84)\uc758 isVisible \uba54\uc18c\ub4dc\ub97c \uc624\ubc84\ub77c\uc774\ub529\ud568\uc73c\ub85c\uc368 &#8220;Read more&#8221; \ub9c1\ud06c\uac00 \uc870\uac74\uc801\uc73c\ub85c \ud45c\uc2dc\ub41c\ub2e4\ub294 \uac83\uc774\ub2e4. \uadf8\ub9ac\uace0 \uc774\uac83\uc774 \uc0ac\ub78c\ub4e4\uc774 \ubcf4\ud1b5 \ub2e4\ub978 \ud504\ub808\uc784\uc6cc\ud06c\uc5d0\uc11c \uc775\uc219\ud55c \uac83 \ucc98\ub7fc HTML(\ub610\ub294 jsp) \uc548\uc5d0\uc11c\uac00 \uc544\ub2c8\ub77c \uc790\ubc14 \ucf54\ub4dc\uc5d0\uc11c \ucc98\ub9ac\ub41c\ub2e4\ub294 \uac83\uc774\ub2e4. \uc9c0\uae08\uae4c\uc9c0 \uc6b0\ub9ac\uc758 \uba54\uc778 \ud398\uc774\uc9c0\ub97c \ub2e4\ub8e8\uc5c8\uace0, \uc774\uc81c \ub2e4\ub978 \ud398\uc774\uc9c0\uac00 \uc5b4\ub5bb\uac8c \uc774\ub8e8\uc5b4\uc9c0\ub294\uc9c0 \uc0b4\ud3b4\ubcf4\uc790.<\/p>\n<p>Blog detail Page<\/p>\n<p>\uc774 \ud398\uc774\uc9c0\ub294 \ud55c\uac00\uc9c0\ub9cc \uc81c\uc678\ud558\uba74 \uc2e4\uc81c\ub85c \ub9e4\uc6b0 \uac04\ub2e8\ud558\ub2e4. \uc544\ub798\uc5d0 \ucf54\ub4dc\uac00 \uc788\ub2e4.<\/p>\n<pre class=\"lang:java decode:true \" >package org.javageek.wicket;\r\n\r\nimport java.text.DateFormat;\r\nimport wicket.PageParameters;\r\nimport wicket.RestartResponseException;\r\nimport wicket.markup.html.basic.Label;\r\nimport domain.Blog;\r\nimport domain.BlogEntry;\r\n\r\npublic class ViewBlogEntry extends BasePage {\r\n\r\n    public ViewBlogEntry(PageParameters parameters) throws Exception {\r\n        super();\r\n        Blog blog = getBlog();\r\n        BlogEntry entry = blog.getBlogEntry(parameters.getLong(\"id\"));\r\n        if (null == entry) {\r\n            throw new RestartResponseException(PageNotFound.class);\r\n        } else {\r\n            add(new Label(\"entryTitle\", entry.getTitle()));\r\n            add(new Label(\"entryBody\", entry.getBody())\r\n                    .setEscapeModelStrings(false));\r\n            add(new Label(\"pageTitle\", entry.getTitle() + \" : \"\r\n                    + blog.getName()));\r\n            DateFormat df = DateFormat.getDateTimeInstance(DateFormat.LONG,\r\n                    DateFormat.LONG, getBlog().getLocale());\r\n            add(new Label(\"entryDate\", df.format(entry.getDate())));\r\n        }\r\n    }\r\n\r\n}<\/pre>\n<p>\uadf8\ub9ac\uace0 \uc544\ub798\ub294 HTML \ucf54\ub4dc\uc774\ub2e4.<\/p>\n<pre class=\"lang:xhtml decode:true \" >&lt;wicket:extend&gt;\r\n    &lt;div class=\"blogEntry\"&gt;\r\n    &lt;h3 wicket:id=\"entryTitle\"&gt;[Blog Entry Title]&lt;\/h3&gt;\r\n    &lt;div wicket:id=\"entryBody\"&gt;[Blog Entry Body]&lt;\/div&gt;\r\n    &lt;p&gt;Posted on &lt;span wicket:id=\"entryDate\"&gt;[Blog Entry Date]&lt;\/span&gt;&lt;\/p&gt;\r\n    &lt;\/div&gt;\r\n&lt;\/wicket:extend&gt;<\/pre>\n<p>\uc774 \ud398\uc774\uc9c0\uc5d0\uc11c \ud55c \uac00\uc9c0 \uc54c\uc544\ub450\uc5b4\uc57c \ud560 \uc810\uc740 GET \ub610\ub294 POST \uc694\uccad\uc744 \ud3b8\ub9ac\ud558\uac8c Map \uac1d\uccb4\ub85c \uac10\uc2fc \ud398\uc774\uc9c0 \ud30c\ub77c\ubbf8\ud130\ub97c \uc778\uc790\ub85c \uc81c\uacf5\ud558\ub294 WebPage \uc758 \uc0dd\uc131\uc790\ub97c \uc624\ubc84\ub77c\uc774\ub529 \ud558\uace0 \uc788\ub2e4\ub294 \uac83\uc774\ub2e4. \ub610\ud55c \uc774\ub7ec\ud55c \ud30c\ub77c\ubbf8\ud130\ub4e4 \uc911 \uc5b4\ub5a0\ud55c \uac83 \uc6b0\ub9ac\uc758 \uacbd\uc6b0\uc5d0\ub294 \uc720\ud6a8\ud558\uc9c0 \uc54a\uc740 \uc5d4\ud2b8\ub9ac id)\uc774\ub77c\ub3c4 null \uc5d4\ud2b8\ub9ac\ub97c \uc0dd\uc131\ud55c\ub2e4\uba74, PageNotFound \ud398\uc774\uc9c0 \ud074\ub798\uc2a4\ub85c \ub9ac\ub2e4\uc774\ub809\ud2b8 \uc2dc\ud0a8\ub2e4.<\/p>\n<p>\uc544\ub798\ub294 PageNotFound \ud398\uc774\uc9c0 \ud074\ub798\uc2a4\ub97c \uc704\ud55c \ucf54\ub4dc\uc774\uace0, \uae30\ubcf8\uc801\uc73c\ub85c \uc774 \ud398\uc774\uc9c0\ub294 \uc751\ub2f5 \uc0c1\ud0dc \ucf54\ub4dc\ub97c 404\ub85c \uc124\uc815\ud55c\ub2e4.<\/p>\n<pre class=\"lang:java decode:true \" >package org.javageek.wicket;\r\n\r\nimport wicket.markup.html.basic.Label;\r\nimport wicket.protocol.http.WebResponse;\r\n\r\npublic class PageNotFound extends BasePage {\r\n\r\n    public PageNotFound() {\r\n        add(new Label(\"pageTitle\", BlogApplication.instance().getBlog()\r\n                .getName()));\r\n    }\r\n\r\n    @Override\r\n    protected void configureResponse() {\r\n        WebResponse wr = getWebRequestCycle().getWebResponse();\r\n        wr.getHttpServletResponse().setStatus(404);\r\n    }\r\n\r\n}<\/pre>\n<p>\uc774\uac83\uc73c\ub85c \uc644\uc131\uc774\ub2e4. \uc6b0\ub9ac\ub294 \ubc29\uae08 Wicket \uc744 \uc0ac\uc6a9\ud558\uc5ec \uc6f9 \uc5b4\ud50c\ub9ac\ucf00\uc774\uc158\uc744 \ub9cc\ub4e4\uc5c8\ub2e4.<\/p>\n<p>\uc694\uc57d<\/p>\n<p>Wicket \uc740 \ub098\uc758 \uacac\ud574\ub85c\ub294 \uac1c\ubc1c\uc758 \ub178\ub825\uc744 \uc790\ubc14 \ucf54\ub4dc\uc548\uc5d0\uc11c \uc774\ub8e8\uc5b4\uc9c0\uac8c \ud568\uc73c\ub85c\uc368 \uc62c\ubc14\ub978 \uacf3\uc73c\ub85c \uc9d1\uc911\uc2dc\ud0a8\ub2e4. \uadf8\ub9ac\uace0 \ub514\uc790\uc778 \ubd80\ubd84\uc740 \uadf8\uac83\uc774 \uc788\uc5b4\uc57c\ud558\ub294 HTML \ub85c \ub0a8\uaca8\ub454\ub2e4. \ub108\ubb34\ub098 \ub9ce\uc740 \uac1c\ubc1c\uc790\ub4e4\uc774 \ub2e4\ub978 \ud504\ub808\uc784\uc6cc\ud06c\ub97c \uc774\uc6a9\ud558\uc5ec JSTL \uacfc jsp \uc758 \uc2a4\ud06c\ub9bd\ud2c0\ub9bf\uc5d0 \uc758\uc874\ud558\uc5ec \ud398\uc774\uc9c0\uc758 \ub85c\uc9c1\uc744 \ud504\ub85c\uadf8\ub798\ubc0d\ud558\ub3c4\ub85d &#8216;\uac15\uc81c\ub418\uc5b4&#8217; \uc654\uae30 \ub54c\ubb38\uc5d0 \ucc98\uc74c\uc5d0 \uc5ec\ub7ec\ubd84\uc740 \uc774\ub7ec\ud55c \ud328\ub7ec\ub2e4\uc784\uc758 \ubcc0\ud654\uc5d0 \uc801\uc751\ud558\uae30\uac00 \uc870\uae08 \uc5b4\ub824\uc6b8 \uc218\ub3c4 \uc788\ub2e4. \ud558\uc9c0\ub9cc \uc5ec\ub7ec\ubd84\uc774 \uc77c\ub2e8 \uc774\uac83\uc5d0 \uc775\uc219\ud574\uc9c0\uba74, Wicket \uc740 \uc815\ub9d0\ub85c \uc2e0\uc18d\ud55c \uac1c\ubc1c\uc744 \uc81c\uacf5\ud574\uc904 \uac83\uc774\ub77c\uace0 \ud655\uc2e0\ud55c\ub2e4.<\/p>\n<p>\ucc38\uace0 :<br \/>\n<a href=\"http:\/\/javageek.org\/2006\/03\/08\/comparing_web_frameworks_wicket.html\" target=\"_blank>http:\/\/javageek.org\/2006\/03\/08\/comparing_web_frameworks_wicket.html<\/a><br \/>\n<a href=\"http:\/\/javageek.org\/2006\/03\/14\/migrating_wicket_example_to_wicket_1_2_beta_1.html\" target=\"_blank>http:\/\/javageek.org\/2006\/03\/14\/migrating_wicket_example_to_wicket_1_2_beta_1.html<\/a><\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>&nbsp; Wicket \uc774\ub780 \ubb34\uc5c7\uc778\uac00? \uc544\ub798\ub294 Wicket \uc0ac\uc774\ud2b8\uc5d0\uc11c \uc778\uc6a9\ud55c \uc124\uba85\uc774\ub2e4. Wicket \uc740 \ub2e8\uc21c\ud568(Simplicity)\uacfc \uacc4\uce35\ud654(Separation of Concerns)\ub418\uc5b4 \uc788\uace0 \uc644\uc804\ud788 \uc0c8\ub85c\uc6b4 \uc218\uc900\uc73c\ub85c \uac1c\ubc1c\uc744 \uc6a9\uc774\ud558\uac8c \ud574\uc8fc\ub294 \uc790\ubc14 \uc6f9 \uc5b4\ud50c\ub9ac\ucf00\uc774\uc158 \ud504\ub808\uc784\uc6cc\ud06c\uc774\ub2e4. Wicket \ud398\uc774\uc9c0\ub294 \uc77c\ubc18\uc801\uc778 WYSIWYG HTML \ud234\uc744 \uc0ac\uc6a9\ud558\uc5ec \uc791\uc131\ud560 \uc218 \uc788\ub2e4. \ub3d9\uc801\uc778 \ucee8\ud150\uce20 \ucc98\ub9ac\uc640 \ud3fc &hellip; <a href=\"https:\/\/apollo89.com\/wordpress\/?p=230\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[662],"tags":[246,247,245,96],"class_list":["post-230","post","type-post","status-publish","format-standard","hentry","category-java-jsp","tag-mvc","tag-webapplication","tag-wicket","tag-java"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>\uc6f9 \ud504\ub808\uc784\uc6cc\ud06c\uc758 \ube44\uad50 : Wicket - Apollo89.com<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/apollo89.com\/wordpress\/?p=230\" \/>\n<meta property=\"og:locale\" content=\"ko_KR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"\uc6f9 \ud504\ub808\uc784\uc6cc\ud06c\uc758 \ube44\uad50 : Wicket - Apollo89.com\" \/>\n<meta property=\"og:description\" content=\"&nbsp; Wicket \uc774\ub780 \ubb34\uc5c7\uc778\uac00? \uc544\ub798\ub294 Wicket \uc0ac\uc774\ud2b8\uc5d0\uc11c \uc778\uc6a9\ud55c \uc124\uba85\uc774\ub2e4. Wicket \uc740 \ub2e8\uc21c\ud568(Simplicity)\uacfc \uacc4\uce35\ud654(Separation of Concerns)\ub418\uc5b4 \uc788\uace0 \uc644\uc804\ud788 \uc0c8\ub85c\uc6b4 \uc218\uc900\uc73c\ub85c \uac1c\ubc1c\uc744 \uc6a9\uc774\ud558\uac8c \ud574\uc8fc\ub294 \uc790\ubc14 \uc6f9 \uc5b4\ud50c\ub9ac\ucf00\uc774\uc158 \ud504\ub808\uc784\uc6cc\ud06c\uc774\ub2e4. Wicket \ud398\uc774\uc9c0\ub294 \uc77c\ubc18\uc801\uc778 WYSIWYG HTML \ud234\uc744 \uc0ac\uc6a9\ud558\uc5ec \uc791\uc131\ud560 \uc218 \uc788\ub2e4. \ub3d9\uc801\uc778 \ucee8\ud150\uce20 \ucc98\ub9ac\uc640 \ud3fc &hellip; Continue reading &rarr;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/apollo89.com\/wordpress\/?p=230\" \/>\n<meta property=\"og:site_name\" content=\"Apollo89.com\" \/>\n<meta property=\"article:published_time\" content=\"2009-02-10T04:17:55+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2013-02-05T03:53:16+00:00\" \/>\n<meta name=\"author\" content=\"apollo89\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\uae00\uc4f4\uc774\" \/>\n\t<meta name=\"twitter:data1\" content=\"apollo89\" \/>\n\t<meta name=\"twitter:label2\" content=\"\uc608\uc0c1 \ub418\ub294 \ud310\ub3c5 \uc2dc\uac04\" \/>\n\t<meta name=\"twitter:data2\" content=\"5\ubd84\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/apollo89.com\\\/wordpress\\\/?p=230#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/apollo89.com\\\/wordpress\\\/?p=230\"},\"author\":{\"name\":\"apollo89\",\"@id\":\"https:\\\/\\\/apollo89.com\\\/wordpress\\\/#\\\/schema\\\/person\\\/93f56825cac3b2f18e5f107995066c82\"},\"headline\":\"\uc6f9 \ud504\ub808\uc784\uc6cc\ud06c\uc758 \ube44\uad50 : Wicket\",\"datePublished\":\"2009-02-10T04:17:55+00:00\",\"dateModified\":\"2013-02-05T03:53:16+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/apollo89.com\\\/wordpress\\\/?p=230\"},\"wordCount\":160,\"commentCount\":0,\"keywords\":[\"mvc\",\"WebApplication\",\"Wicket\",\"\uc790\ubc14\"],\"articleSection\":[\"Java\\\/JSP\"],\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/apollo89.com\\\/wordpress\\\/?p=230#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/apollo89.com\\\/wordpress\\\/?p=230\",\"url\":\"https:\\\/\\\/apollo89.com\\\/wordpress\\\/?p=230\",\"name\":\"\uc6f9 \ud504\ub808\uc784\uc6cc\ud06c\uc758 \ube44\uad50 : Wicket - Apollo89.com\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/apollo89.com\\\/wordpress\\\/#website\"},\"datePublished\":\"2009-02-10T04:17:55+00:00\",\"dateModified\":\"2013-02-05T03:53:16+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/apollo89.com\\\/wordpress\\\/#\\\/schema\\\/person\\\/93f56825cac3b2f18e5f107995066c82\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/apollo89.com\\\/wordpress\\\/?p=230#breadcrumb\"},\"inLanguage\":\"ko-KR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/apollo89.com\\\/wordpress\\\/?p=230\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/apollo89.com\\\/wordpress\\\/?p=230#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\ud648\",\"item\":\"https:\\\/\\\/apollo89.com\\\/wordpress\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"\uc6f9 \ud504\ub808\uc784\uc6cc\ud06c\uc758 \ube44\uad50 : Wicket\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/apollo89.com\\\/wordpress\\\/#website\",\"url\":\"https:\\\/\\\/apollo89.com\\\/wordpress\\\/\",\"name\":\"Apollo89.com\",\"description\":\"\uc544\ud3f4\ub85c\uc528\uc758 \uc7a1\ub2e4\ud55c \uacbd\ud5d8\ub4e4..\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/apollo89.com\\\/wordpress\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"ko-KR\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/apollo89.com\\\/wordpress\\\/#\\\/schema\\\/person\\\/93f56825cac3b2f18e5f107995066c82\",\"name\":\"apollo89\",\"description\":\"\uc544\ud3f4\ub85c89 \uc785\ub2c8\ub2e4.\",\"url\":\"https:\\\/\\\/apollo89.com\\\/wordpress\\\/?author=1\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"\uc6f9 \ud504\ub808\uc784\uc6cc\ud06c\uc758 \ube44\uad50 : Wicket - Apollo89.com","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/apollo89.com\/wordpress\/?p=230","og_locale":"ko_KR","og_type":"article","og_title":"\uc6f9 \ud504\ub808\uc784\uc6cc\ud06c\uc758 \ube44\uad50 : Wicket - Apollo89.com","og_description":"&nbsp; Wicket \uc774\ub780 \ubb34\uc5c7\uc778\uac00? \uc544\ub798\ub294 Wicket \uc0ac\uc774\ud2b8\uc5d0\uc11c \uc778\uc6a9\ud55c \uc124\uba85\uc774\ub2e4. Wicket \uc740 \ub2e8\uc21c\ud568(Simplicity)\uacfc \uacc4\uce35\ud654(Separation of Concerns)\ub418\uc5b4 \uc788\uace0 \uc644\uc804\ud788 \uc0c8\ub85c\uc6b4 \uc218\uc900\uc73c\ub85c \uac1c\ubc1c\uc744 \uc6a9\uc774\ud558\uac8c \ud574\uc8fc\ub294 \uc790\ubc14 \uc6f9 \uc5b4\ud50c\ub9ac\ucf00\uc774\uc158 \ud504\ub808\uc784\uc6cc\ud06c\uc774\ub2e4. Wicket \ud398\uc774\uc9c0\ub294 \uc77c\ubc18\uc801\uc778 WYSIWYG HTML \ud234\uc744 \uc0ac\uc6a9\ud558\uc5ec \uc791\uc131\ud560 \uc218 \uc788\ub2e4. \ub3d9\uc801\uc778 \ucee8\ud150\uce20 \ucc98\ub9ac\uc640 \ud3fc &hellip; Continue reading &rarr;","og_url":"https:\/\/apollo89.com\/wordpress\/?p=230","og_site_name":"Apollo89.com","article_published_time":"2009-02-10T04:17:55+00:00","article_modified_time":"2013-02-05T03:53:16+00:00","author":"apollo89","twitter_card":"summary_large_image","twitter_misc":{"\uae00\uc4f4\uc774":"apollo89","\uc608\uc0c1 \ub418\ub294 \ud310\ub3c5 \uc2dc\uac04":"5\ubd84"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/apollo89.com\/wordpress\/?p=230#article","isPartOf":{"@id":"https:\/\/apollo89.com\/wordpress\/?p=230"},"author":{"name":"apollo89","@id":"https:\/\/apollo89.com\/wordpress\/#\/schema\/person\/93f56825cac3b2f18e5f107995066c82"},"headline":"\uc6f9 \ud504\ub808\uc784\uc6cc\ud06c\uc758 \ube44\uad50 : Wicket","datePublished":"2009-02-10T04:17:55+00:00","dateModified":"2013-02-05T03:53:16+00:00","mainEntityOfPage":{"@id":"https:\/\/apollo89.com\/wordpress\/?p=230"},"wordCount":160,"commentCount":0,"keywords":["mvc","WebApplication","Wicket","\uc790\ubc14"],"articleSection":["Java\/JSP"],"inLanguage":"ko-KR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/apollo89.com\/wordpress\/?p=230#respond"]}]},{"@type":"WebPage","@id":"https:\/\/apollo89.com\/wordpress\/?p=230","url":"https:\/\/apollo89.com\/wordpress\/?p=230","name":"\uc6f9 \ud504\ub808\uc784\uc6cc\ud06c\uc758 \ube44\uad50 : Wicket - Apollo89.com","isPartOf":{"@id":"https:\/\/apollo89.com\/wordpress\/#website"},"datePublished":"2009-02-10T04:17:55+00:00","dateModified":"2013-02-05T03:53:16+00:00","author":{"@id":"https:\/\/apollo89.com\/wordpress\/#\/schema\/person\/93f56825cac3b2f18e5f107995066c82"},"breadcrumb":{"@id":"https:\/\/apollo89.com\/wordpress\/?p=230#breadcrumb"},"inLanguage":"ko-KR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/apollo89.com\/wordpress\/?p=230"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/apollo89.com\/wordpress\/?p=230#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\ud648","item":"https:\/\/apollo89.com\/wordpress"},{"@type":"ListItem","position":2,"name":"\uc6f9 \ud504\ub808\uc784\uc6cc\ud06c\uc758 \ube44\uad50 : Wicket"}]},{"@type":"WebSite","@id":"https:\/\/apollo89.com\/wordpress\/#website","url":"https:\/\/apollo89.com\/wordpress\/","name":"Apollo89.com","description":"\uc544\ud3f4\ub85c\uc528\uc758 \uc7a1\ub2e4\ud55c \uacbd\ud5d8\ub4e4..","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/apollo89.com\/wordpress\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"ko-KR"},{"@type":"Person","@id":"https:\/\/apollo89.com\/wordpress\/#\/schema\/person\/93f56825cac3b2f18e5f107995066c82","name":"apollo89","description":"\uc544\ud3f4\ub85c89 \uc785\ub2c8\ub2e4.","url":"https:\/\/apollo89.com\/wordpress\/?author=1"}]}},"_links":{"self":[{"href":"https:\/\/apollo89.com\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/230","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/apollo89.com\/wordpress\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/apollo89.com\/wordpress\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/apollo89.com\/wordpress\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/apollo89.com\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=230"}],"version-history":[{"count":0,"href":"https:\/\/apollo89.com\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/230\/revisions"}],"wp:attachment":[{"href":"https:\/\/apollo89.com\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=230"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/apollo89.com\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=230"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/apollo89.com\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=230"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}