Servlet API의 일부, 클라이언트에서 서버로 들어오는 HTTP요청 정보를 캡슐화하여 제공하는 인터페이스
웹 애플리케이션에서 HTTP 요청을 처리할때 오청의 헤더, 파라미터, 메서드(GET, POST 등), 쿠키, 세션정보를 확인할 수 있도록 다양한 메서드를 제공
HttpServletRequest 주요 메서드와 속성
1. 요청 메서드 확인
- String getMethod()
클라이언트가 사용한 HTTP메서드 (GET, POST, PUT 등)를 반환한다
2. 요청 URL과 URI
- String getRequestURI()
요청된 리소스의 경로를 반환한다 (예 : /example/path) - StringBuffer getRequestURL()
요청된 전체 URL을 반환한다 (예 : http://example.com/example/path)
3. 요청 파라미터
- String getParameter(String name)
클라이언트가 보낸 특정 요청 파라미터의 값을 반환 - Enumeration<String> getParameterNames()
모든 요청 파라미터 이름을 반환한다 - Map<String, String[]> getParameterMap()
모든 요청 파라미터를 맵 형태로 반환한다
4. 헤더 정보
- String getHeader(String name)
요청 헤더의 값을 반환한다 - Enumeration<String> getHeaderNames()
모든 요청 헤더의 이름을 반환한다
5. 요청 속성
- Object getAttribute(String name)
요청 속성을 가져온다 - void setAttribute(String name, Object o)
요청 속성을 설정한다
6. 세션 관리
- HttpSession getSession()
현재요청에 연관된 세션을 반환한다 - HttpSession getSession(boolean create)
세션을 생성하거나 기존 세션을 반환한다
7. 쿠키
- Cookie[] getCookies()
요청에 포함된 모든 쿠키 정보를 배열로 반환한다
8. 클라이언트 정보
- String getRemoteAddr()
요청을 보낸 클라이언트의 IP주소를 반환한다 - String getRemoteHost()
요청을 보낸 클라이언트의 호스트 이름을 반환한다 - int getRemotePort()
클라이언트가 요청을 보낸 포트를 반환한다
9. 콘텐츠 정보
- int getContentLength()
요청 본문의 길이를 반환한다 - String getContentType()
요청 본문의 MIME 타입을 반환한다 - ServletInputStream getInputStream()
요청 본문 데이터를 읽기 위한 스트림을 반환한다
10. 요청 속성 및 경로 정보
- String getContextPath()
애플리케이션의 컨텍스트 경로를 반환한다 - String getServletPath()
현재 요청을 처리하는 서블릿 경로를 반환한다 - String getPathInfo()
요청 URL의 추가 경로 정보를 반환한다
예제
GET 요청 처리 예제 :
@WebServlet("/example")
public class ExampleServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
// 요청 정보 가져오기
String method = request.getMethod();
String uri = request.getRequestURI();
String queryString = request.getQueryString();
String paramValue = request.getParameter("name");
// 응답
response.getWriter().println("Method: " + method);
response.getWriter().println("URI: " + uri);
response.getWriter().println("Query: " + queryString);
response.getWriter().println("Parameter 'name': " + paramValue);
}
}
POST 요청 처리 예제 :
@WebServlet("/submit")
public class SubmitServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException {
String contentType = request.getContentType();
int contentLength = request.getContentLength();
// 본문 읽기
BufferedReader reader = request.getReader();
StringBuilder body = new StringBuilder();
String line;
while ((line = reader.readLine()) != null) {
body.append(line);
}
// 응답
response.getWriter().println("Content Type: " + contentType);
response.getWriter().println("Content Length: " + contentLength);
response.getWriter().println("Body: " + body.toString());
}
}
활용
1. 클라이언트 정보 추출
- 사용자의 IP주소, 브라우저 종류, 언어 등을 확인할 수 있다
2. RESTful 요청 처리
- 다양한 HTTP 메서드(GET, POST 등)를 구분하여 처리 가능
3. 세션 및 상태 관리
- 세션 객체를 사용하여 클라이언트의 상태를 저장하고 관리
4. 파일 업로드
- 요청 본문을 통해 클라이언트에서 보낸 파일 데이터를 처리
요약
- HttpServletRequest는 HTTP 요청 정보를 다루는 인터페이스입니다
- 요청의 URL, 파라미터, 헤더, 본문, 세션 등 다양한 정보를 제공
- 클라이언트와 서버 간 상호작용에서 매우 중요한 역할을 담당
- 다양한 메서드를 통해 요청 데이터를 세밀하게 제어하고 활용 가능
출처 : ChatGPT
'BE > Java' 카테고리의 다른 글
[Java] Mockito (1) | 2025.01.21 |
---|---|
[Java] Servlet (2) | 2025.01.10 |
[Java] Jackson 라이브러리 (0) | 2025.01.07 |
[JPA] N + 1 문제 (0) | 2025.01.06 |
[Java] Generic 제너릭 (0) | 2025.01.04 |