BE/Java

[Java] HttpServletRequest

baek-dev 2025. 1. 8. 18:40

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