오늘 할 일
GET 쿼리 파라미터를 이용해서 서버에게 데이터 전송하는 법익히기
다음 데이터를 클라이언트에서 서버로 전송해보자.
전달 데이터
- username=hello
- age=20
메시지 바디 없이, URL의 쿼리 파라미터를 사용해서 데이터를 전달하자.
예)검색, 필터, 페이징 등에서 많이 사용하는 방식
쿼리 파라미터는 URL에 다음과 같이 ‘?’를 시작으로 보낼 수 있다. 추가 파라미터는 ‘&’로 구분하면 된다.
<http://localhost:8080/request-param?username=hello&age=20>
서버에서는 HttpServletRequest가 제공하는 다음 메서드를 통해 쿼리 파라미터를 편리하게 조회할 수 있다.
쿼리 파라미터 조회 메서드
String username = request.getParameter("username");//단일 파라미터 조회
Eunmeration<String> parameterNames = request.getParameterNames();//파라미터 이름들 모두 조회
Map<String, String[]> parameterMap = request.getParameterMap();//파라미터를 Map으로 조회
String[] usernames = request.getParameterValues("username");//복수 파라미터 조회
packagehello.servlet.basic.request;
importjavax.servlet.ServletException;
importjavax.servlet.annotation.WebServlet;
importjavax.servlet.http.HttpServlet;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
importjava.io.IOException;
/**
* 1.파라 전송 기능
* <http://localhost:8080/request-param?username=hello&age=20>
*
*/
@WebServlet(name="requestParamServlet",urlPatterns = "/request-param")
public classRequestParamServletextendsHttpServlet {
@Override
protected void service(HttpServletRequest request, HttpServletResponse response)throwsServletException, IOException {
// System.out.println("RequestParamServlet.service");
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");
String age = request.getParameter("age");
System.out.println("username = " + username);
System.out.println("age = " + age);
System.out.println();
그런데 이 방법에서 만약 중복으로 같은 파라미터 이름에 다른 값이 들어오면,
아래와 같이 배열로 받아서 이를 조회한다. 👉🏻여기서 발전된 for문을 자동완성하는 iter 명령어를 사용하면 편하다.
System.out.println("[이름이 같은 복수 파라미터 조회]");
String[] usernames = request.getParameterValues("username");
for(String name : usernames) {
System.out.println("usernames = " + name);
}
결과는 아래와 같이 나온다.
복수 파라미터에서 단일 파라미터 조회
username=hello&username=kim과 같이 파라미터 이름은 하나인데 값이 중복이면 어떻게 되나?
request.getParameter()는 하나의 파라미터 이름에 대해서 단 하나의 값만 있을 때 사용해야 한다.
지금처럼 중복일 때는 request.getParameterValues()를 사용해야 한다.
참고로 이렇게 중복일 때 request.getParameter()를 사용하면 request.getParameterValues()의 첫번째 값을 반환한다.
👉🏻중복으로 보내는 일은 거의 없다.
전달 데이터
- username=hello
- age=20
메시지 바디 없이, URL의 쿼리 파라미터를 사용해서 데이터를 전달하자.
예)검색, 필터, 페이징 등에서 많이 사용하는 방식
쿼리 파라미터는 URL에 다음과 같이 ‘?’를 시작으로 보낼 수 있다. 추가 파라미터는 ‘&’로 구분하면 된다.
<http://localhost:8080/request-param?username=hello&age=20>
서버에서는 HttpServletRequest가 제공하는 다음 메서드를 통해 쿼리 파라미터를 편리하게 조회할 수 있다.
쿼리 파라미터 조회 메서드
String username = request.getParameter("username");//단일 파라미터 조회
Eunmeration<String> parameterNames = request.getParameterNames();//파라미터 이름들 모두 조회
Map<String, String[]> parameterMap = request.getParameterMap();//파라미터를 Map으로 조회
String[] usernames = request.getParameterValues("username");//복수 파라미터 조회
packagehello.servlet.basic.request;
importjavax.servlet.ServletException;
importjavax.servlet.annotation.WebServlet;
importjavax.servlet.http.HttpServlet;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
importjava.io.IOException;
/**
* 1.파라 전송 기능
* <http://localhost:8080/request-param?username=hello&age=20>
*
*/
@WebServlet(name="requestParamServlet",urlPatterns = "/request-param")
public classRequestParamServletextendsHttpServlet {
@Override
protected void service(HttpServletRequest request, HttpServletResponse response)throwsServletException, IOException {
// System.out.println("RequestParamServlet.service");
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");
String age = request.getParameter("age");
System.out.println("username = " + username);
System.out.println("age = " + age);
System.out.println();
그런데 이 방법에서 만약 중복으로 같은 파라미터 이름에 다른 값이 들어오면,
아래와 같이 배열로 받아서 이를 조회한다. 👉🏻여기서 발전된 for문을 자동완성하는 iter 명령어를 사용하면 편하다.
System.out.println("[이름이 같은 복수 파라미터 조회]");
String[] usernames = request.getParameterValues("username");
for(String name : usernames) {
System.out.println("usernames = " + name);
}
복수 파라미터에서 단일 파라미터 조회
username=hello&username=kim과 같이 파라미터 이름은 하나인데 값이 중복이면 어떻게 되나?
request.getParameter()는 하나의 파라미터 이름에 대해서 단 하나의 값만 있을 때 사용해야 한다.
지금처럼 중복일 때는 request.getParameterValues()를 사용해야 한다.
참고로 이렇게 중복일 때 request.getParameter()를 사용하면 request.getParameterValues()의 첫번째 값을 반환한다.
👉🏻중복으로 보내는 일은 거의 없다.
'모각코' 카테고리의 다른 글
| 눈이 녹으면 Spring-MVC 1월 30일 7회차 (2) | 2023.01.30 |
|---|---|
| 눈이 녹으면 Spring-MVC 1월 24일 6회차 (1) | 2023.01.24 |
| 눈이 녹으면 Spring-MVC 1월 10일 4회차 모각코 (2) | 2023.01.10 |
| 눈이 녹으면 Spring-MVC 1월 9일 3회차 모각코 (0) | 2023.01.09 |
| 눈이 녹으면 Spring - MVC 1월 3일 2회차 모각코 (1) | 2023.01.03 |