์์ด์ฝ ์ ์์ Freepik from www.flaticon.com
๋จผ ์๋ . ์๋ธ๋ฆฟ ์์ htmlํ๊ทธ๋ฅผ ์จ์ ํ๋ฉด์ผ๋ก ์ ๋ฌํ๋ ์์ . ๋์์ด๋์ ๊ฐ๋ฐ์๋ ์๋ก ์ผ๊ตด ๋ถํ ์ผ์ด ๋ง์์ ๊ฒ์ด๋ค. ์ด๋ฐ ์ผ์ด ์์๋ค. ๋์์ด๋๋ ์ค๋ ์ผ์ฐ ํด๊ทผํด์ ์ ์ธ๊ณผ ์ข
๋ก์์ ๊ฐ์ฅ ์ค๋๋ ๋ ์คํ ๋์ธ ์์ง์ค์ ๊ฐ ์๊ฐ์ด๋ค. ๊ทธ๋ฐ๋ฐ ๊ฐ๋ฐ์๋ผ๋ ์์๊ฐ ์์
์ ๋๋ด์ง ๋ชปํด์ ์ค์ ๋ด ์์
์ ๋ชปํ๊ณ ์๋ค. ์คํ ์ธ์๊ป์ผ ํ์ผ์ ๋ฐ์๋ค. ๋์์ด๋๋ ์ธ ์๊ฐ ์์ ์์
์ ๋๋ด๊ฒ ๋ค๋ ์๊ฐ์ผ๋ก ์ด์๋ฅผ ๋ถํ์ด๋ค. ํ . ๋๋ฌด ๊ณผํ๋ ๋ชจ์์ด๋ค. ์ค์๋ก ์๋ฐ ์ฝ๋ ๋ช ๊ฐ๋ฅผ ๊ฑด๋๋ ธ๋๋ฐ...controll + z๋ ์ ๋จน๋๋ค... ๊ทธ๋ ๊ฒ ๋์์ด๋์ ๊ฐ๋ฐ์ ์ฌ์ด๋ ๋นํฌ์ฅ๋๋ก์ฒ๋ผ ์ํ๋ก์์ก์ ๊ฒ์ด๋ฉฐ ์ด์ฉ๋ฉด ํ์ด์ด์ ํํฌ๊ฐ ๋ฌ์์ง๋ ๋ชจ๋ฅด๋ ์ผ์ด๋ค.
์ด๋ฐ ๋ฐฐ๊ฒฝ์์ ๋๊ตฐ๊ฐ. ๊ทธ๋ฌ๋๊น ํํ๋ฅผ ์งํฅํ๋ ์ธ๊ฐ ํ๋๊ฐ JSP๋ฅผ ๋ค๊ณ ๋ํ๋ฌ๋ค. JSP๊ฐ Java Server Pages๊ฐ ์ฝ์๊ฐ ์๋๋ผ Java Server Peace๐์ ์ฝ์๋ผ๋ ์ ์ค์ด ๊ทธ๋์ ๋๋ ๊ฒ์ด๋ค. ๋ฌผ๋ก ์ด๊ฑด ๋ด๊ฐ ์ง์ด๋ธ ์๊ธฐ์ผ ๋ฟ์ด๋ค.
๊ทธ๋ฌ๊ฑฐ๋
๋ง๊ฑฐ๋.
์ ๋ฆฌํ์๋ฉด,
JSP๋, ํ๋ฉด๊ณผ ๋น์ฆ๋์ค ๋ก์ง์ ๋ถ๋ฆฌํด์ ๊ฐ๋ฐํ๋ ค๋ ๋ชฉ์ ์ผ๋ก ๊ณ ์๋ ๊ฒ์ด๋ค. ์ด๋ ๊ฒ ํ๋ฉด ํ์ ๋ ์ฝ๊ณ , ๋น์ฐํ ์ ์ง๋ณด์๋ ์ฝ๋ค.
JSP๋ ์๋ฒ์ฌ์ด๋ ์คํฌ๋ฆฝํธ ์ธ์ด๋ค. ํ์ฅ์๋ .jsp์ด๋ฉฐ HTML์ ์ธํฅ์ ๋๋ฅด๊ณ ์์ง๋ง ์ปดํ์ผ ๋๋ฉด์ ์๋ธ๋ฆฟ ์ปจํ ์ด๋์ ์ํด ์๋ธ๋ฆฟ์ผ๋ก ๋ฐ๋๋ค. ๋งํ์๋ฉด ๊ฒฐ๊ตญ ์๋ฐ ํด๋์ค๋ผ๋ ๊ฒ์ด๋ค.
์๋ฐ์คํฌ๋ฆฝํธ๋ ๋ธ๋ผ์ฐ์ ๊ฐ ํด์ํ ์ ์๋, ํด๋ผ์ด์ธํธ ์ฌ์ด๋ ์คํฌ๋ฆฝํธ ์ธ์ด๋ค. ๋ฐ๋ฉด ์์์ ์ค๋ช ํ๋ฏ์ด jsp๋ ์๋ฒ์ฌ์ด๋ ์คํฌ๋ฆฝํธ ์ธ์ด๋ค. ๋ธ๋ผ์ฐ์ ๋ JSP๋ฅผ ํด์ํ ์ ์๋ค. ๋ฐ๋ผ์ ์คํ ์์ ์๋ธ๋ฆฟ(ํฐ์บฃ) ์ปจํ ์ด๋๊ฐ .jspํ์ผ์ ์๋ฐ์ฝ๋๋ก ์ปดํ์ผ ํ๋ ๊ณผ์ ์ ๊ฑฐ์น๋ค.
๋ณํ- ์ปจํ ์ด๋๋ JSPํ์ผ์ ์๋ฐ ํ์ผ๋ก ๋ณํํ๋ค.
์ปดํ์ผ - ์ปจํ ์ด๋๋ ๋ณํํ .javaํ์ผ์ ํด๋์ค ํ์ผ๋ก ์ปดํ์ผ ํ๋ค.
์คํ - ์ปจํ ์ด๋๋ .classํ์ผ์ ์คํํ์ฌ ๊ทธ ๊ฒฐ๊ณผhtml,css,js๋ฅผ ๋ธ๋ผ์ฐ์ ๋ก ์ ์กํ๋ค.
์๋ธ๋ฆฟ ์ปจํ ์ด๋์ ์ํด .jsp์์ .java๋ณํ๋ ํด๋์ค ํ์ผ์ ์ดํด๋ฆฝ์ค์ ๊ฒฝ์ฐ '\eclipse-workspace.metadata.plugins\org.eclipse.wst.server.core\tmp0\work\Catalina\localhost\ROOT\org\apache\jsp\test' ์ด ๊ฒฝ๋ก์์ ๋ณผ ์ ์๋ค.
JSP์์ HTML ํ๊ทธ์ ๊ฐ์ด ์ฌ์ฉํ๋ ์ฌ๋ฌ ์์๋ค.
๋๋ ํฐ๋ธ ํ๊ทธ๋ ์ ๋ฐ์ ์ธ ์ค์ ์ ๋ณด๋ฅผ ์ ์ฅํ ๋ ์ฌ์ฉํ๋ค.
๋ช ๊ฐ์ง ์ข
๋ฅ๊ฐ ์๋ค.
ํ์์ <%page %> ์ด๋ ๊ฒ ์ด๋ค.
jspํ์ผ์ ๋ง๋ค๋ฉด ๋งจ ์ฒซ ์ค์ ๋์ค๋ ํ๊ทธ๊ฐ ํ์ด์ง ๋๋ ํฐ๋ธ ํ๊ทธ๋ค.
<%@page language="java" contentType="text/html;charset=UTF-8"
pageEncoding="UTF-8"%>
๊ฐ๋จํ ์์ .
๋ช
์์ ์ผ๋ก ์ง์ ํ์ง๋ง, ์๋ ๋์จ ๊ฐ์ ๋ช ๊ฐ์ง๋ฅผ ์ ์ธํ ๋๋ถ๋ถ ๊ธฐ๋ณธ๊ฐ์ด๋ฏ๋ก ๋ฐ๋ก ์ง์ ํ์ง ์์๋ ๋๋ค.
<%@page contentType="text/html;charset=utf-8;" //์ถ๋ ฅ ํ์
import="java.util.*" //๋ค๋ฅธ ํจํค์ง์ ํด๋์ค๋ฅผ ์ํฌํธํ ๋ ์ง์ ํด์ผ ํจ
language="java" //jsp์์ ์ฌ์ฉํ ์ธ์ด
session="true" //HttpSession๊ฐ์ฒด ์ฌ์ฉ ์ฌ๋ถ
buffer="8kb" //๋ฒํผ ํฌ๊ธฐ
autoFlush="true" //์ถ๋ ฅ๋๊ธฐ ์ ๋ฒํผ๊ฐ ๋ค ์ฑ์์ง ๊ฒฝ์ฐ ๋์์ ์ง์
info="(Shoppingmall.........)" //ํ์ด์ง ์ค๋ช
isErrorPage="false" //ํ์ฌ ํ์ด์ง๊ฐ ์์ธ ์ฒ๋ฆฌ ๋ด๋น jsp์ธ์ง ์ง์
errorPage=""%>
ํ ์น์์ ํ์ด์ง ์ด๋์ ํ ๋, ์๋ถ๋ถheader๊ณผ ์๋ซ๋ถ๋ถfooter์ ๋์ผํ๊ณ ๊ฐ์ด๋ฐ ๋ถ๋ถ๋ง ๋ฌ๋ผ์ง ๋๊ฐ ๋ง๋ค. ์ธํด๋ฃจ๋ ํ๊ทธ๋ฅผ ์ด์ฉํด์ ํค๋์ ํธํฐ๋ฅผ ๊ณตํต์ ์ผ๋ก ์ค๋ณต์ ์ ๊ฑฐํ๊ณ ํ๋์ ์ฝ๋๋ฅผ ์ฌ๋ฌ jsp๊ฐ ๊ณต์ ํด์ ์ฌ์ฌ์ฉํ ์ ์๋ค. ๊ด๋ฆฌ๋ ํธํ๋ค.
<!-- ๊ณตํต๋๋ ๋ถ๋ถ์ include๋ก -->
<%include file="../header.jsp" %>
<!-- ๊ฐ ํ์ด์ง ๊ณ ์ ํ ๋ถ๋ถ -->
<%include file="../footer.jsp" %>
JSP๋ ์ปดํ์ผ ๋๋ฉด์ ์๋ฐ ์ฝ๋๋ก ๋ฐ๋๋ค๊ณ ํ๋ค. ์ด ๋ง์ ์กฐ๊ฑด์ด๋ ์ํฉ์ ๋ง๊ฒ htmlํ๊ทธ๋ฅผ ์ ํํ ์ ์๋ค. ๋ฐ๋ผ์ ๋์ ์ธ ํ๋ฉด ๊ตฌ์ฑ์ ํ ์ ์๋ค.
์คํฌ๋ฆฝํธ ์์๋, <% %>์์ ์๋ฐ ์ฝ๋๋ฅผ ๊ตฌํํ๋ ๊ฒ์ ๋งํ๋ค. <% %>๊ธฐํธ๋ฅผ ์คํฌ๋ฆฝํธ๋ฆฟscriptlet์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค.
ํ์์ <%! .... %>์ด๋ค.
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<%!
private String name = "์ฝ์ฝ";
public String getName() {
return this.name;
}
%>
...
...
<h2>์๋
ํ์ธ์ <%=getName()%>๋~</h2>
</body>
</html>
์ด๊ธฐ JSP์์ ์๋ฐ์ฝ๋๋ฅผ ์ด์ฉํด ๋์ ์ธ ํ๋ฉด์ ๊ตฌ์ฑํ๋ค. ํ์ฌ๋ ์ ์ฐ์ง ์๋๋ค.
<% ์ฝ๋ %>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%! /* ์ ์ธ๋ฌธ */
private String name = "๋ฝ๋ก๋ก";
public String getName() {
return this.name;
}
%>
<% /* ์คํฌ๋ฆฝํธ๋ฆฟ */
String age = request.getParameter("age");
%>
...
...
<h1>์ด๋ฆ <%=getName()%>, ๋์ด <%=age%></h1>
</body>
</html>
์ ์์ ์์ ๋ณ์ ๊ฐ์ ๊ฐ์ ธ์ฌ ๋ ์ผ๋ <%= ...%>๋ค.
<h1>์ด๋ฆ <%=getName()%>, ๋์ด <%=age%></h1>
<%=Integer.parseInt(age)+10 %>
ํํ์์ ๋น์ฐํ ์ฐ์ฐ๋ ๊ฐ๋ฅํ๋ค.
์ปดํ์ผ ์ JSP๋ ์๋ธ๋ฆฟ์ผ๋ก ๋ณํ๋๋ค. ๋๋ฌธ์ ์ฒ์ ์ ์ ์ ์๋๊ฐ ๋๋ฆด ์ ์๋ค. ์ด ์๊ฐ์ ๋จ์ถํ๊ธฐ ์ํด ํฐ์บฃ ์ปจํ ์ด๋๋ JSP Precomile์ ์ ๊ณตํ๋ค. ์ด๊ฒ์ ์ด์ฉํ๋ฉด ๋ฏธ๋ฆฌ JSPํ์ผ์ ์ปดํ์ผํด๋ ์ ์๋ค. load-on-startup๊ณผ ์ ์ฌํ๋ค.
์๋ธ๋ฆฟ์ผ๋ก ์ปดํ์ผ๋ JSP์ ์ผ๋ถ๋ค.
package org.apache.jsp.test;
import ...
public final class emtpy_jsp extends org.apache.jasper.runtime.HttpJspBase
implements org.apache.jasper.runtime.JspSourceDependent,
org.apache.jasper.runtime.JspSourceImports {
....
...
//JSPํ์ด์ง์ ๋ํ ์ ๋ณด๋ฅผ ์ ์ฅํ๋ค.
final javax.servlet.jsp.PageContext pageContext;
//์ธ์
์ ๋ณด๋ฅผ ์ ์ฅํ๋ค.
javax.servlet.http.HttpSession session = null;
//์ปจํ
์คํธ ์ ๋ณด๋ฅผ ์ ์ฅํ๋ค.
final javax.servlet.ServletContext application;
//JSPํ์ด์ง์ ๋ํ ์ค์ ์ ๋ณด๋ฅผ ์ ์ฅํ๋ค.
final javax.servlet.ServletConfig config;
//JSPํ์ด์ง์์ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ๋ค.
javax.servlet.jsp.JspWriter out = null;
//JSPํ์ด์ง์ ์๋ธ๋ฆฟ ์ธ์คํด์ค๋ฅผ ์ ์ฅํ๋ค.
final java.lang.Object page = this;
javax.servlet.jsp.JspWriter _jspx_out = null;
javax.servlet.jsp.PageContext _jspx_page_context = null;
....
...
..
}
์์ ์ ์ธ๋์ด ์๋ ๊ฒ์ด JSP์ ๋ด์ฅ๊ฐ์ฒด๋ค. ์ด์ธ์๋ HttpServletRequest๋ HttpServletResponse ๋ฑ์ด ์๋ค. ์ด๋ ๊ฒ ๋ด์ฅ๊ฐ์ฒด๊ฐ ์๊ธฐ ๋๋ฌธ์ HttpServletRequest ๋๋ HttpSession์ ๋ณ๋์ ์์ฑ ์์ด ์ฌ์ฉํ ์ ์๋ ๊ฒ์ด๋ค. ๋ด์ฅํ์ง ์์ ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ๊ณ ์ถ๋ค๋ฉด ๊ทธ๋ฅ importํ๊ณ ์ฐ๋ฉด ๋๋ค.
๋ด์ฅ ๊ฐ์ฒด | ์๋ธ๋ฆฟ | scope |
---|---|---|
page | this | ํ ๋ฒ์ ์์ฒญ์ ๋ํด ํ๋์ JSPํ์ด์ง๋ฅผ ๊ณต์ ํ๋ค |
request | HttpServletRequest | ํ๋ฒ์ ์์ฒญ์ ๋ํด ๊ฐ์ ์์ฒญ์ ๊ณต์ ํ๋ JSP๋ฅผ ๊ณต์ ํ๋ค |
session | HttpSession | ๊ฐ์ ๋ธ๋ผ์ฐ์ ์์ ๊ณต์ ํ๋ค. |
application | ServletContext | ๊ฐ์ ์ ํ๋ฆฌ์ผ์ด์ ์์ ๊ณต์ ํ๋ค. |
์๋ธ๋ฆฟ ์ค์ฝํ์ ๋ณ๋ฐ ๋ค๋ฅด์ง ์๋ค.