1. 개요

클라이언트에서 서버로 데이터를 전송하는 방식 중 하나로 쿼리 파라미터를 사용한다.

주로 검색, 필터, 페이징 등의 기능에서 활용된다.

쿼리 파라미터의 형식

2. 파라미터 조회 방법

  1. 파라미터 전체 조회

    request.getParameterNames().asIterator()
        .forEachRemaining(paramName -> System.out.println(paramName + ": " + request.getParameter(paramName)));
    
    출력 예시
    
    username = kim
    age = 27
    
  2. 단일 파라미터 조회

    String username = request.getParameter("username");
    String age = request.getParameter("age");
    System.out.println("username = " + username);
    System.out.println("age = " + age);
    
    출력 예시
    
    username = kim
    age = 27
    
  3. 이름이 같은 복수 파라미터 조회

    URL 예시: 
    <http://localhost:8080/request-param?username=kim&username=choe&age=27>
    
    String[] usernames = request.getParameterValues("username");
    for (String name : usernames) {
        System.out.println("name = " + name);
    
    출력 예시
    
    name = kim
    name = choe
    

3. 코드 전체 예제

@WebServlet("/request-param")
public class RequestParamServlet extends HttpServlet {

    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // 파라미터 전체 조회
        System.out.println("[전체 파라미터 조회] - start");
        request.getParameterNames().asIterator()
            .forEachRemaining(paramName -> System.out.println(paramName + ": " + request.getParameter(paramName)));
        System.out.println("[전체 파라미터 조회] - end\\n");

        // 단일 파라미터 조회
        System.out.println("[단일 파라미터 조회] - start");
        String username = request.getParameter("username");
        String age = request.getParameter("age");
        System.out.println("username = " + username);
        System.out.println("age = " + age);
        System.out.println("[단일 파라미터 조회] - end\\n");

        // 이름이 같은 복수 파라미터 조회
        System.out.println("[이름이 같은 복수 파라미터 조회] - start");
        String[] usernames = request.getParameterValues("username");
        for (String name : usernames) {
            System.out.println("name = " + name);
        }
        System.out.println("[이름이 같은 복수 파라미터 조회] - end");

        response.getWriter().write("OK");
    }
}