반응형
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()를 사용해야 한다.
반응형
'Spring' 카테고리의 다른 글
[Spring] text 메시지 HTTP 바디에 담아 전송 및 읽기 (0) | 2023.09.12 |
---|---|
[Spring] 게시판 검색창 입력 후 페이징 처리시 유지 안되는 경우 해결방법(session 사용) (0) | 2023.08.28 |
[Spring] HTTP 요청 데이터 (GET, POST-HTML Form, HTTP message body) (0) | 2023.07.16 |
[Spring] HttpServletRequest의 기본 기능 header, start-line 정보 조회하기 (0) | 2023.07.12 |
[Spring] HttpServletRequest란 무엇인가? (2) | 2023.07.12 |