HttpServletRequest는 URL정보, 쿠키, 헤더, GET/POST로 전송한 값을 가져오는데 사용됩니다.
클라이언트로부터 요청이 들어오면 WAS (Web Application Server)는 HttpServletRequest, HttpServletResponse 객체를 생성하고, 요청정보에 있는 패스로 매핑된 서블릿에게 전달합니다.
이렇게 전달받은 내용들을 파라미터로 doGet, doPost등에 전달됩니다.
<form action="login" method="post">
<input type="text" name="username">
<input type="password" name="password">
<input type="submit" value="login">
<span class="error">${error}</span>
</form>
@WebServlet("/login")
public class LoginServlet extends HttpServlet {
@EJB
private UserService userService;
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String username = request.getParameter("username");
String password = request.getParameter("password");
User user = userService.find(username, password);
if (user != null) {
request.getSession().setAttribute("user", user);
response.sendRedirect("home");
}
else {
request.setAttribute("error", "Unknown user, please try again");
request.getRequestDispatcher("/login.jsp").forward(request, response);
}
}
}
WAS는 웹 브라우저로부터 Servlet요청을 받으면 요청할 때 가지고 있는 정보를 HttpServletRequest객체를 생성하여 저장합니다. 또한 웹 브라우저에게 응답을 보낼 때 사용하기 위하여 HttpServletResponse객체를 생성합니다.
생성된 HttpServletRequest와 HttpServletResponse객체를 서블릿에게 전달합니다.
HttpServletRequest
- http프로토콜의 request정보를 서블릿에게 전달하기 위한 목적으로 사용합니다.
- 헤더정보, 파라미터, 쿠키, url 또는 uri 등의 정보를 가지고있습니다.
- Spring에서는 @RequestBody를 통해 쉽게읽을 수 있지만 getBody를 통해 body의 스트림을 읽어 올 수 있습니다.
HttpServletResponse
- WAS는 요청한 클라이언트에게 응답을 보내기 위한 HttpServletResponse객체를 생성하여 서블릿에게 전달합니다.
- 서블릿은 해당 객체를 이용하여 content type, 응답코드, 응답 메시지 등을 전송합니다.
'Web' 카테고리의 다른 글
| JPA 기본키 생성 전략 (0) | 2021.10.31 |
|---|---|
| 아파치와 톰캣의 차이 (0) | 2020.11.01 |
| 프록시x게이트웨이x터널 (0) | 2020.09.25 |
| 상태코드 간략한 정리 (0) | 2020.09.24 |
| Request와 Response의 구성 (0) | 2020.09.23 |