[Web] getParameterNames() 메서드를 이용한 요청 처리

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

아래는 기존의 input.html이다. 다만, action=input2로 바뀌었다. 

<!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>

 

위에는 최대 4개의 정보만 처리되지만 수십, 수백개의 요청이 오면 각 매개변수를 확인해야할 필요가 생긴다. 이 때 getParametervalues를 이용할 수 있다. 

String getParameter(String name) name의 값을 알고 있을 때 그리고 name에 대한 전송된 값을 받아오는 데 사용한다. 
String[] getParameterValues(String name) 같은 name에 대해 여러 개의 값을 얻을 때 사용한다. 
Enumeration getParametegerNames() name 값을 모를 때 사용한다. 
@WebServlet("/input2")
public class InputServlet2 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");
    Enumeration<String> enu = request.getParameterNames(); //1
    while(enu.hasMoreElements()){ //2
      String name = enu.nextElement();
      String[] values = request.getParameterValues(name);
      for(String value : values){ //3
        System.out.println("name=" + name + ",value=" + value);
      }
    }
  }

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

 

Enumeration은 객체를 하나씩 처리할 수 있도록 도와주는 인터페이스다.

 

1. 전송된 name 속성들만 Enumeration 타입으로 받아온다.

2. 이를 하나씩 가져온다. 

3. 향상된 for문으로 하나씩 출력한다. 

 

이를 통해 전달된 모든 객체의 name을 알 수 있다.