눈이 녹으면 Spring-MVC 1월 23일 5회차

2023. 1. 23. 18:05·모각코
728x90

오늘 할 일

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()의 첫번째 값을 반환한다.

👉🏻중복으로 보내는 일은 거의 없다.

728x90

'모각코' 카테고리의 다른 글

눈이 녹으면 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
'모각코' 카테고리의 다른 글
  • 눈이 녹으면 Spring-MVC 1월 30일 7회차
  • 눈이 녹으면 Spring-MVC 1월 24일 6회차
  • 눈이 녹으면 Spring-MVC 1월 10일 4회차 모각코
  • 눈이 녹으면 Spring-MVC 1월 9일 3회차 모각코
Bello's
Bello's
개발하는 벨로
  • Bello's
    벨로의 개발일지
    Bello's
  • 전체
    오늘
    어제
    • 분류 전체보기 (199) N
      • 노예 일지 (7)
        • 스타트업 노예일지 (3)
      • CS 이론 (81)
        • 학과 수업 (4)
        • 알고리즘 (64)
        • 시스템 프로그래밍 (3)
        • 데이터 통신 (1)
        • 운영체제 (2)
        • 데이터베이스 (1)
      • project (3)
      • 나는 감자다. (4)
      • Spring (27)
      • 모각코 (45)
        • 절개와지조(모각코) (7)
        • 어쩌다보니 박준태가 조장이조 (11)
        • 어쩌다보니 박준태가 또 조장이조 (12)
      • LikeLion🦁 (20)
      • 캘리포니아 감자 (4)
      • OpenSource Contribute (1)
      • 우아한테크벨로 (1) N
        • 프리코스 회고록 (6)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    회고록
    자바
    어렵다
    감자
    Spring
    누적합
    티스토리챌린지
    절개와지조
    모각코
    타임리프
    백준
    BFS
    JPA
    뛰슈
    DFS
    프리코스
    오블완
    나는 감자
    8기
    그래프 순회
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
Bello's
눈이 녹으면 Spring-MVC 1월 23일 5회차
상단으로

티스토리툴바