1.1 ์ธํฐํ์ด์ค ์๋ธ๋ฆฟ
์ค๋ ์ฐ๋ฆฌ๋ ์๋กญ๊ณ ํฅ๋ฏธ๋ก์ด ์ฃผ์ ์ธ ์๋ธ๋ฆฟ์ ์์ํฉ๋๋ค . Java์ ์๋ธ๋ฆฟ์ด ์ถ๊ฐ๋๋ฉด์ Java๊ฐ ๋๊ท๋ชจ ์๋ฒ ์์ฉ ํ๋ก๊ทธ๋จ์ ์ฌ์ค์์ ํ์ค์ด ๋์์ต๋๋ค. ์ ์ธ๊ณ ๋ชจ๋ ์ํฐํ๋ผ์ด์ฆ ์ํํธ์จ์ด์ 80%๋ Java๋ก ์์ฑ๋ฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ค๊ตญ์์๋ ๋ชจ๋ ๊ฒ์ด 100%์ ๋๋ค. ์๋ธ๋ฆฟ์ด๋ ๋ฌด์์ ๋๊น?
์๋ธ๋ฆฟ์ ์ ํํ Java ํ๋ก๊ทธ๋จ์ ์น ์๋น์ค๋ก ์ ํํ๊ณ ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ์ฒ๋ฆฌํ ์ ์๋๋ก ํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๋ฌ๋ค...
90๋ ๋์๋ World Wide Web์ด ๋ฑ์ฅํ ์งํ ์น ํด๋ผ์ด์ธํธ(๋ธ๋ผ์ฐ์ )์ ์น ์๋ฒ๊ฐ ๋ฑ์ฅํ์ต๋๋ค. ์น ์๋ฒ๋ ์ผ๋ฐ์ ์ผ๋ก ์ธํฐ๋ท์ ํตํด ์ ์ฅํ ํ์ผ(html ํ์ด์ง, ์คํฌ๋ฆฝํธ, ๊ทธ๋ฆผ ๋ฑ)์ ๋จ์ํ ๋ฐฐํฌํ์ต๋๋ค.
์ด๋ ์์ ์์ ๋ชจ๋๊ฐ ์์ชฝ ๋ชจ๋๋ฅผ ๋ ๋๋ํ๊ฒ ๋ง๋๋ ๊ฒ์ด ํ์ํ๋ค๋ ๊ฒฐ๋ก ์ ๋๋ฌํ์ต๋๋ค. JavaScript๊ฐ HTML ํ์ด์ง์ ์ถ๊ฐ๋์๊ณ ํ๋ฌ๊ทธ์ธ์ด ์๋ฒ์ ์ถ๊ฐ๋์์ต๋๋ค. ํน์ ์์ฒญ์ ๋ํ ์๋ต์ผ๋ก ํธ์ถ๋์ด ์๋ฒ์ ๋์์ ๋ณด๋ค ์ ์ฐํ๊ณ ์ค๋งํธํ๊ฒ ๋ง๋๋ ํน์ ์คํฌ๋ฆฝํธ์ ๋๋ค.
๋ฐ๋ผ์ ์๋ธ๋ฆฟ์ ํน์ ํ์ด์ง์ ๋ํด ์์ฒญ๋ ๋ Java ์ฝ๋๋ฅผ ์คํํ ์ ์๋๋ก ๋ด์ฅ๋์ด ์๋ Java ํ๋ฌ๊ทธ์ธ ์
๋๋ค . Java web-server
๊ทธ๋ฆฌ๊ณ ์ด๋ฏธ Servlet ํด๋์ค์์ ์์๋ ํด๋์ค๋ก ํ์๋๋ ์ด Java ์ฝ๋๋ ๊ฐ๋ฐ์๊ฐ ์๋ํ ๋๋ก ์ํํ์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ด๋ฏธ ์๊ณ ์๋ฏ์ด ๊ฐ์ฅ ๋๋ฆฌ ์ฌ์ฉ๋๋ Java ์น ์๋ฒ๋ Tomcat ์ ๋๋ค . ๊ทธ๊ฑด ๊ทธ๋ ๊ณ , ๋งํ "Tom and Jerry"์ ๊ณ ์์ด Tom์ ๊ธฐ๋ฆฌ๊ธฐ ์ํด ๋ช ๋ช ๋์์ต๋๋ค.
Tomcat์ ์๋ธ๋ฆฟ๊ณผ ์ด๋ป๊ฒ ์ํธ ์์ฉํฉ๋๊น? ์ค์ ๋ก ์ด ํ๋ก์ธ์ค๋ ํ์คํ๋์ด ์์ผ๋ฉฐ ์๋ธ๋ฆฟ ๋ผ์ดํ ์ฌ์ดํด ์ด๋ผ๊ณ ํฉ๋๋ค . ์ฌ๊ธฐ์์ ์๋ธ๋ฆฟ์ ๋ก๋ ๊ฐ๋ฅํ ๊ฐ์ฒด์ด๊ณ ์น ์๋ฒ๋ ์๋ธ๋ฆฟ ์ปจํ ์ด๋ ์ ๋๋ค .
์๋ธ๋ฆฟ์ด ์์ง ๋ก๋๋์ง ์์ ๊ฒฝ์ฐ ๋ค์์ ์ํํฉ๋๋ค.
- ์๋ธ๋ฆฟ ํด๋์ค๋ ์ปจํ ์ด๋์ ์ํด ๋ก๋๋ฉ๋๋ค.
- ์ปจํ ์ด๋๋ ์๋ธ๋ฆฟ ํด๋์ค(๊ฐ์ฒด)์ ์ธ์คํด์ค๋ฅผ ์์ฑํฉ๋๋ค.
init()
์ปจํ ์ด๋๋ ์๋ธ๋ฆฟ ๊ฐ์ฒด์์ ๋ฉ์๋๋ฅผ ํธ์ถํฉ๋๋ค . ๋ฉ์๋๋ ํ ๋ฒ๋ง ํธ์ถ๋ฉ๋๋ค.
ํ์ค ์์ ์ฃผ๊ธฐ - ํด๋ผ์ด์ธํธ ์์ฒญ ์๋น์ค :
- ๊ฐ ์์ฒญ์ ๋ณ๋์ ์ค๋ ๋์์ ์ฒ๋ฆฌ๋ฉ๋๋ค.
service()
์ปจํ ์ด๋๋ ์๋ธ๋ฆฟ์์ ๋ฉ์๋๋ฅผ ํธ์ถ ํ๊ณ ๊ทธ๊ณณ์์ ServletRequest ๋ฐ ServletResponse ๊ฐ์ฒด๋ฅผ ์ ๋ฌํฉ๋๋ค.destroy()
์๋ธ๋ฆฟ์ ์ข ๋ฃํ๊ธฐ ์ํด ์๋ธ๋ฆฟ ๊ฐ์ฒด์์ ๋ฉ์๋๊ฐ ํธ์ถ๋ฉ๋๋ค . ํ ๋ฒ๋ง ํธ์ถ๋ฉ๋๋ค.
์๋ธ๋ฆฟ์ด ์ข ๋ฃ๋๋ ๋ฐ๋ ์ฌ๋ฌ ๊ฐ์ง ์ด์ ๊ฐ ์์ ์ ์์ต๋๋ค.
- ํ๋ก๊ทธ๋๋จธ๊ฐ ์น ์๋ฒ๋ฅผ ๋ค์ ์์ํ๋ฉด ๋ชจ๋ ์๋ธ๋ฆฟ์ ์ ์์ ์ผ๋ก ์ข ๋ฃํด์ผ ํฉ๋๋ค.
- ํ๋ก๊ทธ๋๋จธ๋ ์๋ธ๋ฆฟ์ ์ ๋ฒ์ ์ ๋ก๋ํ๊ณ ์ด์ ๋ฒ์ ์ ์ฌ๋ฐ๋ฅด๊ฒ ์ธ๋ก๋ํด์ผ ํฉ๋๋ค.
- ๋ฑ๋ฑ.
์ค์ํ ์ ์ ๊ธฐ์ตํ์ญ์์ค. ์น ์๋ฒ์ ํด๋น ์๋ธ๋ฆฟ์ ์ฅ์ ์์ด ์๋ํ๊ณ ๋ถ๋น ์์ฒ ๊ฑด์ ์์ฒญ์ ์ฒ๋ฆฌํ๋ฉด์ ๋ช ๋ฌ ๋์ ๋ค์ ์์ํด์ผ ํฉ๋๋ค. ๋ฐ๋ผ์ ์๋ธ๋ฆฟ์ ๋ก๋ํ๊ณ ์์ ํ๊ณ ์ธ๋ก๋ํ๋ ์ฝ๋๋ ํญ์ ๋งค์ฐ ๋์ ํ์ง๋ก ์์ฑ๋์ด์ผ ํฉ๋๋ค.
1.2 HttpServlet ํด๋์ค
์๋ธ๋ฆฟ ํด๋์ค๋ ์๋ธ๋ฆฟ๊ณผ ์ปจํ
์ด๋๊ฐ ์๋ํ๋ ๋ฐฉ์์ ํ์คํํ๊ธฐ ์ํด ์กด์ฌํฉ๋๋ค. ํ๋ก๊ทธ๋๋จธ๋ ์ด ํด๋์ค์ ์ง์ ์์
ํ์ง ์์ต๋๋ค. ๊ธ์, ๊ทธ๋ค์ ๊ฑฐ์ ์๋ํ์ง ์์ต๋๋ค. ๊ฐ์ฅ ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉ๋๋ ํด๋์ค๋ HttpServlet
Servlet์์ ์์๋ฉ๋๋ค.
์ด ํด๋์ค์๋ ์ฐ๋ฆฌ์๊ฒ ์ ์ฉํ ๋ช ๊ฐ์ง ๋ฉ์๋๊ฐ ์์ต๋๋ค. ๋ค์๊ณผ ๊ฐ์ด ์์ฃผ ์ฌ์ฉํฉ๋๋ค.
๋ฐฉ๋ฒ | ์ค๋ช | |
---|---|---|
1 | init() |
์๋ธ๋ฆฟ์ด ๋ก๋๋ ๋ ํ ๋ฒ ํธ์ถ๋จ |
2 | destroy() |
์๋ธ๋ฆฟ์ด ์ธ๋ก๋๋ ๋ ํ ๋ฒ ํธ์ถ๋จ |
์ผ | service(HttpRequest, HttpResponse) |
์๋ธ๋ฆฟ์ ๋ํ ๋ชจ๋ ์ ์์ฒญ์ ๋ํด ํธ์ถ๋จ |
4 | doGet(HttpRequest, HttpResponse) |
์๋ธ๋ฆฟ์ ๋ํ ๋ชจ๋ ์๋ก์ด GET ์์ฒญ์ ๋ํด ํธ์ถ๋จ |
5 | doPost(HttpRequest, HttpResponse) |
์๋ธ๋ฆฟ์ ๋ํ ๋ชจ๋ ์๋ก์ด POST ์์ฒญ์ ๋ํด ํธ์ถ๋จ |
6 | doHead(HttpRequest, HttpResponse) |
์๋ธ๋ฆฟ์ ๋ํ ๋ชจ๋ ์๋ก์ด HEAD ์์ฒญ์ ๋ํด ํธ์ถ๋จ |
7 | doDelete(HttpRequest, HttpResponse) |
์๋ธ๋ฆฟ์ ๋ํ ๋ชจ๋ ์๋ก์ด DELETE ์์ฒญ์ ๋ํด ํธ์ถ๋จ |
8 | doPut(HttpRequest, HttpResponse) |
์๋ธ๋ฆฟ์ ๋ํ ๋ชจ๋ ์ PUT ์์ฒญ์ ๋ํด ํธ์ถ๋จ |
init()
๋ฐ ๋ฉ์๋๋ destroy()
Servlet ํด๋์ค์์ ์์๋ฉ๋๋ค. ๋ฐ๋ผ์ ์๋ธ๋ฆฟ์์ ์ฌ์ ์ํ๊ธฐ๋ก ๊ฒฐ์ ํ ๊ฒฝ์ฐ ๊ธฐ๋ณธ ํด๋์ค์์ ํด๋น ๊ตฌํ์ ํธ์ถํด์ผ ํฉ๋๋ค. ์ด ๋ช
๋ น์ด ์ฌ์ฉ๋ฉ๋๋ค super.method name()
.
์๋ธ๋ฆฟ ์:
public class FirstHttpServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// Getting the parameter โsecretโ from request
String secret = request.getParameter("secret");
// Put parameter โsecretโ into Http-session
HttpSession session = request.getSession(true);
session.setAttribute("secret", secret);
// Print HTML as response for browser
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
try {
out.println("<html>");
out.println("<head>");
out.println("<title>Header</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1>Servlet example "+ secret +"</h1>");
out.println("</body>");
out.println("</html>");
} finally {
out.close();
}
}
}
1.3 ์๋น์ค(HttpServletRequest, HttpServletResponse) ๋ฉ์๋
์๋ธ๋ฆฟ์ ๊ด์ ์์ ํด๋ผ์ด์ธํธ ์์ฒญ ์ฒ๋ฆฌ๋ฅผ ์ดํด๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
๊ฐ ํด๋ผ์ด์ธํธ ์์ฒญ์ ๋ํด ์ปจํ
์ด๋(์น ์๋ฒ)๋ ๊ฐ์ฒด๋ฅผ ์์ฑํ HttpServletRequest
๋ค์ HttpServletResponse
ํด๋น service(HttpServletRequest request, HttpServletResponse response)
์๋ธ๋ฆฟ์์ ๋ฉ์๋๋ฅผ ํธ์ถํฉ๋๋ค. ์ด๋ฌํ ๊ฐ์ฒด๋ ๋ฉ์๋๊ฐ ํ์ํ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๊ณ request
์์
๊ฒฐ๊ณผ๋ฅผ ์ ๋ฃ์ ์ ์๋๋ก ์ ๋ฌ๋ฉ๋๋ค response
.
์ด ๋ฉ์๋์๋ service()
๊ธฐ๋ณธ ๊ตฌํ์ด ์์ต๋๋ค. ์ฌ์ ์ํ์ง ์์ผ๋ฉด ์คํ๋ฉ๋๋ค. ๊ทธ๊ฒ์ด ๊ทธ๊ฐ ํ๋ ์ผ์
๋๋ค.
๋ฉ์๋๋ service()
์์ฒญ(GET, POST, ...)์์ HTTP ๋ฉ์๋ ์ ํ์ ๊ฒฐ์ ํ๊ณ ์์ฒญ์ ํด๋นํ๋ ๋ฉ์๋๋ฅผ ํธ์ถํฉ๋๋ค.
๋ฐฉ๋ฒ | ์ค๋ช | |
---|---|---|
1 | service(HttpRequest, HttpResponse) |
์๋ธ๋ฆฟ์ ๋ํ ๋ชจ๋ ์ ์์ฒญ์ ๋ํด ํธ์ถ๋จ |
2 | doGet(HttpRequest, HttpResponse) |
์๋ธ๋ฆฟ์ ๋ํ ๋ชจ๋ ์๋ก์ด GET ์์ฒญ์ ๋ํด ํธ์ถ๋จ |
์ผ | doPost(HttpRequest, HttpResponse) |
์๋ธ๋ฆฟ์ ๋ํ ๋ชจ๋ ์๋ก์ด POST ์์ฒญ์ ๋ํด ํธ์ถ๋จ |
4 | doHead(HttpRequest, HttpResponse) |
์๋ธ๋ฆฟ์ ๋ํ ๋ชจ๋ ์๋ก์ด HEAD ์์ฒญ์ ๋ํด ํธ์ถ๋จ |
5 | doDelete(HttpRequest, HttpResponse) |
์๋ธ๋ฆฟ์ ๋ํ ๋ชจ๋ ์๋ก์ด DELETE ์์ฒญ์ ๋ํด ํธ์ถ๋จ |
6 | doPut(HttpRequest, HttpResponse) |
์๋ธ๋ฆฟ์ ๋ํ ๋ชจ๋ ์ PUT ์์ฒญ์ ๋ํด ํธ์ถ๋จ |
ํด๋์ค์์ ํ๋์ ๋ฉ์๋๋ฅผ ์ฌ์ ์ํ๊ฑฐ๋ service()
๊ทธ๋๋ก ๋๊ณ ํ์์ ๋ฐ๋ผ ๋ฉ์๋ doGet()
, , ...๋ฅผ ์ฌ์ ์ํ ์ ์์ต๋๋ค.doPost()
GO TO FULL VERSION