아래 느낌 처럼 HttpServletRequest 덕분에 형식이 정해지니까 메서드로 필요한 쿼리스트링 파라미터들 다 가져올 수가 있네!! 너무 유용하다!!
/**
 * 1. 파라미터 전송 기능
 * <http://localhost:8080/request-param?username=kim&age=20&username=Rho>
 */
@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("[이름이 같은 복수 파라미터 조회]");
        String[] usernames = request.getParameterValues("username");
        for (String s : usernames) {
            System.out.println("s = " + s);
        }
    }
}
// <http://localhost:8080/request-param?username=kim&age=20&username=Rho> 출력 결과
[전체 파라미터 조회] - start
username: kim
age: 20
[전체 파라미터 조회] - end
[단일 파라미터 조회]
username = kim
age = 20
[이름이 같은 복수 파라미터 조회]  // 이름 중복되니 value로 뽑는구만~ 근데 파라미터는 중복 안되게끔 이야기 하자~
s = kim
s = Rho
아래 사진처럼 HTML form을 이용한 POST은 메시지 바디에 쿼리스트링 형식으로 보낸다!(GET은 URL!) 그래서 똑같이 조회가 가능하다~ 즉, request.getParameter(s) 은 GET URL 방식, POST HTML form(message body) 형식 둘 다 지원! 가져오는 코드는 위와 똑같겟져~
참고로 POST HTML form방식은 헤더에 content type이 반드시 존재해야한다! → 메시지 바디가 존재하니! → 그 내용은 application/x-www-form-unlecorded 라고 한다!

@WebServlet(name = "requestBodyStringServlet", urlPatterns = "/request-body-string")
public class RequestBodyStringServlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        ServletInputStream inputStream = request.getInputStream();// 바이트 코드로 바로 얻어옴
        String messageBody = StreamUtils.copyToString(inputStream, StandardCharsets.UTF_8);// 자바에서 제공하는 바이트 코드 to string util 클래스
                                                                                // 인코딩 방식 제공해줘야함! UTF_8
        System.out.println("messageBody = " + messageBody);
    }
}
근데 위에 같은 코드는 그냥 메시지 바디에 텍스트 형식으로 있을 경우에 가능한거고 실제로는 JSON, XML 형식으로 많이 요청옴!!!!!
그렇다면 JSON 변환해주는 게 필요하겠죠? 자연스럽게 DTO 개념이 나오네~~