Servlet๊ณผ JSP๋ Java EE์ ์ฌ๋ฌ ๊ธฐ์ ์ค ํ๋์ด๋ค.
Java EE(Enterprise Edition)๋?
๊ธฐ์ ์์ ์ฌ์ฉํ๋ ํ๋ก๊ทธ๋จ์ ๋ง๋๋ ๋ฐ ์ ํฉํ ์๋ฐ ๊ฐ๋ฐ ๋ฒ์ ์ ์๋ฏธํ๋ฉฐ, Java EE์ ์คํ์๋ Servlet, JSP, EJB(Enterprise Java Beans) ๋ฑ์ด ์๋ค.
์ฐธ๊ณ : https://doozi316.github.io/java/2020/07/01/WEB20/
1. Servlet
์๋ธ๋ฆฟ์ ์๋ฒ์์ ์นํ์ด์ง ๋ฑ์ ๋์ ์ผ๋ก ์์ฑํ๊ฑฐ๋ ๋ฐ์ดํฐ ์ฒ๋ฆฌ๋ฅผ ์ํํ๊ธฐ ์ํด ์๋ฐ๋ก ์์ฑ๋ ํ๋ก๊ทธ๋จ์ด๋ค. ์ฆ, ์๋ฒ์์ ๋์ ์ผ๋ก ์์ฒญ๊ณผ ์๋ต์ ์ฒ๋ฆฌํ ์ ์๋ API๋ค์ด๋ผ๊ณ ํ ์ ์๋ค. ๊ฐ์ฅ ํฐ ํน์ง์ Java ์ฝ๋ ์์ HTML ํ๊ทธ๊ฐ ์ฝ์ ๋๋ฉฐ, ์๋ฐ ์ธ์ด๋ก ๋์ด์๋ค๋ ๊ฒ์ด๋ค.
์์)
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public ThreeParams extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");
printWriter out = response.getWriter();
String title = "Reading Three Request Parameters";
String docType = "<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n";
out.println(docType +
"<HTML>\n" +
"<HEAD><TITLE>" + title + "</TITLE></HEAD>\n" +
"<BODY BGCOLOR=\"#FDF5E6\">\n" +
"<H1 ALIGN=\"CENTER\">" + title + "</H1>\n" +
"<UL>\n" +
"<LI><B>param1</B>: " + request.getParameter("param1") + "\n" +
"<LI><B>param2</B>: " + request.getParameter("param2") + "\n" +
"<LI><B>param3</B>: " + request.getParameter("param3") + "\n" +
"</UL>\n" +
"</BODY></HTML>");
)
}
}
์๋ธ๋ฆฟ์ ์คํ์ ํฐ์บฃ๊ณผ ๊ฐ์ด ์๋ธ๋ฆฟ์ ์คํํ ์ ์๋ ํ๊ฒฝ์์ ์ด๋ฃจ์ด์ง๋ฉฐ ์ด๋ฌํ ํ๊ฒฝ์ '์๋ธ๋ฆฟ ์ปจํ ์ด๋(Servlet Container)'๋ผ๊ณ ํ๋ค. ์ผ๋ฐ ์๋ฐ ํ๋ก๊ทธ๋จ๊ณผ๋ ๋ฌ๋ฆฌ ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ฑฐ๋ ํธ์ถํ๊ณ ๊ด๋ฆฌํ๋ ์ฃผ์ฒด๊ฐ ์ฌ์ฉ์๊ฐ ์๋ ์๋ธ๋ฆฟ ์ปจํ ์ด๋์ด๋ค. ๋, ์๋ธ๋ฆฟ/JSP์ ์ฝ๋ ๊ฐ๋ฐ์ ๊ธฐ๋ณธ์ ์ธ ์๋ฐ API์ ๋๋ถ์ด ์๋ธ๋ฆฟ API๋ ๊ฐ์ด ์ฌ์ฉํด์ผ ํ๋ค. ์๋ธ๋ฆฟ ์ปจํ ์ด๋๊ฐ ์๋ธ๋ฆฟ์ ๊ด๋ฆฌํ๋ฉด์ ํธ์ถ๋๋ ๋ฉ์๋๋ค์ '์๋ธ๋ฆฟ์ ๋ผ์ดํ ์ฌ์ดํด'์ด๋ผ๊ณ ์ผ์ปซ๋๋ค.
2. JSP
JSP๋ ์๋ธ๋ฆฟ์ ๋จ์ ์ ๋ณด์ํ๊ณ ์ ๋ง๋ ์๋ธ๋ฆฟ ๊ธฐ๋ฐ์ ์คํฌ๋ฆฝํธ ๊ธฐ์ ๋ก, ์๋ธ๋ฆฟ์ ์์ฑํ์ง ์๊ณ ๋ ๊ฐํธํ๊ฒ ์นํ๋ก๊ทธ๋๋ฐ์ ๊ตฌํํ๊ธฐ ์ํด ๋ง๋ค์ด์ง ๊ธฐ์ ์ด๋ค. ์ฌ๊ธฐ์ ์คํฌ๋ฆฝํธ ๊ธฐ์ ์ด๋, ASP๋ PHP์ฒ๋ผ ๋ฏธ๋ฆฌ ์ฝ์๋ ๊ท์ ์ ๋ฐ๋ผ ๊ฐ๋จํ ํค์๋๋ฅผ ์กฐํฉํ์ฌ ์ ๋ ฅํ๋ฉด ์คํ ์์ ์ ๊ฐ๊ฐ ๋งคํ๋์ด์๋ ์ฝ๋๋ก ๋ณํ ํ์ ์คํ๋๋ ํํ์ด๋ค. JSP๋ ์๋ธ๋ฆฟ๊ณผ ๋ฐ๋๋ก HTML ์ฝ๋ ์์ Java ์ฝ๋๊ฐ ์ฝ์ ๋์ด ์๋ค.
์์)
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD>
<TITLE>Reading Three Request Parameters</TITLE>
<LINK REL=STYLESHEET HREF="JSP-Styles.css" TYPE="text/css">
</HEAD>
<BODY>
<H1>Reading Three Request Parameters</H1>
<UL>
<LI><B>param1</B>: <%= request.getParameter("param1") %>
<LI><B>param2</B>: <%= request.getParameter("param2") %>
<LI><B>param3</B>: <%= request.getParameter("param3") %>
</UL>
</BODY>
</HTML>
3. Servlet๊ณผ JSP์ ์ฐจ์ด
์ผ๋ฐ์ ์ผ๋ก '์๋ธ๋ฆฟ์ผ๋ก๋ ์ฝ๋๋ฅผ ์ด์ฉํ ์ฒ๋ฆฌ, JSP๋ก๋ ํ๋ฉด ๊ฐ๋ฐ'๋ก ์ญํ ์ ๋ถ๋ดํ๋ค.
Servlet | JSP |
- Java ์ฝ๋ ์์ HTML ์ฝ๋ - ๋ฐ์ดํฐ ์ฒ๋ฆฌ(Controller)์ ์ ์ฉ - ๊ฐ๋ฐ ์์ฐ์ฑ ์ ํ : ์ฝ๋ ์์ ์ ๋ค์ ์๋ฐ ์ฝ๋๋ฅผ ์ปดํ์ผ(.class ํ์ผ ์์ฑ)๊ณผ ๋ฐฐํฌํ๋ ์์ ํ์ |
- HTML ์ฝ๋ ์์ Java ์ฝ๋ - ํ๋ฉด ๊ฐ๋ฐ(View)์ ์ ์ฉ - ์ฌ์ด ๋ฐฐํฌ : ์ฝ๋ ์์ ์ WAS๊ฐ ์ฒ๋ฆฌํ์ฌ ์ฌ๋ฐฐํฌํ ํ์ X |
4. ์์ฝ
1. ์๋ธ๋ฆฟ/JSP ๋ชจ๋ Java EE ์คํ์ ์ผ๋ถ์ด๋ค.
2. ์๋ธ๋ฆฟ/JSP๋ฅผ ์คํํ๊ธฐ ์ํด์๋ ์๋ธ๋ฆฟ ์ปจํ ์ด๋๊ฐ ํ์ํ๋ค.
3. ์๋ธ๋ฆฟ ์ปจํ ์ด๋๊ฐ ์๋ธ๋ฆฟ/JSP ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ ์๋ช ์ฃผ๊ธฐ๋ฅผ ๊ด๋ฆฌํ๋ค.
4. JSP๋ ๋ด๋ถ์ ์ผ๋ก ์๋ธ๋ฆฟ๊ณผ ๊ฐ์ ๋ฐฉ์์ ์ฝ๋๋ก ๋ณํ๋๋ค.
5. JSP๋ HTML ๋ด์ ์๋ฐ ์ฝ๋๋ฅผ ์ถ๊ฐํ๋ ๋ฐฉ์์ด๊ณ , ์๋ธ๋ฆฟ์ ์๋ฐ ์ฝ๋ ์์ HTML ์ฝ๋๋ฅผ ์ถ๊ฐํ๋ ๋ฐฉ์์ด๋ค.