본문 바로가기
Spring Tutorial

[스프링 MVC 11] 서블릿: HTTP 요청 데이터 - GET 쿼리 파라미터

by 미소5 2023. 7. 20.

다음 데이터를 클라이언트에서 서버로 전송해보자.

  • username=hello
  • age=20

  • GET방식(메시지 바디 없이, URL의 쿼리 파라미터를 사용)으로 전송해보자.
  • 쿼리 파라미터는 URL에 다음과 같이 ? 를 시작으로 보낼 수 있다. 추가 파라미터는 & 로 구분한다.
    • http://localhost:8080/request-param?username=hello&age=20

 


 

  • 서버에서는 HttpServletRequest 가 제공하는 다음 메서드를 통해 쿼리 파라미터를 편리하게 조회할 수 있다.
String username = request.getParameter("username"); //단일 파라미터 조회

Enumeration<String> parameterNames = request.getParameterNames(); //파라미터 이름들 모두 조회

Map<String, String[]> parameterMap = request.getParameterMap(); //파라미터를 Map으로 조회

String[] usernames = request.getParameterValues("username"); //복수 파라미터 조회

@WebServlet(name="requestParamServlet", urlPatterns = "/request-param")
public class RequestParamServlet extends HttpServlet {

    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("---전체 파라미터 조회-start---");

        /*Enumeration<String> parameterNames = request.getParameterNames();  //모든 요청 파라미터 이름들 조회 가능
        while (parameterNames.hasMoreElements()) {
            String paramName = parameterNames.nextElement();
            System.out.println(paramName + "=" + request.getParameter(paramName));
        }*/
        req.getParameterNames().asIterator()
                .forEachRemaining(paramName -> System.out.println(paramName + "=" + req.getParameter(paramName)));

        System.out.println("---전체 파라미터 조회-end ---");
        System.out.println();


        System.out.println("---단일 파라미터 조회---");
        String username = req.getParameter("username");
        String age = req.getParameter("age");
        System.out.println("username = " + username);    //hello
        System.out.println("age = " + age);     //20
        System.out.println();

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

        resp.getWriter().write("ok"); //웹브라우저에 출력
    }
}

 

실행 - 동일 파라미터 전송

 

  • 복수 파라미터에서 단일 파라미터 조회
    • username=hello&username=kim과 같이 파라미터 이름은 하나인데, 값이 중복이면 어떻게 될까? request.getParameter()는 하나의 파라미터 이름에 대해서 단 하나의 값만 있을 때 사용해야 한다. 지금처럼 중복일 때는 request.getParameterValues() 를 사용해야 한다.
    • (참고: 이렇게 중복일 때 request.getParameter() 를 사용하면 request.getParameterValues() 의 첫 번째 값을 반환)

 



[스프링 MVC 10] 서블릿: HTTP 요청 데이터 (tistory.com)

 

[스프링 MVC 10] 서블릿: HTTP 요청 데이터

HTTP 요청 데이터를 어떻게 조회하는지 알아보자! HTTP 요청 메시지를 통해 클라이언트에서 서버로 데이터를 전달하는 방법 (3가지) GET - 쿼리 파라미터 /url?username=hello&age=20 메시지 바디 없이, URL의

joly156.tistory.com


 

728x90
반응형