웹 애플리케이션에서 클라이언트가 서버에 보내는 요청 정보를 담은 객체 또는 데이터 구조를 의미합니다.
Request
객체는 클라이언트가 서버에 요청한 내용(예: HTTP 메서드, URL, 헤더, 본문 데이터 등)을 포함하고 있으며, 서버가 이 요청을 처리할 때 필요한 모든 정보를 제공합니다.
1.흐름도
요청이오면 톰켓이 request pool에 HttpServletRequest 객체를 만들어주고 이 객체를 DispatcheServlet이 가지고있다.
DispatcherServlet은 이 HttpServletRequest 객체를 사용하여 요청의 정보를 읽고, 그에 따라 적절한 컨트롤러를 찾아서 요청을 처리하도록 합니다
이 request객체로 session에 접근도 가능하며
보통 응답할때 서버에 정보를 남기지 않을때 request객체에 담고 응답을해도 서버에 정보를 유지하고싶으면 session에 저장을 한다.

2. Request와 Session의 차이점
- Request 객체: 요청이 처리되는 동안만 존재하며, 요청이 완료되면 사라집니다. 따라서 request 객체에 저장된 데이터는 그 요청의 응답이 완료된 후에는 더 이상 사용할 수 없습니다. 응답할 때 서버에 상태 정보를 남기지 않고, 요청 처리에만 필요한 데이터를 저장하는 데 주로 사용됩니다.
- Session 객체: 세션은 클라이언트와 서버 간의 연속된 요청 간에 상태 정보를 유지하기 위해 사용됩니다. 서버는 클라이언트별로 고유한 세션을 유지하며, 세션에 저장된 데이터는 클라이언트의 여러 요청 사이에서 공유되고 지속됩니다. 예를 들어, 사용자가 로그인한 상태를 유지하거나, 장바구니의 상품 목록을 저장하는 데 사용됩니다.
@GetMapping("/board")
public String list(HttpServletRequest request) {
// model 이 Httpservletrequest이다.
List<Board> boardList = boardRepository.findAll();
request.setAttribute("models", boardList);
HttpSession session = request.getSession();
session.setAttribute("num", 1);
return "board/list";
}
Share article