3.1 HttpServletResponse ํด๋์ค
์๋ธ๋ฆฟ ๋ฉ์๋๋ฅผ ํธ์ถํ ํ service()
์น ์ปจํ
์ด๋๋ HttpServletResponse
. ๋ฐ๋ผ์ ํด๋ผ์ด์ธํธ์ ๋ํ ์๋ต์ ์ด๋ค ์์ผ๋ก๋ ์ํฅ์ ๋ฏธ์น๋ ค๋ฉด ์ด ๊ฐ์ฒด๋ฅผ ์์ ํด์ผ ํฉ๋๋ค.
์๋ฒ ์๋ต์ ์ธ ๋ถ๋ถ์ผ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค.
- ์ํ ํ์์ค(์: 200 OK)
- ํค๋
- ์๋ต ๋ณธ๋ฌธ
๊ทธ๋ฆฌ๊ณ ์์
๋ฐฉ์ HttpServletResponse
๋ 3๊ฐ์ง๋ก ๋๋๋ค? ๊ฑฐ์:
ํ๋ ์์ | ์ค๋ช | |
---|---|---|
1 | void setStatus(int sc) |
์๋ต ์ํ ์ฝ๋๋ฅผ ์ค์ ํฉ๋๋ค. |
2 | void sendError(int sc) |
์ง์ ๋ ์ฝ๋๋ฅผ ์ฌ์ฉํ์ฌ ํด๋ผ์ด์ธํธ์ ์ค๋ฅ๋ฅผ ๋ณด๋ ๋๋ค. |
์ผ | void sendError(int sc, String msg) |
์ง์ ๋ ์ฝ๋ ๋ฐ ๋ฉ์์ง์ ํจ๊ป ์ค๋ฅ๋ฅผ ํด๋ผ์ด์ธํธ์ ๋ณด๋ ๋๋ค. |
4 | void addHeader(String name, String value) |
์๋ต ํค๋ ๋ชฉ๋ก์ ํค๋๋ฅผ ์ถ๊ฐํฉ๋๋ค. |
5 | void setHeader(String name, String value) |
์๋ต ํค๋ ๋ชฉ๋ก์ ํค๋๋ฅผ ๋ณ๊ฒฝํฉ๋๋ค. |
6 | boolean containsHeader(String name) |
ํค๋๊ฐ ์ด๋ฏธ ์กด์ฌํ๋์ง ํ์ธํฉ๋๋ค. |
7 | void addCookie(Cookie cookie) |
์๋ต์ ์ฟ ํค๋ฅผ ์ถ๊ฐํฉ๋๋ค. |
8 | void sendRedirect(String location) |
ํด๋ผ์ด์ธํธ๋ฅผ ๋ค๋ฅธ URL๋ก ๋ฆฌ๋๋ ์ ํฉ๋๋ค. |
9 | String encodeRedirectURL(String url) |
sendRedirect ๋ฉ์๋์์ ์ฌ์ฉํ๊ธฐ ์ํด ์ง์ ๋ URL์ ์ธ์ฝ๋ฉํฉ๋๋ค. |
10 | String encodeURL(String url) |
์ธ์ ID๋ฅผ ํฌํจํ์ฌ ์ง์ ๋ URL์ ์ธ์ฝ๋ฉํฉ๋๋ค. |
์ดํ๋ | void setContentType(String type) |
๊ฒฐ๊ณผ์ MimeType์ ์ค์ ํฉ๋๋ค. |
12 | void setContentLength(int len) |
์๋ต ๋ณธ๋ฌธ์ ๊ธธ์ด๋ฅผ ์ค์ ํฉ๋๋ค. |
13 | void setCharacterEncoding(String charset) |
์๋ต ์ธ์ฝ๋ฉ ์ธํธ๋ฅผ ์ค์ ํฉ๋๋ค. |
14 | void setBufferSize(int size) |
์๋ต ๋ณธ๋ฌธ์ ๋ฒํผ ํฌ๊ธฐ๋ฅผ ์ค์ ํฉ๋๋ค. |
15 | boolean isCommitted() |
๋ฒํผ๊ฐ ์ด๋ฏธ ์๋ต์ ๊ธฐ๋ก๋์๋์ง ํ์ธํฉ๋๋ค. |
16 | void flushBuffer() |
๋ฒํผ์ ๋ด์ฉ์ ์๋ต์ ์๋๋ค. |
17 | void reset() |
๋ฒํผ, ํค๋ ๋ฐ ์๋ต ์ฝ๋์ ์ ์ฅ๋ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ค์ ํฉ๋๋ค. |
18 | void resetBuffer() |
์๋ต ๋ฒํผ๋ฅผ ์ง์๋๋ค. |
์ฌ๊ธฐ์ ๋ฐฉ๋ฒ์ ๋งค์ฐ ์ฌ์ํฉ๋๋ค. ํ์ง๋ง ์๋์์ ๋ช ๊ฐ์ง ์ค์ํ ์ฌํญ์ ์๋ ค๋๋ฆฌ๊ฒ ์ต๋๋ค.
๋ฒํผ . ์๋ธ๋ฆฟ์ ์๋ต์ ์ฌ์ฉ์์๊ฒ ์ฆ์ ์ ์ก๋์ง ์๊ณ ๋ฒํผ์ ๊ธฐ๋ก๋ฉ๋๋ค. ๋ฐ๋ผ์ ์ผ๋ถ ๋จ๊ณ์์(์๋ฅผ ๋ค์ด ์ค๋ฅ๊ฐ ๋ฐ์ํ ๊ฒฝ์ฐ) ๋ฒํผ์ ๊ธฐ๋ก๋ ๋ชจ๋ ํญ๋ชฉ์ ์ฌ์ค์ (์ง์ฐ๊ธฐ)ํ ์ ์์ต๋๋ค. reset() ๋ฉ์๋๋ฅผ ํธ์ถํ์ฌ ๋ฒํผ์ ๋ด์ฉ๋ฟ ์๋๋ผ ์๋ต ์ฝ๋๊ฐ ํฌํจ๋ ํค๋๋ ์ง์ธ ์ ์์ต๋๋ค.
3.2 ๋ฆฌ๋๋ ์ ()
๋ ๋ฒ์งธ ์ค์ํ ์ ์ ๋ฆฌ๋๋ ์
์
๋๋ค. ์๋ธ๋ฆฟ์ด ํด๋ผ์ด์ธํธ๋ฅผ ๋ค๋ฅธ URL๋ก ๋ฆฌ๋๋ ์
ํ๊ธฐ๋ก ๊ฒฐ์ ํ๋ฉด ์ด๋ป๊ฒ๋ ์ด URL์ ํด๋ผ์ด์ธํธ๋ก ๋ณด๋ด์ผ ํฉ๋๋ค. ์ด๊ฒ์ ๋ฅผ ์ฌ์ฉํ์ฌ ์ํํ ์ ์์ต๋๋ค sendRedirect
.
๊ทธ๋ฌ๋ ์ค์ํ ๋์์ค๊ฐ ์์ต๋๋ค. URI๋ ์๋ต ๋ณธ๋ฌธ์ ํ์ฉ๋ ๊ฒ๋ณด๋ค ๋ ๋์ ๋ฒ์์ ๋ฌธ์๋ฅผ ํฌํจํ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ๋ฉ์๋๋ฅผ ํธ์ถํ๊ธฐ ์ ์ ๋จผ์ URL์ ์ ํจํ ๋ฌธ์ ์งํฉ์ผ๋ก ์ธ์ฝ๋ฉํด์ผ ํฉ๋๋ค sendRedirect()
. ์ด๋ฅผ ์ํ ํน๋ณํ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค encodeRedirectURL(String url)
. ๊ทธ๊ฑธ ์จ.
๋ฆฌ๋๋ ์ ์:
public class RedirectServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws Exception {
String newUrl = "http://google.com?q=Learn to google!";
String redirectUrl = response.encodeRedirectURL(newUrl);
response.sendRedirect(redirectUrl);
}
}
3.3 getWriter() ๋ฉ์๋
์ด์ ํ
์คํธ๋ฅผ ์๋ต ๋ณธ๋ฌธ์ผ๋ก ์์ฑํ๋ ๋ฐฉ๋ฒ์ ๋ฐฐ์๋๋ค. ์ด๋ฅผ ์ํด ํด๋์ค์๋ ๊ฐ์ฒด๋ฅผ ๋ฐํํ๋ HttpServletResponse
ํน์ ๋ฉ์๋๊ฐ ์์ต๋๋ค . ์์ด๋ฒ๋ฆฐ ์ฌ๋์ด ์๋ค๋ฉด ์ด๊ฒ์ ์ด๋ฆ์ด ์๋ ํ๋ ์ ํ์
๋๋ค .getWriter()
PrintStream
System.out
์ผ๋ถ ํ ์คํธ๋ฅผ ์๋ธ๋ฆฟ ์๋ต์ผ๋ก ์์ฑํ๋ ค๋ฉด ๋ค์์ด ํ์ํฉ๋๋ค.
- ๋ฅผ ํธ์ถํ์ฌ PrintStream ๊ฐ์ฒด๋ฅผ ๊ฐ์ ธ์ต๋๋ค
response.getWriter()
. - PrintStream ๊ฐ์ฒด์ ํ์ํ๋ค๊ณ ์๊ฐํ๋ ๋ชจ๋ ๊ฒ์ ์๋๋ค(๋ชจ๋ ๋ฐ์ดํฐ๋ ๋ฒํผ์ ๊ธฐ๋ก๋จ).
close()
PrintStream์์ ๋ฉ์๋๋ฅผ ํธ์ถํ์ฌ ๋ฒํผ๋ฅผ ์ฌ์ฉ์์๊ฒ ๋ณด๋ ๋๋ค .
a
๋ ๊ฐ์ ์ซ์๋ฅผ ๋ํ๊ณ b
๊ทธ ๊ฒฐ๊ณผ๋ฅผ ์ฌ์ฉ์์๊ฒ ๋ฐํํ๋ ์๋ธ๋ฆฟ์ ์์ฑํด ๋ณด๊ฒ ์ต๋๋ค .
public class CalculatorServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws Exception {
// Getting the parameter โaโ and โbโ from request
String a = request.getParameter("a");
String b = request.getParameter("b");
try {
// Convert strings to numbers and calculate sum
int sum = Integer.parseInt(a) + Integer.parseInt(b);
// Print HTML as a response for browser
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<head> <title> CalculatorServlet </title> </head>");
out.println("<body>");
out.println("<h1> Sum == " + sum + "</h1>");
out.println("</body>");
out.println("</html>");
} finally {
out.close();
}
}
}