minOS

서블릿 - HTTP 요청 데이터 : GET 쿼리 파라미터 본문

TIL/김영한의 스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술

서블릿 - HTTP 요청 데이터 : GET 쿼리 파라미터

minOE 2024. 6. 19. 15:26
728x90

GET 쿼리 파라미터

메시지 바디 없이, URL의 쿼리 파라미터를 사용해서 데이터를 전달
쿼리파라미터 : URL에 아래와 같이 `?` 를 시작으로 보낼 수 있다.추가 파라미터는 `&` 로구분하면된다.
http://localhost:8080/request-param?username=hello&age=20​

@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 name =  request.getParameter("username");
        System.out.println("name = " + name);
        String age = request.getParameter("age");
        System.out.println("age = " + age);
        System.out.println();​


출력 결과


동일  파라미터 전송 (username 값이 두개이다.)
http://localhost:8080/request-param?username=hello&age=20&username=hello2​

getParametervalues() 사용

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

 

출력 결과

 

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

728x90