본문 바로가기

Spring

[Spring] GET 쿼리 파라미터 조회하기

반응형

URL의 쿼리 파라미터로 데이터 전달하기

메시지 바디 없이, URL의 쿼리 파라미터를 사용해서 데이터를 전달하자.
예) 검색, 필터, 페이징등에서 많이 사용하는 방식

 

쿼리 파라미터는 URL에 다음과 같이 ? 를 시작으로 보낼 수 있다. 추가 파라미터는 & 로 구분하면 된다.

 

http://localhost:8080/request-param?username=kim&username=jung&age=30

 

IntelliJ에서 아래 코드를 입력해보자. 

 

RequestParamServlet

package hello.servlet.basic.request;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet(name = "requestParamServlet", urlPatterns = "/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");
        System.out.println();
        System.out.println("[단일 파라미터 조회]");
        String username = request.getParameter("username");
        System.out.println("request.getParameter(username) = " + username);
        String age = request.getParameter("age");
        System.out.println("request.getParameter(age) = " + age);
        System.out.println();
        System.out.println("[이름이 같은 복수 파라미터 조회]");
        System.out.println("request.getParameterValues(username)");
        String[] usernames = request.getParameterValues("username");
        for (String name : usernames) {
            System.out.println("username=" + name);
        }
        response.getWriter().write("ok");
    }
}

 

출력 결과

http://localhost:8080/request-param?username=kim&username=jung&age=30를 URL창에 입력하면 다음과 같은 결과값이 나온다. 

 

더보기

[전체 파라미터 조회] - start
username=kim
age=30
[전체 파라미터 조회] - end

[단일 파라미터 조회]
request.getParameter(username) = kim
request.getParameter(age) = 30

[이름이 같은 복수 파라미터 조회]
request.getParameterValues(username)
username=kim
username=jung

username이 kim과 jung으로 중복이다. 이런 경우가 많지는 않다. 

 

이름이 같은 복수 파라미터를 조회할 때는 request.getParameter() 대신 request.getParameterValues()를 사용해야 한다.

반응형