/* ์ด ๊ธ์ ๊น์ํ๋์ ๊ฐ์๋ฅผ ๋ณด๊ณ ์ ๋ฆฌํ๋ ค๊ณ ์์ฑํ ๊ธ์ ๋๋ค.
๊ฐ์ธ์ ์ธ ๊ณต๋ถ๋ฅผ ์ํด ์ฌ๋ฆฌ๋ ๊ธ์ด๋ฏ๋ก ์ค๊ฐ ์ค๊ฐ ์ฝ๋๋ ์๋ต๋์์ต๋๋ค. */
์คํ๋ง MVC 1ํธ - ๋ฐฑ์๋ ์น ๊ฐ๋ฐ ํต์ฌ ๊ธฐ์ | ๊น์ํ - ์ธํ๋ฐ
๊น์ํ | ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฐํ ๋ ํ์ํ ๋ชจ๋ ์น ๊ธฐ์ ์ ๊ธฐ์ด๋ถํฐ ์ดํดํ๊ณ , ์์ฑํ ์ ์์ต๋๋ค. ์คํ๋ง MVC์ ํต์ฌ ์๋ฆฌ์ ๊ตฌ์กฐ๋ฅผ ์ดํดํ๊ณ , ๋ ๊น์ด์๋ ๋ฐฑ์๋ ๊ฐ๋ฐ์๋ก ์ฑ์ฅํ ์ ์์ต
www.inflearn.com
1. HttpServletRequest ๊ฐ์
1) HttpServletRequest์ ์ญํ
: ์๋ธ๋ฆฟ์ ๊ฐ๋ฐ์๊ฐ HTTP ์์ฒญ ๋ฉ์์ง๋ฅผ ํธ๋ฆฌํ๊ฒ ์ฌ์ฉํ ์ ์๋๋ก ๊ฐ๋ฐ์ ๋์ ์ HTTP ์์ฒญ ๋ฉ์์ง๋ฅผ ํ์ฑํ๋ค.
๊ทธ๋ฆฌ๊ณ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ 'HttpServletRequest' ๊ฐ์ฒด์ ๋ด์์ ์ ๊ณตํ๋ค
2) HTTP ์์ฒญ ๋ฉ์์ง
- START LINE : HTTP ๋ฉ์๋, URL, ์ฟผ๋ฆฌ ์คํธ๋ง, ์คํค๋ง, ํ๋กํ ์ฝ
- HEADER : ํค๋ ์กฐํ
- BODY : form ํ๋ผ๋ฏธํฐ ํ์ ์กฐํ, mesaage body ๋ฐ์ดํฐ ์ง์ ์กฐํ
3) ๊ทธ ์ธ ๋ถ๊ฐ ๊ธฐ๋ฅ
โ ์์ ์ ์ฅ์ ๊ธฐ๋ฅ
: ํด๋น HTTP ์์ฒญ์ด ์์๋ถํฐ ๋๋ ๋ ๊น์ง ์ ์ง๋๋ ์์ ์ ์ฅ์ ๊ธฐ๋ฅ
- ์ ์ฅ : request.setAttribute(name, value)
- ์กฐํ : request.getAttribute(name)
โก ์ธ์ ๊ด๋ฆฌ ๊ธฐ๋ฅ
: request.getSession(create : ture)
2. HttpServletRequest ๊ธฐ๋ณธ ์ฌ์ฉ๋ฒ
1) Start Line ์ ๋ณด ์กฐํ
@WebServlet(name = "requestHeaderServlet", urlPatterns = "/request-header")
public class RequestHeaderServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
printStartLine(request);// Start Line ์ ๋ณด ๋ถ๋ฌ์ค๊ธฐ
}
private void printStartLine(HttpServletRequest request) {
System.out.println("--- REQUEST-LINE - start ---");
System.out.println("request.getMethod() = " + request.getMethod()); //GET
System.out.println("request.getProtocol() = " + request.getProtocol()); //HTTP/1.1
System.out.println("request.getScheme() = " + request.getScheme()); //http
System.out.println("request.getRequestURL() = " + request.getRequestURL()); // http://localhost:8080/request-header
System.out.println("request.getRequestURI() = " + request.getRequestURI()); // /request-header
System.out.println("request.getQueryString() = " + request.getQueryString()); //username=hi
System.out.println("request.isSecure() = " + request.isSecure()); //https ์ฌ์ฉ์ ๋ฌด
System.out.println("--- REQUEST-LINE - end ---");
System.out.println();
}
}
2) Header ์ ๋ณด ์กฐํ
private void printHeaders(HttpServletRequest request) {
System.out.println("--- Headers - start ---");
request.getHeaderNames().asIterator()
.forEachRemaining(headerName -> System.out.println(headerName + ": " + headerName));
System.out.println("--- Headers - end ---");
System.out.println();
}
3) Header ํธ์ ์กฐํ
private void printHeaderUtils(HttpServletRequest request) {
System.out.println("--- Header ํธ์ ์กฐํ start ---");
System.out.println("[Host ํธ์ ์กฐํ]");
System.out.println("request.getServerName() = " + request.getServerName()); //Host ํค๋
System.out.println("request.getServerPort() = " + request.getServerPort()); //Host ํค๋
System.out.println();
System.out.println("[Accept-Language ํธ์ ์กฐํ]");
request.getLocales().asIterator()
.forEachRemaining(locale -> System.out.println("locale = " + locale));
System.out.println("request.getLocale() = " + request.getLocale());
System.out.println();
System.out.println("[cookie ํธ์ ์กฐํ]");
if (request.getCookies() != null) {
for (Cookie cookie : request.getCookies()) {
System.out.println(cookie.getName() + ": " + cookie.getValue());
}
}
System.out.println();
System.out.println("[Content ํธ์ ์กฐํ]");
System.out.println("request.getContentType() = " + request.getContentType());
System.out.println("request.getContentLength() = " + request.getContentLength());
System.out.println("request.getCharacterEncoding() = " + request.getCharacterEncoding());
System.out.println("--- Header ํธ์ ์กฐํ end ---");
System.out.println();
}
- locale์ ์น ๋ธ๋ผ์ฐ์ ์ ์ค์ ๋ ๊ตญ๊ฐ์ ์ธ์ด ์ด๋ฆ์ ์์๋ด๋ ๊ฒ์ ๋งํ๋ฉฐ,
request.getLocale()์ ์ฐ์ ์์๊ฐ ๊ฐ์ฅ ๋์๊ฒ์ ๋ํ๋ธ๋ค.
4) ๊ธฐํ ์ ๋ณด
private void printEtc(HttpServletRequest request) {
System.out.println("--- ๊ธฐํ ์กฐํ start ---");
System.out.println("[Remote ์ ๋ณด]");
System.out.println("request.getRemoteHost() = " + request.getRemoteHost());
System.out.println("request.getRemoteAddr() = " + request.getRemoteAddr());
System.out.println("request.getRemotePort() = " + request.getRemotePort());
System.out.println();
System.out.println("[Local ์ ๋ณด]");
System.out.println("request.getLocalName() = " + request.getLocalName());
System.out.println("request.getLocalAddr() = " + request.getLocalAddr());
System.out.println("request.getLocalPort() = " + request.getLocalPort());
System.out.println("--- ๊ธฐํ ์กฐํ end ---");
System.out.println();
}
- ๊ธฐํ์ ๋ณด๋ HTTP ๋ฉ์์ง์ ์ ๋ณด๋ ์๋๋ค.