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

 

전달 데이터 

 - username=hello

 - age = 20

 

메시지 바디 없이, URL의 쿼리 파라미터를 사용해서 데이터를 전달

 예) 검색, 필터, 페이징등에서 많이 사용하는 방식

 

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

- http://localhost:8080/request-param?username=hello&age=20

 

서버에서는 HttpServletRequest가 제공하는 다음 메서드를 통해 쿼리 파라미터를 편리하게 조회할 수 있다.

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

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

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

1. 전체 파라미터 조회

getParameterNames()을 asIterator를 통해 모두 조회하면서

출력하는것을 확인 할 수 있었다.

 

2. 단일 파라미터 조회

getParamete()에 매개변수로 파라미터이름을 주면 파라미터에대한 데이터를 반환한다.

 

3. 이름이 같은 복수 파라미터 조회

만일 이름이 같은 파라미터가 생길 경우 전체 파라미터를 조회하니 하나밖에 뱉지않았다.

이때 getParameterValues()를 사용하면 문자열 배열로 받을 수 있다는 사실을 알았다.

포이치문을 통해 출력해보았다.

 

복수파라미터에서 단일 파라미터 조회

getParameter()는 하나의 파라미터 이름에 대해서 단 하나의 값만 있을때 사용해야 한다.

중복일 때는 getParameterValues()를 사용해야한다.

+ Recent posts