Когда я предоставляю динамическое имя флажка внутри цикла for, например
<input type="checkbox" name="<%=i%>" />
Как я могу получить значение в сервлете?
Три способа:
Просто повторите тот же цикл for в сервлете, что и в JSP (вы действительно знаете условия цикла), и выполните request.getParameter(i) на каждой итерации и, если необходимо, добавьте значение каждого параметра в List<String>, чтобы вы может легко обработать его потом.
request.getParameter(i)
List<String>
Префикс имени параметра определенной строкой, например, name="foo${i}", захватить все параметры с помощью request.getParameterMap(), выполнить цикл по нему и определить, если name.startsWith("foo"), и при необходимости собрать соответствующие значения в List<String>.
name="foo${i}"
request.getParameterMap()
name.startsWith("foo")
Просто присвойте всем флажкам одно и то же имя, но другое значение и возьмите отмеченные флажки с помощью request.getParameterValues("checkboxname");. Он вернет String[] со всеми значениями.
request.getParameterValues("checkboxname");
String[]
Кстати, путь 3 - нормальная практика.
Тем не менее, скриптлеты (эти <% %> вещи в вашем коде) указывают на плохие практики. Я бы посоветовал выбросить устаревшие книги / учебники по JSP / сервлетам, которые вы сейчас читаете, и перейти по следующим ссылкам, чтобы узнать, как все делать правильно:
<% %>