[Web] 여러 개의 값을 전송할 때의 요청 처리

2024. 8. 5. 23:03자바 웹 개발/서블릿 기초

//input.html
<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <title>여러 가지 input 타입 표시 창</title>
</head>
<body>
    <form name="frmInput" method="get" action="input2">
        아이디 : <input type="text" name="user_id"><br>
        비밀번호 : <input type="password" name="user_pw"><br>
        <input type="checkbox" name="subject" value="java" checked>자바
        <input type="checkbox" name="subject" value="C언어">C언어
        <input type="checkbox" name="subject" value="JSP">JSP
        <input type="checkbox" name="subject" value="안드로이드">안드로이드
        <input type="submit" value="로그인">
        <input type="reset" value="다시입력">
    </form>
</body>
</html>

 

input 타입이 여러 개일 때는 체크박스를 사용하는 경우가 많다. 체크박스의 name 속성은 모두 subject이므로 서블릿으로 전송될 때에는 배열로 전송된다. 

//inputSerlvet

@WebServlet("/input")
public class InputServlet extends HttpServlet {
  @Override
  public void init() throws ServletException {

    System.out.println("init 메서드 호출");
  }

  @Override
  protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    request.setCharacterEncoding("utf-8");
    String user_id = request.getParameter("user_id");
    String user_pw = request.getParameter("user_pw");
    System.out.println("아이디:" + user_id);
    System.out.println("비밀번호:" + user_pw);
    String[] subject = request.getParameterValues("subject"); //1
    for(String str:subject){ //2
      System.out.println("선택한 과목: " + str);
    }
  }

  @Override
  public void destroy() {
    System.out.println("destory 메서드 호출");
  }
}

 

 

 

String getParameter(String name) name의 값을 알고 있을 때 그리고 name에 대한 전송된 값을 받아오는 데 사용한다. 
String[] getParameterValues(String name) 같은 name에 대해 여러 개의 값을 얻을 때 사용한다. 
Enumeration getParametegerNames() name 값을 모를 때 사용한다. 

 

LoginServlet에서 추가된 내용만 살펴보자. 

 

1. String[] subject에 name이 "subject"인 전송된 값을 배열에 저장한다. 

2. 이를 향상된 for문을 통해 출력한다.