입력 데이터 여러 개를 1억개를 선언하려 한다.
이 input태그에 대한 이름을 1억개 각각을 지정할 셈인가?
input태그를 여러 개 선언하면 배열로 가게 된다.
대신 서블릿에서는 request.getParameter가 아닌 request.getParameterValues(”name”)을 통해 배열로 req로부터 input을 받는다.
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
**String[] num_ = request.getParameterValues("num");**
...
여기서 for문을 사용하여 input을 받아온 num_배열에 대한 각 원소에 action을 취해준다.
(여기선 총 합을 구하니 +=연산을 써준다)
주의해야할 점은 for문 안에서 선언을 해주면 선언을 여러번 해주는 것이 아니라 for문 안에서 지역변수 한 번만 선언한 뒤, action을 취해주는 것이다. 오히려 좋아
@WebServlet("/add")
public class Add2 extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
String[] num_ = request.getParameterValues("num");
int result = 0;
for(int i=0;i<num_.length;i++) {
int num = Integer.parseInt(num_[i]);
result+=num;
}
response.getWriter().printf("result is %d\\n", result);
}
}