ํ์ต ๋ ธํธ ์์ฝ
1. Servlet
โข
์ ์: Servlet์ Java๋ฅผ ์ฌ์ฉํ์ฌ ์น ์๋ฒ์์ ์คํ๋๋ ์๋ฒ ์ธก ํ๋ก๊ทธ๋จ์ผ๋ก, ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ์ฒ๋ฆฌํ๊ณ ์๋ต์ ์์ฑํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
โข
์์ฒญ ์ฒ๋ฆฌ:
โฆ
HttpServletRequest: ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์ ๋ณด๋ด๋ ์์ฒญ ์ ๋ณด๋ฅผ ๋ด๊ณ ์๋ ๊ฐ์ฒด์
๋๋ค. ์์ฒญ์ URL, ํ๋ผ๋ฏธํฐ, ํค๋ ๋ฑ์ ํฌํจํฉ๋๋ค.
โข
์๋ต ์ฒ๋ฆฌ:
โฆ
HttpServletResponse: ์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ์ ๋ณด๋ด๋ ์๋ต ์ ๋ณด๋ฅผ ๋ด๊ณ ์๋ ๊ฐ์ฒด์
๋๋ค. ์๋ต์ ์ํ ์ฝ๋, ์ฝํ
์ธ ํ์
, ์ค์ ๋ฐ์ดํฐ ๋ฑ์ ์ค์ ํ ์ ์์ต๋๋ค.
โข
ํ์ด์ง ์ด๋ ๋ฐฉ์:
โฆ
forward: ์๋ฒ ๋ด์์ ์์ฒญ์ ๋ค๋ฅธ ์๋ธ๋ฆฟ์ด๋ JSP๋ก ์ ๋ฌํฉ๋๋ค. ํด๋ผ์ด์ธํธ๋ URL์ด ๋ณ๊ฒฝ๋์ง ์๊ณ , ์์ฒญ ๋ฐ ์๋ต ๊ฐ์ฒด๋ฅผ ๊ณต์ ํฉ๋๋ค.
RequestDispatcher dispatcher = request.getRequestDispatcher("nextPage.jsp");
dispatcher.forward(request, response);
Java
๋ณต์ฌ
โฆ
redirect: ํด๋ผ์ด์ธํธ์๊ฒ ๋ค๋ฅธ URL๋ก ์ด๋ํ๋ผ๋ ๋ช
๋ น์ ๋ณด๋
๋๋ค. URL์ด ๋ณ๊ฒฝ๋๋ฉฐ ์๋ก์ด ์์ฒญ์ด ๋ฐ์ํฉ๋๋ค.
response.sendRedirect("nextPage.jsp");
Java
๋ณต์ฌ
โข
ํ์ผ ์
๋ก๋: Multipart/form-data ํ์์ ์ฌ์ฉํ์ฌ ํด๋ผ์ด์ธํธ๊ฐ ํ์ผ์ ์๋ฒ์ ์
๋ก๋ํ ์ ์๋๋ก ์ฒ๋ฆฌํฉ๋๋ค.
โข
ํ์ผ ๋ค์ด๋ก๋: ํด๋ผ์ด์ธํธ๊ฐ ์๋ฒ์ ์ ์ฅ๋ ํ์ผ์ ๋ค์ด๋ก๋ํ ์ ์๋๋ก ์๋ต์ ์ค์ ํฉ๋๋ค.
โข
์ธ๋ค์ผ ์ด๋ฏธ์ง: ์๋ณธ ์ด๋ฏธ์ง๋ฅผ ๋ฏธ๋ฆฌ๋ณด๊ธฐ ์ฉ์ผ๋ก ์ถ์ํ์ฌ ํ์ํ๋ ์ด๋ฏธ์ง์
๋๋ค.
2. JSP
โข
์ ์: JSP (JavaServer Pages)๋ HTML๊ณผ Java ์ฝ๋๋ฅผ ๊ฒฐํฉํ์ฌ ๋์ ์ธ ์น ํ์ด์ง๋ฅผ ์์ฑํ๋ ๊ธฐ์ ์
๋๋ค.
โข
JSP ํ๊ทธ:
โฆ
์คํฌ๋ฆฝํธ ํ๊ทธ: Java ์ฝ๋๋ฅผ JSP ํ์ด์ง์ ์ฝ์
ํฉ๋๋ค.
<%
String message = "Hello, World!";
%>
Plain Text
๋ณต์ฌ
โฆ
๋๋ ํฐ๋ธ ํ๊ทธ: JSP ํ์ด์ง์ ์ค์ ์ ์ ์ํฉ๋๋ค.
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
Plain Text
๋ณต์ฌ
โฆ
์ก์
ํ๊ทธ: JSP ๋ด์์ ๋ค๋ฅธ ์์์ ํธ์ถํฉ๋๋ค.
<jsp:include page="header.jsp" />
Plain Text
๋ณต์ฌ
โข
๋ด์ฅ ๊ฐ์ฒด: JSP์์ ์๋์ผ๋ก ์์ฑ๋๋ ๊ฐ์ฒด๋ก, ์์ฒญ ๋ฐ ์ธ์
๊ด๋ จ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. ์ฃผ์ ๋ด์ฅ ๊ฐ์ฒด๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
โฆ
request: ํด๋ผ์ด์ธํธ ์์ฒญ ์ ๋ณด๋ฅผ ๋ด๊ณ ์๋ ๊ฐ์ฒด.
โฆ
response: ์๋ฒ๊ฐ ํด๋ผ์ด์ธํธ์๊ฒ ์๋ตํ๋ ๊ฐ์ฒด.
โฆ
session: ํด๋ผ์ด์ธํธ์ ์๋ฒ ๊ฐ์ ์ธ์
์ ๋ณด๋ฅผ ์ ์งํ๋ ๊ฐ์ฒด.
โฆ
application: ์น ์ ํ๋ฆฌ์ผ์ด์
์ ์ ์ญ ์ ๋ณด๋ฅผ ๋ด๊ณ ์๋ ๊ฐ์ฒด.
์ดํดํ์ง ๋ชปํ ๋ด์ฉ
1. ํ์ด์ง ์ด๋ ๋ฐฉ์
โข
Forward vs Redirect:
โฆ
Forward๋ ์๋ฒ ๋ด๋ถ์์ ์์ฒญ์ ์ ๋ฌํ๋ฏ๋ก URL์ด ๋ณ๊ฒฝ๋์ง ์์ต๋๋ค. ๊ฐ์ ์์ฒญ๊ณผ ์๋ต ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ ๊ณต์ ๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
โฆ
Redirect๋ ํด๋ผ์ด์ธํธ์๊ฒ ๋ค๋ฅธ URL๋ก ์ด๋ํ๋ผ๋ ์ง์๋ฅผ ํ๋ฉฐ, ์๋ก์ด ์์ฒญ์ด ๋ฐ์ํฉ๋๋ค. ๋ฐ๋ผ์ URL์ด ๋ณ๊ฒฝ๋๊ณ ์ด์ ์์ฒญ์ ๋ฐ์ดํฐ๋ ์ ๋ฌ๋์ง ์์ต๋๋ค.
2. ๋ด์ฅ ๊ฐ์ฒด
โข
๋ด์ฅ ๊ฐ์ฒด๋ JSP ํ์ด์ง์์ ์์ฃผ ์ฌ์ฉ๋๋ ๊ฐ์ฒด๋ค์
๋๋ค. ๊ฐ ๊ฐ์ฒด์ ์ฉ๋๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
๋ด์ฅ ๊ฐ์ฒด | ์ค๋ช
|
request | ํด๋ผ์ด์ธํธ์ ์์ฒญ ์ ๋ณด |
response | ํด๋ผ์ด์ธํธ์ ๋ํ ์๋ต ์ ๋ณด |
session | ์ฌ์ฉ์์ ์ธ์
์ ๋ณด |
application | ์ ํ๋ฆฌ์ผ์ด์
์ ์ญ ์ ๋ณด |
๋ ๊ถ๊ธํ ๋ด์ฉ
ํ์ผ ๋ค์ด๋ก๋๋ฅผ ์ฌ๋ฌ ํ์ผ์ ์์ถ ๋ค์ด๋ก๋ํ๊ธฐ
์ฌ๋ฌ ํ์ผ์ ๋ค์ด๋ก๋ํ ๋, ํ์ผ์ ZIP ํ์์ผ๋ก ์์ถํ ํ ํด๋ผ์ด์ธํธ์ ์ ์กํ ์ ์์ต๋๋ค. ์์ ์ฝ๋๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
import java.io.*;
import java.util.zip.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class ZipDownloadServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// ํ์ผ ๋ชฉ๋ก
String[] files = {"file1.txt", "file2.txt", "file3.txt"};
// ZIP ํ์ผ ์ด๋ฆ
String zipFileName = "download.zip";
// ์๋ต ํค๋ ์ค์
response.setContentType("application/zip");
response.setHeader("Content-Disposition", "attachment; filename=\\"" + zipFileName + "\\"");
// ZIP ์ถ๋ ฅ ์คํธ๋ฆผ ์์ฑ
try (ZipOutputStream zos = new ZipOutputStream(response.getOutputStream())) {
for (String file : files) {
File inputFile = new File(file);
try (FileInputStream fis = new FileInputStream(inputFile)) {
// ZIP ํญ๋ชฉ ์ถ๊ฐ
ZipEntry zipEntry = new ZipEntry(inputFile.getName());
zos.putNextEntry(zipEntry);
// ํ์ผ ๋ฐ์ดํฐ๋ฅผ ZIP์ ์ฐ๊ธฐ
byte[] buffer = new byte[1024];
int length;
while ((length = fis.read(buffer)) >= 0) {
zos.write(buffer, 0, length);
}
zos.closeEntry();
}
}
}
}
}
Java
๋ณต์ฌ
์ด ์ฝ๋๋ ZipOutputStream์ ์ฌ์ฉํ์ฌ ์ฌ๋ฌ ํ์ผ์ ํ๋์ ZIP ํ์ผ๋ก ์์ถํ ํ ํด๋ผ์ด์ธํธ์ ์ ์กํฉ๋๋ค.
์ ์ฒด ๋ด์ฉ ์ ๋ฆฌ ํ
์ฃผ์ | ๋ด์ฉ |
Servlet | ์น ์๋ฒ์์ ์คํ๋๋ ์๋ฒ ์ธก ํ๋ก๊ทธ๋จ |
์์ฒญ ์ฒ๋ฆฌ | HttpServletRequest - ํด๋ผ์ด์ธํธ ์์ฒญ ์ ๋ณด ๋ด๊ธฐ |
์๋ต ์ฒ๋ฆฌ | HttpServletResponse - ์๋ฒ ์๋ต ์ ๋ณด ๋ด๊ธฐ |
ํ์ด์ง ์ด๋ ๋ฐฉ์ | forward - ๋ด๋ถ ์์ฒญ ์ ๋ฌ, redirect - ํด๋ผ์ด์ธํธ ์ด๋ ์ง์ |
ํ์ผ ์
๋ก๋ | Multipart/form-data ํ์ ์ฌ์ฉ |
ํ์ผ ๋ค์ด๋ก๋ | ์๋ฒ์ ํ์ผ์ ํด๋ผ์ด์ธํธ์ ๋ค์ด๋ก๋ |
์ธ๋ค์ผ ์ด๋ฏธ์ง | ์๋ณธ ์ด๋ฏธ์ง๋ฅผ ์ถ์ํ์ฌ ๋ฏธ๋ฆฌ๋ณด๊ธฐ ์ฉ์ผ๋ก ํ์ |
JSP | HTML๊ณผ Java ๊ฒฐํฉํ์ฌ ๋์ ์น ํ์ด์ง ์์ฑ |
JSP ํ๊ทธ | ์คํฌ๋ฆฝํธ, ๋๋ ํฐ๋ธ, ์ก์
ํ๊ทธ |
๋ด์ฅ ๊ฐ์ฒด | ์๋ ์์ฑ๋๋ ์์ฒญ ๋ฐ ์ธ์
๊ด๋ จ ๊ฐ์ฒด |
์ดํดํ์ง ๋ชปํ ๋ด์ฉ | ํ์ด์ง ์ด๋ ๋ฐฉ์ ์ค๋ช
, ๋ด์ฅ ๊ฐ์ฒด ์ฉ๋ ์ค๋ช
|
๋ ๊ถ๊ธํ ๋ด์ฉ | ํ์ผ ๋ค์ด๋ก๋๋ฅผ ์ฌ๋ฌ ํ์ผ์ ZIP์ผ๋ก ์์ถํ๋ ๋ฐฉ๋ฒ |
์ด ํ์ต ๋
ธํธ๊ฐ ๋์์ด ๋๊ธธ ๋ฐ๋๋๋ค! ์ถ๊ฐ ์ง๋ฌธ์ด ์๋ค๋ฉด ์ธ์ ๋ ์ง ๋ง์ํด ์ฃผ์ธ์.