1. HttpServletRequest란?
HttpServletRequest 객체
: 클라이언트가 보낸 요청에 대한 정보를 담고 있는 객체
즉, 사용자가 웹 애플리케이션에 요청을 보낼 때 발생하는 모든 정보를 서버에서 받아올 수 있게 해줍니다.
이 객체는 사용자가 요청한 URL, 파라미터, 헤더 정보, 세션 정보 등 여러 가지 중요한 정보를 담고 있습니다.
특징:
- 클라이언트 요청 정보를 서버에 전달.
- 요청 파라미터(예: 폼 데이터, URL 파라미터 등), 헤더(브라우저 정보 등), 세션 정보(로그인 상태 확인) 등을 포함.
- 클라이언트가 보낸 요청에 대한 모든 세부 정보를 조회할 수 있습니다.
HttpServletRequest를 사용하는 상황
- 요청 파라미터 가져오기: 사용자가 입력한 폼 데이터나 URL에 포함된 쿼리 스트링 파라미터를 가져올 때 사용됩니다.
- 세션 정보 확인: 세션을 통해 사용자의 로그인 상태나 이전의 요청을 추적할 때 유용합니다.
- 요청 헤더 정보 확인: 요청에 포함된 헤더 정보를 통해 사용자의 브라우저 정보나 접속 위치 등을 확인할 수 있습니다.
예시:
아래의 로그인 처리 코드에서 사용자가 입력한 아이디(id)와 비밀번호(pwd)를 가져오는 부분을 살펴보면, 이때 HttpServletRequest 객체를 사용하여 데이터를 추출합니다.
@PostMapping("/login")
public String login(String nickname, String id, String pwd, String toURL, boolean rememberId,
HttpServletRequest request, HttpServletResponse response) throws Exception {
System.out.println("nickname=" + nickname);
System.out.println("id=" + id);
System.out.println("pwd=" + pwd);
// 세션 객체를 얻기 위해 HttpServletRequest 사용
HttpSession session = request.getSession();
session.setAttribute("id", id);
session.setAttribute("nickname", nickname);
}
이 코드에서 request.getSession()을 사용하여 현재 요청에 해당하는 세션 객체를 가져오고, 세션에 사용자 정보를 저장합니다. 또한, URL 쿼리 스트링이나 폼 데이터에서 전달된 파라미터를 처리하는 데 사용될 수 있습니다.
2. HttpServletResponse란?
HttpServletResponse 객체
: 서버가 클라이언트로 응답을 보내기 위해 사용하는 객체
클라이언트에게 HTML 페이지, JSON 데이터, 이미지, 파일 등을 전송할 때 이 객체를 사용합니다.
또한, 응답 헤더를 설정하거나 쿠키를 추가하는 등의 작업도 이 객체를 통해 처리됩니다.
특징:
- 응답 데이터를 클라이언트에 전송하는 데 사용.
- 응답 헤더를 설정하거나, 쿠키, 리다이렉션 등을 처리할 수 있습니다.
- 클라이언트가 요청한 페이지나 데이터를 서버에서 처리한 후 결과를 클라이언트에 반환합니다.
HttpServletResponse를 사용하는 상황
- HTML 응답 보내기: 서버가 처리한 결과를 HTML 형태로 클라이언트에게 보내는 데 사용됩니다.
- 리다이렉션 처리: 서버에서 다른 페이지로 이동할 때 사용됩니다.
- 쿠키 설정: 클라이언트에게 쿠키를 설정하여, 브라우저에서 사용자 정보를 저장하고 유지할 수 있게 합니다.
예시:
위의 코드에서는 쿠키 설정과 리다이렉션을 위해 HttpServletResponse 객체를 사용합니다. 사용자가 로그인할 때 아이디와 닉네임을 쿠키에 저장하고, 로그인 처리 후 홈 페이지로 리다이렉트합니다.
@PostMapping("/login")
public String login(String nickname, String id, String pwd, String toURL, boolean rememberId,
HttpServletRequest request, HttpServletResponse response) throws Exception {
System.out.println("nickname=" + nickname);
System.out.println("id=" + id);
System.out.println("pwd=" + pwd);
// 로그인 성공 후 쿠키를 설정
if (rememberId) {
Cookie idCookie = new Cookie("id", id); // 아이디 쿠키 생성
Cookie nicknameCookie = new Cookie("nickname", nickname); // 닉네임 쿠키 생성
idCookie.setMaxAge(60 * 60 * 24 * 7); // 쿠키의 만료 시간을 7일로 설정
nicknameCookie.setMaxAge(60 * 60 * 24 * 7); // 닉네임 쿠키 만료 시간 설정
response.addCookie(idCookie); // 응답에 쿠키 추가
response.addCookie(nicknameCookie); // 응답에 닉네임 쿠키 추가
}
// 로그인 후 홈 페이지로 리다이렉트
toURL = (toURL == null || toURL.equals("")) ? "/" : toURL;
return "redirect:" + toURL;
}
이 예시에서 response.addCookie(idCookie)와 response.addCookie(nicknameCookie)는 쿠키를 설정하여 클라이언트의 브라우저에 정보를 저장하게 합니다. 그리고 redirect:/는 로그인 후 사용자를 홈 페이지로 리다이렉트하는 데 사용됩니다.
3. HttpServletRequest와 HttpServletResponse: 차이점 요약
구분 | HttpServletRequest | HttpServletResponse |
목적 | 클라이언트가 보낸 요청에 대한 정보를 처리 | 서버가 클라이언트에게 응답을 보내는 데 사용 |
주요 사용 | 요청 파라미터 가져오기, 세션 정보 확인, 요청 헤더 처리 | HTML 응답 전송, 리다이렉션, 쿠키 설정, 응답 헤더 처리 |
상호작용 | 클라이언트에서 서버로의 요청 처리 | 서버에서 클라이언트로의 응답 처리 |
4. 어떤 상황에서 HttpServletRequest와 HttpServletResponse를 사용할까?
- HttpServletRequest는 사용자 요청에 대한 정보를 처리할 때 사용됩니다. 예를 들어, 사용자가 로그인 폼을 제출하거나 검색을 요청할 때, 그 요청에 포함된 파라미터나 세션 정보를 가져올 때 사용됩니다.
- HttpServletResponse는 서버가 사용자에게 응답을 보낼 때 사용됩니다. 예를 들어, 로그인 후 쿠키를 설정하거나, 처리된 데이터를 클라이언트로 전달할 때, 또는 리다이렉션을 처리할 때 사용됩니다.
결론
HttpServletRequest와 HttpServletResponse는 웹 애플리케이션에서 요청과 응답을 처리하는 데 매우 중요한 역할을 합니다.
각각 클라이언트에서 서버로 전달되는 요청과 서버에서 클라이언트로 전달되는 응답을 처리하며, 이를 통해 서버와 클라이언트 간의 데이터 흐름을 원활하게 합니다. 위
코드 예시에서 보았듯이, 요청 정보 확인과 응답 처리는 각각의 객체를 통해 이루어지며, 웹 애플리케이션의 핵심적인 작업을 처리하는 데 필수적인 도구들입니다.
'패스트캠퍼스 데브캠프 : 남궁성의 백엔드 개발 3기' 카테고리의 다른 글
SQL 퀴즈 풀기 (0) | 2025.02.25 |
---|---|
Spring MVC | 쿠키(cookie)와 세션(session)차이점과 예시 (0) | 2025.02.25 |
Spring MVC | GET과 POST 차이점과 예시 (0) | 2025.02.25 |
AWS 서버 구축하기 (1) | 2025.02.24 |
비기너반 마무리 과제 : 내가 생각하는 객체 지향의 특징 (0) | 2025.02.13 |