HttpServletRequest 클래스에서 <form> 태그로 전송된 데이터를 받아오는 데 사용하는 메서드로는 표 6-4와 같은 것들이 있습니다. 이 중에서 가장 많이 사용되는 것이 getParameter() 메서드입니다. 만약 같은 name으로 여러 개의 값이 전송되었을 때는 배열 형태로 값을 반환하는 getParameterValues() 메서드를 사용합니다.

6.3.1 HttpServletRequest로 요청 처리 실습
이번에는 실제로 <form> 태그로 전송된 정보를 서블릿에서 받아 와서 출력하는 과정을 실습해 보겠다. 로그인창에서 ID와 비밀번호를 입력 받아 HttpServletRequest로 처리하는 간단한 프로그램이다.
1. 사용자 정보를 입력 받을 login.html을 생성.

2. 다음과 같이 login.html 파일을 작성. 로그인창에서 ID와 비밀번호를 입력 받은 후 서블릿으로 전송하는 내용임.


3. 요청을 받을 서블릿인 LoginServlet 클래스를 생성한다.

4. 다음과 같이 LoginServlet.java 코드를 작성한다. HttpServletRequest 클래스의 getParameter()메서드로 전송된 ID와 비밀번호를 받아 온다.

5. 브라우저에서 실행 ㄱㄱ

6. 텍스트 박스에 ID와 비밀번호를 입력한 후 로그인을 클릭하면 서블릿이 ID와 비밀번호를 콘솔에 출력한다.


단, 서블릿이 처리한 후의 응답 기능은 아직 구현하지 않았으므로 웹 브라우저에서는 아무것도 출력되지 않는다.

간단한 예제이지만 서블릿을 사용해 로그인을 요청하는 처리를 구현해 보았다.
6.3.2 여러 개의 값을 전송할 때의 요청 처리
이번에는 이 프로그램을 조금 더 발전시켜 보겠다. 하나의 name으로 여러 값을 서블릿으로 요청하는 방법이다. 예를 들어 로그인 후 수강할 과목을 요청하는 방법이다. 예를 들어 로그인 후 수강할 과목을 입력하되 한 번에 여러 과목을 입력해서 등록하는 예제이다. 그럼 서블릿에서는 각 과목에 대해 여러 개의 값을 처리해야할 것임.
1. 다음과 같이 input.html을 추가하고 InputSevlet 클래스를 새로 만든다.

2. input.html을 다음과 같이 작성한다. <input> 타입이 여러 개일 때는 체크박스(Checkbox)를 사용해서 값을 설정하는 것이 좋다. 체크박스의 name 속성 값은 모두 subject이므로 서블릿으로 전송할 때 배열로 전송된다.



3. InputServlet 클래스를 다음과 같이 작성한다. getParameterValues()를 이용해 input.html에서 체크박스의 name인 subject로 전송된 값들을 받아 와서 문자열 배열에 저장한다.


4. 브라우저에서 요청 ㄱㄱ

5. 체크박스에서 여러 개의 값에 체크한 후 전송을 클릭하면 콘솔에 해당 과목명이 출력된다.


6.3.3 getParameterNames() 메서드를 이용한 요청 처리
앞에서 사용자로부터 입력을 받아 로직을 처리하는 간단한 수강 신청 프로그램을 만들었다.
하지만 우리가 보통 온라인 쇼핑몰에 회원으로 가입하려면 입력해야 할 회원 정보는 이름, 주소, 전화번호, 결제정보 등 최소 10개 이상, 많으면 20개 정도 된다.
그럼 이 정보를 서블릿에서 getParameter() 메서드를 이용해서 처리하려면 각 매개변수를 모두 알아야 할거다.
이처럼 전송된 데이터가 많아 일일이 name의 값을 기억하기 힘들 때는 getParameterNames() 메서드를 이용하면 편리하다. 어떻게 사용하는지 지금부터 실습을 통해 알아봅시다.
1. InputServlet2 클래스 생성

2. 그리고 6.3.2절에서 이용했던 input.html을 다음과 같이 수정한다.

3. InputServlet2 클래스를 다음과 같이 작성한다. 전송되는 데이터가 많은 경우에는 getParameterNames()를 이용해 name 속성만 따로 구할 수 있다.


4. 브라우저에서 값을 입력하고 전송. getParameterNames()를 이용해 전송된 name과 값이 모두 출력되는 것을 확인.


'스프링 부트 > 자바 웹을 다루는 기술' 카테고리의 다른 글
| 6.5 웹 브라우저에서 서블릿으로 데이터 전송하기 (0) | 2024.01.17 |
|---|---|
| 6.4 서블릿의 응답 처리 방법 (0) | 2024.01.17 |
| 6.2 <form> 태그 이용해 서블릿에 요청하기 (1) | 2024.01.17 |
| 6.1 서블릿의 세 가지 기본 기능 (1) | 2024.01.17 |
| 5.6 애너테이션을 이용한 서블릿 매핑 (1) | 2024.01.17 |