Spring Boot & Thymeleaf 시리즈는 김영한 님의 "스프링 MVC 2편 - 백엔드 웹 개발 활용 기술" 강의를 정리한 글입니다. 글에 첨부된 사진은 해당 강의의 강의 자료에서 캡쳐한 것입니다. 제 Github에만 올려뒀다가, 정보 공유와 강의 홍보(?)를 위해 블로그에도 업로드합니다.
스프링 MVC 2편 - 백엔드 웹 개발 활용 기술 - 인프런 | 강의
웹 애플리케이션 개발에 필요한 모든 웹 기술을 기초부터 이해하고, 완성할 수 있습니다. MVC 2편에서는 MVC 1편의 핵심 원리와 구조 위에 실무 웹 개발에 필요한 모든 활용 기술들을 학습할 수 있
www.inflearn.com
마크다운 형식으로 작성한 글을 블로그에 다시 올리는 거라 가독성이 많이 떨어집니다. 조금더 편하게 보시려면 아래의 Github repository에서 보시면 됩니다.
GitHub - Kloong1/TIL: Today I Learned.
Today I Learned. Contribute to Kloong1/TIL development by creating an account on GitHub.
github.com
HTTP 요청 데이터 - GET & 쿼리 파라미터
다음 데이터를 클라이언트에서 서버로 전송해보자.
- username=hello
- age=20
이 데이터를 메시지 바디 없이, URL의 쿼리 파라미터를 사용해서 데이터를 전달하자. 쿼리 파라미터 방식은 검색, 필터, 페이징등에서 많이 사용한다.
쿼리 파라미터는 URL에 다음과 같이 ? 를 시작으로 보낼 수 있다. 추가 파라미터는 & 로 구분하면 된다.http://localhost:8080/request-param?username=hello&age=20
서버에서는 HttpServletRequest 가 제공하는 다음 메서드를 통해 쿼리 파라미터를 편리하게 조회할 수 있다.
HttpServletRequest로 쿼리 파라미터 조회
package com.kloong.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;
import java.util.Enumeration;
/**
* 1. 쿼리 파라미터 조회 기능
* http://localhost:8080/request-param?username=hello&age=20 요청에 대한 파라미터 조회
* 2. 동일한 이름의 쿼리 파라미터 조회
* username 파라미터가 여러개 들어온 요청에 대해서 파라미터 조회
* http://localhost:8080/request-param?username=hello&username=kim&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("[단일 파라미터 조회] - start");
String username = request.getParameter("username");
String age = request.getParameter("age");
System.out.println("username = " + username);
System.out.println("age = " + age);
System.out.println("[단일 파라미터 조회] - end");
System.out.println();
System.out.println("[이름이 같은 복수 파라미터 조회] - start");
String[] usernames = request.getParameterValues("username");
for (String uname : usernames)
System.out.println("username = " + uname);
System.out.println("[이름이 같은 복수 파라미터 조회] - end");
response.getWriter().write("OK");
}
}
request.getParameterNames()
: 모든 쿼리 파라미터의 이름 조회request.getParameter()
: 특정 쿼리 파라미터의 값 조회request.getParameterValues()
: 이름이 같은 파라미터가 여러개 존재하는 경우, 해당 파라미터의 모든 값 조회
복수 파라미터에서 단일 파라미터 조회
<URL>?username=hello&username=kim
과 같이 동일한 이름을 가진 파라미터가 여러개 존재할 수도 있다. 이런 경우에는 request.getParameter()
를 사용해선 안된다. request.getParameter()
는 하나의 파라미터 이름에 대해서 하나의 값만 있을 때 사용해야 한다.
위의 상황처럼 동일한 이름의 파라미터가 여러개 존재할 때는 request.getParameterValues()
를 사용해서 해당 파라미터의 값을 전부 조회할 수 있다.
참고: 이렇게 동일한 이름을 가진 파라미터가 여러개 존재할 때
request.getParameter()
를 사용하면request.getParameterValues()
의 첫 번째 값을 반환한다.
'Spring > Spring MVC' 카테고리의 다른 글
[Spring MVC] 11. HTTP 요청 데이터 - 메시지 바디 (0) | 2022.11.23 |
---|---|
[Spring MVC] 10. HTTP 요청 데이터 - POST & HTML Form (0) | 2022.11.23 |
[Spring MVC] 8. HTTP 요청 데이터 - 개요 (0) | 2022.11.23 |
[Spring MVC] 7. HttpServletRequest (0) | 2022.11.23 |
[Spring MVC] 6. 서블릿 등록과 사용(Spring Boot 환경) (0) | 2022.11.23 |
댓글