{"id":1669,"date":"2026-04-14T19:28:17","date_gmt":"2026-04-14T19:28:17","guid":{"rendered":"https:\/\/wayhope.kro.kr\/?p=1669"},"modified":"2026-08-31T07:32:38","modified_gmt":"2026-08-31T07:32:38","slug":"jsp-%ec%84%9c%eb%b2%84-%ea%b0%9c%eb%b0%9c-%ed%95%b5%ec%8b%ac-%ec%a0%95%eb%a6%ac","status":"publish","type":"post","link":"https:\/\/wayhope.kro.kr\/?p=1669","title":{"rendered":"JSP \uc11c\ubc84 \uac1c\ubc1c \ud575\uc2ec \uc815\ub9ac"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">JSP(JavaServer Pages)\ub294 Java \uae30\ubc18\uc758 \uc11c\ubc84 \uc0ac\uc774\ub4dc \uc6f9 \uac1c\ubc1c \uae30\uc220\uc774\ub2e4. \uc11c\ubc84\uc5d0\uc11c HTML\uc744 \ub3d9\uc801\uc73c\ub85c \uc0dd\uc131\ud574 \ud074\ub77c\uc774\uc5b8\ud2b8\uc5d0\uac8c \uc804\ub2ec\ud558\ub294 \ub370 \uc0ac\uc6a9\ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">JSP\ub9cc \ub193\uace0 \ubcf4\uba74 HTML \ud398\uc774\uc9c0\uc5d0 \uc11c\ubc84 \ub370\uc774\ud130\ub97c \ub123\uc5b4 \ub3d9\uc801\uc73c\ub85c \ucd9c\ub825\ud558\ub294 \uae30\uc220\ucc98\ub7fc \ubcf4\uc774\uc9c0\ub9cc, \uc2e4\uc81c\ub85c\ub294 Servlet Container \uc704\uc5d0\uc11c Servlet\uacfc \ud568\uaed8 \ub3d9\uc791\ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uae30\ubcf8\uc801\uc778 \uc694\uccad \ud750\ub984\uc740 \ub2e4\uc74c\uacfc \uac19\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Client -&gt; HTTP Request -&gt; WAS \/ Servlet Container -&gt; Servlet -&gt; Business Logic -&gt; Database -&gt; Servlet -&gt; JSP -&gt; HTML Response -&gt; Client\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Servlet\uc774 HTTP \uc694\uccad\uc744 \ucc98\ub9ac\ud558\uace0 \ud544\uc694\ud55c \ub370\uc774\ud130\ub97c \uc900\ube44\ud558\uba74 JSP\uac00 \uadf8 \ub370\uc774\ud130\ub97c HTML\ub85c \ud45c\ud604\ud55c\ub2e4. \ub530\ub77c\uc11c JSP \uc11c\ubc84 \uac1c\ubc1c\uc744 \uc774\ud574\ud558\ub824\uba74 JSP \ubb38\ubc95\ubfd0\ub9cc \uc544\ub2c8\ub77c Servlet, WAS, HTTP Request\/Response, \uc138\uc158\uacfc \ucfe0\ud0a4, MVC \uad6c\uc870\uae4c\uc9c0 \ud568\uaed8 \uc774\ud574\ud574\uc57c \ud55c\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">JSP<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">JSP\ub294 \uc11c\ubc84\uc5d0\uc11c \uc2e4\ud589\ub418\uc5b4 HTML\uc744 \uc0dd\uc131\ud558\ub294 \ud15c\ud50c\ub9bf \uae30\uc220\uc774\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc608\ub97c \ub4e4\uc5b4 \uc11c\ubc84\uc5d0\uc11c <code>user<\/code> \uac1d\uccb4\ub97c JSP\uc5d0 \uc804\ub2ec\ud588\ub2e4\uba74 \ub2e4\uc74c\uacfc \uac19\uc774 \ub370\uc774\ud130\ub97c \ucd9c\ub825\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;h1&gt;${user.name}&lt;\/h1&gt;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc11c\ubc84\uc5d0\uc11c JSP\uac00 \ucc98\ub9ac\ub418\uba74 \ube0c\ub77c\uc6b0\uc800\uc5d0\ub294 \ucd5c\uc885\uc801\uc73c\ub85c HTML\uc774 \uc804\ub2ec\ub41c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;h1&gt;Joo&lt;\/h1&gt;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ube0c\ub77c\uc6b0\uc800\uac00 JSP \ud30c\uc77c\uc744 \uc9c1\uc811 \uc2e4\ud589\ud558\ub294 \uac83\uc740 \uc544\ub2c8\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>JSP -&gt; Server Processing -&gt; HTML -&gt; Browser\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">JSP\uc758 \uc5ed\ud560\uc740 \uc11c\ubc84 \ub370\uc774\ud130\ub97c HTML\uc5d0 \ud45c\ud604\ud558\ub294 \uac83\uc774\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">JSP\uc640 Servlet<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">JSP\uc640 Servlet\uc740 Java \uc6f9 \uac1c\ubc1c\uc5d0\uc11c \uac19\uc774 \uc774\ud574\ud574\uc57c \ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Servlet\uc740 HTTP \uc694\uccad\uc744 \ucc98\ub9ac\ud558\ub294 Java \ud074\ub798\uc2a4\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>@WebServlet(\"\/hello\")\npublic class HelloServlet extends HttpServlet {\n\n    @Override\n    protected void doGet(\n        HttpServletRequest request,\n        HttpServletResponse response\n    ) throws IOException {\n\n        response.getWriter().println(\"Hello\");\n    }\n}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ud074\ub77c\uc774\uc5b8\ud2b8\uac00 <code>\/hello<\/code>\ub85c \uc694\uccad\ud558\uba74 Servlet Container\uac00 \ud574\ub2f9 Servlet\uc744 \ucc3e\uc544 \uc2e4\ud589\ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">JSP\ub3c4 \uacb0\uad6d Servlet Container\uc5d0\uc11c \uc2e4\ud589\ub41c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">JSP \ud30c\uc77c\uc740 \ub0b4\ubd80\uc801\uc73c\ub85c Servlet \ucf54\ub4dc\ub85c \ubcc0\ud658\ub418\uace0 \ucef4\ud30c\uc77c\ub41c \ub4a4 \uc2e4\ud589\ub41c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>hello.jsp -&gt; JSP Translation -&gt; Servlet Source -&gt; Compile -&gt; Servlet Class -&gt; Execute\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ub530\ub77c\uc11c JSP\ub294 \ubcc4\ub3c4\uc758 \ub3c5\ub9bd\uc801\uc778 \uc11c\ubc84 \uc2e4\ud589 \ubaa8\ub378\uc744 \uac00\uc9c0\uace0 \uc788\ub294 \uac83\uc774 \uc544\ub2c8\ub77c Servlet \uae30\ubc18\uc758 \uc2e4\ud589 \ud658\uacbd\uc744 \uc0ac\uc6a9\ud55c\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">WAS\uc640 Servlet Container<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">JSP\uc640 Servlet\uc740 \uc77c\ubc18\uc801\uc778 Java \uc560\ud50c\ub9ac\ucf00\uc774\uc158\ucc98\ub7fc <code>main()<\/code> \uba54\uc11c\ub4dc\uc5d0\uc11c \uc9c1\uc811 \uc2e4\ud589\ud558\ub294 \uad6c\uc870\uac00 \uc544\ub2c8\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Tomcat \uac19\uc740 WAS\uac00 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc744 \uc2e4\ud589\ud558\uace0 Servlet Container\uac00 HTTP \uc694\uccad\uacfc Servlet\uc758 \uc0dd\uba85\uc8fc\uae30\ub97c \uad00\ub9ac\ud55c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Browser -&gt; HTTP -&gt; Tomcat -&gt; Servlet Container -&gt; Servlet -&gt; JSP\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Servlet Container\ub294 \uc694\uccad URL\uc5d0 \ub9de\ub294 Servlet\uc744 \ucc3e\uace0 \uc2e4\ud589\ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ub610\ud55c <code>HttpServletRequest<\/code>, <code>HttpServletResponse<\/code> \uac19\uc740 \uac1d\uccb4\ub97c \uc0dd\uc131\ud574 Servlet\uc5d0 \uc804\ub2ec\ud558\uace0 Servlet\uc758 \uc0dd\uba85\uc8fc\uae30\ub3c4 \uad00\ub9ac\ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uac1c\ubc1c\uc790\ub294 \ub124\ud2b8\uc6cc\ud06c \uc5f0\uacb0\uc744 \uc9c1\uc811 \uad00\ub9ac\ud558\uae30\ubcf4\ub2e4 \uc694\uccad\uc744 \uc5b4\ub5bb\uac8c \ucc98\ub9ac\ud560 \uac83\uc778\uc9c0\uc5d0 \uc9d1\uc911\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Request\uc640 Response<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\uc6f9 \uc11c\ubc84 \uac1c\ubc1c\uc5d0\uc11c \uae30\ubcf8\uc774 \ub418\ub294 \uac83\uc740 HTTP Request\uc640 Response\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ud074\ub77c\uc774\uc5b8\ud2b8\uac00 \uc11c\ubc84\uc5d0 \ub370\uc774\ud130\ub97c \uc804\ub2ec\ud558\uba74 Servlet\uc5d0\uc11c\ub294 <code>HttpServletRequest<\/code>\ub97c \ud1b5\ud574 \uc811\uadfc\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>protected void doGet(\n    HttpServletRequest request,\n    HttpServletResponse response\n) throws IOException {\n\n    String name = request.getParameter(\"name\");\n\n    response.getWriter().println(name);\n}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ub2e4\uc74c\uacfc \uac19\uc740 \uc694\uccad\uc774 \ub4e4\uc5b4\uc654\ub2e4\uace0 \ud558\uc790.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>GET \/hello?name=Joo\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Servlet\uc5d0\uc11c<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>request.getParameter(\"name\");\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc744 \ud638\ucd9c\ud558\uba74 <code>\"Joo\"<\/code>\ub97c \uac00\uc838\uc62c \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Response\ub294 \uc11c\ubc84\uc5d0\uc11c \ud074\ub77c\uc774\uc5b8\ud2b8\ub85c \uc804\ub2ec\ud558\ub294 \uacb0\uacfc\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>response.setContentType(\"text\/html\");\nresponse.getWriter().println(\"&lt;h1&gt;Hello&lt;\/h1&gt;\");\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc2e4\uc81c \uc6f9 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc5d0\uc11c\ub294 Servlet\uc774 \uc9c1\uc811 HTML\uc744 \ub9cc\ub4e4\uc5b4 \ubc18\ud658\ud558\uae30\ubcf4\ub2e4 \ud544\uc694\ud55c \ub370\uc774\ud130\ub97c JSP\uc5d0 \uc804\ub2ec\ud558\ub294 \ubc29\uc2dd\uc73c\ub85c \uad6c\uc131\ud558\ub294 \uacbd\uc6b0\uac00 \ub9ce\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">JSP\uc5d0 \ub370\uc774\ud130 \uc804\ub2ec<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Servlet\uc5d0\uc11c \ub370\uc774\ud130\ub97c \uc900\ube44\ud558\uace0 JSP\ub85c \ub118\uae38 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>request.setAttribute(\"name\", \"Joo\");\n\nRequestDispatcher dispatcher =\n    request.getRequestDispatcher(\"\/WEB-INF\/views\/hello.jsp\");\n\ndispatcher.forward(request, response);\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">JSP\uc5d0\uc11c\ub294 \uc804\ub2ec\ubc1b\uc740 \uac12\uc744 \uc0ac\uc6a9\ud55c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;h1&gt;Hello, ${name}&lt;\/h1&gt;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ud750\ub984\uc740 \ub2e4\uc74c\uacfc \uac19\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>HTTP Request -&gt; Servlet -&gt; \ub370\uc774\ud130 \uc870\ud68c \/ \ube44\uc988\ub2c8\uc2a4 \ub85c\uc9c1 -&gt; request.setAttribute() -&gt; JSP -&gt; HTML \uc0dd\uc131 -&gt; HTTP Response\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774 \uad6c\uc870\uac00 JSP\ub97c \uc0ac\uc6a9\ud558\ub294 \uae30\ubcf8\uc801\uc778 MVC \ud615\ud0dc\ub85c \uc774\uc5b4\uc9c4\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">MVC \uad6c\uc870<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">JSP\ub97c \uc2e4\uc81c \uc11c\ubc84 \uac1c\ubc1c\uc5d0 \uc0ac\uc6a9\ud560 \ub54c\ub294 \ubcf4\ud1b5 \uc5ed\ud560\uc744 \ub098\ub220\uc11c \uad6c\uc131\ud55c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Controller -&gt; \uc694\uccad \ucc98\ub9ac -&gt; Service -&gt; \ube44\uc988\ub2c8\uc2a4 \ub85c\uc9c1 -&gt; Repository \/ DAO -&gt; Database \uc811\uadfc -&gt; Database\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uadf8\ub9ac\uace0 \ub2e4\uc2dc:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Controller -&gt; View\uc5d0 \ub370\uc774\ud130 \uc804\ub2ec -&gt; JSP -&gt; HTML \uc0dd\uc131\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Servlet\uc774 Controller \uc5ed\ud560\uc744 \ub9e1\uace0 JSP\uac00 View \uc5ed\ud560\uc744 \ub9e1\ub294\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\ube44\uc988\ub2c8\uc2a4 \ub85c\uc9c1\uae4c\uc9c0 JSP\uc5d0 \uc791\uc131\ud558\uba74 \ucf54\ub4dc\uac00 \ube60\ub974\uac8c \ubcf5\uc7a1\ud574\uc9c4\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc608\ub97c \ub4e4\uc5b4 \ub2e4\uc74c\uacfc \uac19\uc774 JSP\uc5d0\uc11c DB \uc870\ud68c\uae4c\uc9c0 \uc218\ud589\ud558\ub294 \ubc29\uc2dd\uc740 \ud53c\ud558\ub294 \uac83\uc774 \uc88b\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;%\n    \/\/ DB \uc5f0\uacb0\n    \/\/ SQL \uc2e4\ud589\n    \/\/ \uacb0\uacfc \ucc98\ub9ac\n%&gt;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">JSP\ub294 \ud654\uba74\uc744 \ud45c\ud604\ud558\ub294 \uc5ed\ud560\uc5d0 \uc9d1\uc911\uc2dc\ud0a4\uace0, \ub370\uc774\ud130 \uc870\ud68c\ub098 \ube44\uc988\ub2c8\uc2a4 \uaddc\uce59\uc740 \ubcc4\ub3c4\uc758 \uacc4\uce35\uc5d0\uc11c \ucc98\ub9ac\ud558\ub294 \ud3b8\uc774 \uad00\ub9ac\ud558\uae30 \uc27d\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">EL\uacfc JSTL<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">JSP\uc5d0\uc11c\ub294 Java \ucf54\ub4dc\ub97c \uc9c1\uc811 \uc791\uc131\ud558\ub294 Scriptlet \ubc29\uc2dd\ub3c4 \uc0ac\uc6a9\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;%\n    String name = (String) request.getAttribute(\"name\");\n%&gt;\n\n&lt;h1&gt;&lt;%= name %&gt;&lt;\/h1&gt;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ud558\uc9c0\ub9cc \uc774\ub7f0 \ubc29\uc2dd\uc740 View \ucf54\ub4dc\uc5d0 Java \ub85c\uc9c1\uc774 \uc11e\uc774\uae30 \ub54c\ubb38\uc5d0 \uc720\uc9c0\ubcf4\uc218\uac00 \uc5b4\ub835\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uadf8\ub798\uc11c JSP\uc5d0\uc11c\ub294 EL(Expression Language)\uc744 \uc0ac\uc6a9\ud558\ub294 \ubc29\uc2dd\uc774 \uc77c\ubc18\uc801\uc774\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;h1&gt;${name}&lt;\/h1&gt;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uac1d\uccb4\uc758 \ud504\ub85c\ud37c\ud2f0\ub3c4 \uc811\uadfc\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;p&gt;${user.name}&lt;\/p&gt;\n&lt;p&gt;${user.email}&lt;\/p&gt;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ubc18\ubcf5\uc774\ub098 \uc870\uac74 \ucc98\ub9ac\uc5d0\ub294 JSTL \uac19\uc740 \ud0dc\uadf8 \ub77c\uc774\ube0c\ub7ec\ub9ac\ub97c \uc0ac\uc6a9\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;c:forEach var=\"user\" items=\"${users}\"&gt;\n    &lt;p&gt;${user.name}&lt;\/p&gt;\n&lt;\/c:forEach&gt;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">JSP\ub97c View \uae30\uc220\ub85c \uc0ac\uc6a9\ud560 \ub54c\ub294 Java \ucf54\ub4dc\ub97c \uc9c1\uc811 \uc791\uc131\ud558\uae30\ubcf4\ub2e4 EL\uacfc JSTL\uc744 \uc0ac\uc6a9\ud558\ub294 \ubc29\ud5a5\uc774 \uc801\uc808\ud558\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">Session\uacfc Cookie<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">\uc6f9 \uc11c\ubc84\uc5d0\uc11c\ub294 \uc0ac\uc6a9\uc790\uc758 \uc0c1\ud0dc\ub97c \uc720\uc9c0\ud574\uc57c \ud558\ub294 \uacbd\uc6b0\uac00 \ub9ce\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">HTTP\ub294 \uae30\ubcf8\uc801\uc73c\ub85c \uac01\uac01\uc758 \uc694\uccad\uc744 \ub3c5\ub9bd\uc801\uc73c\ub85c \ucc98\ub9ac\ud558\uae30 \ub54c\ubb38\uc5d0 \ub85c\uadf8\uc778 \uc0c1\ud0dc \uac19\uc740 \uc815\ubcf4\ub97c \uacc4\uc18d \uc720\uc9c0\ud558\ub824\uba74 \ubcc4\ub3c4\uc758 \uba54\ucee4\ub2c8\uc998\uc774 \ud544\uc694\ud558\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Cookie\ub294 \ud074\ub77c\uc774\uc5b8\ud2b8\uc5d0 \ub370\uc774\ud130\ub97c \uc800\uc7a5\ud558\uace0 \uc694\uccad\ud560 \ub54c \uc11c\ubc84\ub85c \uc804\ub2ec\ud558\ub294 \ubc29\uc2dd\uc774\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Session\uc740 \uc11c\ubc84\uc5d0 \uc0ac\uc6a9\uc790 \uc0c1\ud0dc\ub97c \uc800\uc7a5\ud558\uace0 \ud074\ub77c\uc774\uc5b8\ud2b8\uc5d0\ub294 \ud574\ub2f9 \uc138\uc158\uc744 \uc2dd\ubcc4\ud558\uae30 \uc704\ud55c \uac12\ub9cc \uc804\ub2ec\ud558\ub294 \ubc29\uc2dd\uc774\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Servlet\uc5d0\uc11c\ub294 \ub2e4\uc74c\ucc98\ub7fc Session\uc744 \uc0ac\uc6a9\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>HttpSession session = request.getSession();\n\nsession.setAttribute(\"user\", user);\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774\ud6c4 \ub2e4\ub978 \uc694\uccad\uc5d0\uc11c \uac19\uc740 Session\uc5d0 \uc800\uc7a5\ub41c \ub370\uc774\ud130\ub97c \uac00\uc838\uc62c \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>HttpSession session = request.getSession();\n\nUser user = (User) session.getAttribute(\"user\");\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc77c\ubc18\uc801\uc778 \ub85c\uadf8\uc778 \uad6c\uc870\uc5d0\uc11c\ub294 \ub2e4\uc74c\uacfc \uac19\uc740 \ud750\ub984\uc744 \uc0dd\uac01\ud560 \uc218 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Login Request -&gt; Servlet -&gt; \uc0ac\uc6a9\uc790 \uc778\uc99d -&gt; Session \uc0dd\uc131 -&gt; Session ID\ub97c Cookie\ub85c \uc804\ub2ec -&gt; Client\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774\ud6c4 \ud074\ub77c\uc774\uc5b8\ud2b8\uac00 Session ID\uac00 \ud3ec\ud568\ub41c Cookie\ub97c \ubcf4\ub0b4\uba74 \uc11c\ubc84\uac00 \ud574\ub2f9 Session\uc744 \ucc3e\uc544 \ub85c\uadf8\uc778 \uc0c1\ud0dc\ub97c \ud655\uc778\ud55c\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">JSP\uc640 \ub370\uc774\ud130\ubca0\uc774\uc2a4<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">JSP\uac00 \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc5d0 \uc9c1\uc811 \uc811\uadfc\ud558\ub294 \uad6c\uc870\ub85c \ub9cc\ub4e4 \ud544\uc694\ub294 \uc5c6\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc77c\ubc18\uc801\uc778 \uad6c\uc870\uc5d0\uc11c\ub294 \ub2e4\uc74c\uacfc \uac19\uc774 \uacc4\uce35\uc744 \ubd84\ub9ac\ud55c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>JSP -&gt; Controller -&gt; Service -&gt; Repository \/ DAO -&gt; JDBC -&gt; Database\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uc608\ub97c \ub4e4\uc5b4 \uac8c\uc2dc\uae00 \ubaa9\ub85d\uc744 \uc694\uccad\ud558\uba74 Controller\uac00 Service\ub97c \ud638\ucd9c\ud558\uace0 Service\uac00 Repository\ub97c \ud1b5\ud574 DB\uc5d0\uc11c \ub370\uc774\ud130\ub97c \uac00\uc838\uc628\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uadf8 \uacb0\uacfc\ub97c \ub2e4\uc2dc JSP\uc5d0 \uc804\ub2ec\ud55c\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>GET \/posts -&gt; Controller -&gt; PostService -&gt; PostRepository -&gt; Database -&gt; Post List -&gt; JSP -&gt; HTML\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">JSP\ub294 <code>Post List<\/code>\ub97c \ubc1b\uc544 \ud654\uba74\uc5d0 \ucd9c\ub825\ud558\ub294 \uc5ed\ud560\ub9cc \ub2f4\ub2f9\ud55c\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">JSP\uc758 \uc704\uce58<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">JSP\ub97c \ud604\ub300\uc801\uc778 Java \uc11c\ubc84 \uad6c\uc870\uc5d0 \ub123\uc5b4 \ubcf4\uba74 \uc5ed\ud560\uc774 \uba85\ud655\ud574\uc9c4\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Client -&gt; HTTP -&gt; Controller -&gt; Service -&gt; Repository -&gt; Database\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\uadf8\ub9ac\uace0 \ub2e4\uc2dc:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Database -&gt; Repository -&gt; Service -&gt; Controller -&gt; JSP -&gt; HTML -&gt; Client\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Controller\ub294 \uc694\uccad\uc744 \ubc1b\uace0 \uc801\uc808\ud55c \ub85c\uc9c1\uc744 \ud638\ucd9c\ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Service\ub294 \uc560\ud50c\ub9ac\ucf00\uc774\uc158\uc758 \ube44\uc988\ub2c8\uc2a4 \ub85c\uc9c1\uc744 \ucc98\ub9ac\ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Repository \ub610\ub294 DAO\ub294 \ub370\uc774\ud130\ubca0\uc774\uc2a4 \uc811\uadfc\uc744 \ub2f4\ub2f9\ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">JSP\ub294 \ucd5c\uc885\uc801\uc73c\ub85c \uc0ac\uc6a9\uc790\uc5d0\uac8c \ubcf4\uc5ec\uc904 HTML\uc744 \uc0dd\uc131\ud55c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uc774\ub807\uac8c \uac01 \uacc4\uce35\uc758 \ucc45\uc784\uc744 \ubd84\ub9ac\ud558\uba74 \ucf54\ub4dc\uac00 \uc5b4\ub514\uc5d0 \uc788\uc5b4\uc57c \ud558\ub294\uc9c0\uac00 \uba85\ud655\ud574\uc9c4\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">JSP\uc5d0\uc11c Spring MVC\ub85c<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">JSP\ub97c \uacf5\ubd80\ud558\ub2e4 \ubcf4\uba74 \uc790\uc5f0\uc2a4\ub7fd\uac8c Spring MVC\uc640 \uc5f0\uacb0\ub41c\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Spring MVC\uc5d0\uc11c\ub3c4 \uae30\ubcf8\uc801\uc778 \uad6c\uc870\ub294 \ud06c\uac8c \ub2e4\ub974\uc9c0 \uc54a\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>HTTP Request -&gt; DispatcherServlet -&gt; Controller -&gt; Service -&gt; Repository -&gt; Database\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">\ucc98\ub9ac \uacb0\uacfc\ub97c View\uc5d0 \uc804\ub2ec\ud558\uace0 JSP\ub97c View\ub85c \uc0ac\uc6a9\ud560 \uc218\ub3c4 \uc788\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Controller -&gt; Model -&gt; View Resolver -&gt; JSP -&gt; HTML\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Spring MVC\uc5d0\uc11c\ub294 <code>DispatcherServlet<\/code>\uc774 Front Controller \uc5ed\ud560\uc744 \uc218\ud589\ud558\uae30 \ub54c\ubb38\uc5d0 \uac1c\ubc1c\uc790\uac00 \ubaa8\ub4e0 \uc694\uccad\ub9c8\ub2e4 \uc9c1\uc811 Servlet\uc744 \uad6c\ud604\ud560 \ud544\uc694\uac00 \uc904\uc5b4\ub4e0\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">JSP \uc790\uccb4\uac00 \uc0ac\ub77c\uc9c0\ub294 \uac83\uc774 \uc544\ub2c8\ub77c, JSP\ub97c \uc0ac\uc6a9\ud558\ub294 \ubc29\uc2dd\uacfc \uc8fc\ubcc0 \uad6c\uc870\uac00 \ud504\ub808\uc784\uc6cc\ud06c\uc5d0 \uc758\ud574 \uc815\ub9ac\ub418\ub294 \uac83\uc774\ub2e4.<\/p>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\uc815\ub9ac<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">JSP \uc11c\ubc84 \uac1c\ubc1c\uc5d0\uc11c \uc54c\uc544\uc57c \ud560 \ub0b4\uc6a9\uc744 \ud558\ub098\uc758 \ud750\ub984\uc73c\ub85c \ubb36\uc73c\uba74 \ub2e4\uc74c\uacfc \uac19\ub2e4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>HTTP Request -&gt; WAS \/ Servlet Container -&gt; Servlet \/ Controller -&gt; Service -&gt; Repository \/ DAO -&gt; Database -&gt; Service -&gt; Controller -&gt; JSP -&gt; HTML -&gt; HTTP Response\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">JSP\ub294 \uc774 \uad6c\uc870\uc5d0\uc11c <strong>View\ub97c \ub2f4\ub2f9\ud558\ub294 \uc11c\ubc84 \uc0ac\uc774\ub4dc \ud15c\ud50c\ub9bf \uae30\uc220<\/strong>\uc5d0 \uac00\uae5d\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Servlet\uc740 HTTP \uc694\uccad\uc744 \ucc98\ub9ac\ud558\uace0, Service\ub294 \ube44\uc988\ub2c8\uc2a4 \ub85c\uc9c1\uc744 \ub2f4\ub2f9\ud558\uace0, Repository\ub294 \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc5d0 \uc811\uadfc\ud55c\ub2e4. JSP\ub294 Controller\uac00 \uc804\ub2ec\ud55c \ub370\uc774\ud130\ub97c \uc774\uc6a9\ud574 \ucd5c\uc885 HTML\uc744 \ub9cc\ub4e0\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\uadf8\ub798\uc11c JSP \ubb38\ubc95\ub9cc \uacf5\ubd80\ud558\ub294 \uac83\ubcf4\ub2e4 <strong>Servlet -&gt; HTTP -&gt; MVC -&gt; Session\/Cookie -&gt; Database -&gt; JSP<\/strong>\uc758 \uad00\uacc4\ub97c \uac19\uc774 \uc774\ud574\ud558\ub294 \uac83\uc774 \ud6e8\uc52c \uc911\uc694\ud558\ub2e4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">JSP \uc790\uccb4\ub294 \uc624\ub798\ub41c \uae30\uc220\uc774\uc9c0\ub9cc, \uc774 \uad6c\uc870\ub97c \uc774\ud574\ud558\uba74 Spring MVC \uac19\uc740 Java \uc11c\ubc84 \ud504\ub808\uc784\uc6cc\ud06c\uac00 \ub0b4\ubd80\uc801\uc73c\ub85c \uc5b4\ub5a4 \ubb38\uc81c\ub97c \ud574\uacb0\ud558\uace0 \uc788\ub294\uc9c0\ub3c4 \uc790\uc5f0\uc2a4\ub7fd\uac8c \uc5f0\uacb0\ub41c\ub2e4.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>JSP(JavaServer Pages)\ub294 Java \uae30\ubc18\uc758 \uc11c\ubc84 \uc0ac\uc774\ub4dc \uc6f9 \uac1c\ubc1c \uae30\uc220\uc774\ub2e4. \uc11c\ubc84\uc5d0\uc11c HTML\uc744 \ub3d9\uc801\uc73c\ub85c \uc0dd\uc131\ud574 \ud074\ub77c\uc774\uc5b8\ud2b8\uc5d0\uac8c \uc804\ub2ec\ud558\ub294 \ub370 \uc0ac\uc6a9\ud55c\ub2e4. JSP\ub9cc \ub193\uace0 \ubcf4\uba74 HTML \ud398\uc774\uc9c0\uc5d0 \uc11c\ubc84 \ub370\uc774\ud130\ub97c \ub123\uc5b4 \ub3d9\uc801\uc73c\ub85c \ucd9c\ub825\ud558\ub294 \uae30\uc220\ucc98\ub7fc \ubcf4\uc774\uc9c0\ub9cc, \uc2e4\uc81c\ub85c\ub294 Servlet Container \uc704\uc5d0\uc11c Servlet\uacfc \ud568\uaed8 \ub3d9\uc791\ud55c\ub2e4. \uae30\ubcf8\uc801\uc778 \uc694\uccad \ud750\ub984\uc740 \ub2e4\uc74c\uacfc \uac19\ub2e4. Servlet\uc774 HTTP \uc694\uccad\uc744 \ucc98\ub9ac\ud558\uace0 \ud544\uc694\ud55c \ub370\uc774\ud130\ub97c \uc900\ube44\ud558\uba74 JSP\uac00 \uadf8 \ub370\uc774\ud130\ub97c HTML\ub85c \ud45c\ud604\ud55c\ub2e4. \ub530\ub77c\uc11c JSP [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[49],"tags":[],"class_list":["post-1669","post","type-post","status-publish","format-standard","hentry","category-server"],"_links":{"self":[{"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=\/wp\/v2\/posts\/1669","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1669"}],"version-history":[{"count":4,"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=\/wp\/v2\/posts\/1669\/revisions"}],"predecessor-version":[{"id":1959,"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=\/wp\/v2\/posts\/1669\/revisions\/1959"}],"wp:attachment":[{"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1669"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1669"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wayhope.kro.kr\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1669"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}