4

## 4.6_(3.6) Получение отправленных форм

Станицы JSP могут получать отправленные данные, например, через параметры или в виде отправленных форм, так же, как это происходит в сервлете. Для этого внутри страницы jsp доступен объект request, который позволяет получить данные посредством следующих методов:

· `getParameter``(String param)`: возвращает значение определенного параметра, название которого передается в метод. Если указанного параметра в запросе нет, то возвращается значение null.

· `getParameterValues``(String param)`: возвращает массив значений, который представляет определенный параметр. Если указанного параметра в запросе нет, то возвращается значение null.

### Получение данных из строки запроса

Например, определим в проекте файл postuser.jsp, который будет получать отправленные в запросе данные:

`<!DOCTYPE html>`

`<html>`

`<head>`

`<meta` `charset="UTF-8"` `/>`

`<title>User Info</title>`

`</head>`

`<body>`

`<p>Name: <%= request.getParameter("name") %></p>`

`<p>Age: <%= request.getParameter("age") %></p>`

`` `</body>`

`</html>`

В данном случае мы получаем два параметра: name и age.

Запустим приложение и передадим странице данные через строку запроса postuser.jsp?name=Bob&age=29:

Если для определенного параметра не передается значение, то страница получает значение null:

### Получение данных из форм

Подобным образом можно получать данные из отправленных форм. Например, определим в проекте файл index.html с формой ввода:

`<!DOCTYPE html>`

`<html>`

`<head>`

`<meta` `charset="UTF-8">`

`<title>User Form</title>`

`</head>`

`<body>`

`<form` `action="postuser.jsp">`

`Name: <input` `name="name"` `/>`

`<br><br>`

`Age: <input` `name="age"` `type="number"` `min=1` `/>`

`<br></br>`

`<input` `type="submit"` `value="Submit"` `/>`

`</form>`

`</body>`

`</html>`

В данном случае форма предназначена для ввода имени и возаста пользователя. И по нажатию на кнопку данные формы уходят странице postuser.jsp.

Таким образом, после ввода данных и их отправке на странице index.html эти данные будут получены скриптом postuser.jsp:

Рассмотрим отправку более сложной формы. Определим в файле index.html следующий код:

`<!DOCTYPE html>`

`<html>`

`<head>`

`<meta` `charset="UTF-8">`

`<title>User Form</title>`

`</head>`

`<body>`

`<form` `action="postuser.jsp"` `method="POST">`

`Name: <input` `name="username"` `/>`

`<br><br>`

`Gender: <input` `type="radio"` `name="gender"` `value="female"` `checked />Female`

`<input` `type="radio"` `name="gender"` `value="male"` `/>Male`

`<br><br>`

`Country: <select` `name="country">`

`<option>Iran</option>`

`<option>Turkey</option>`

`<option>China</option>`

`<option>Germany</option>`

`</select>`

`<br><br>`

`Courses:`

`<input` `type="checkbox"` `name="courses"` `value="JavaSE"` `checked />Java SE`

`<input` `type="checkbox"` `name="courses"` `value="JavaFX"` `checked />Java FX`

`<input` `type="checkbox"` `name="courses"` `value="JavaEE"` `checked />Java EE`

`<br><br>`

`<input` `type="submit"` `value="Submit"` `/>`

`</form>`

`</body>`

`</html>`

Здесь имеется сразу несколько полей ввода - обычное текстовое поле, выпадающий список select, набор радиокнопок и набор элементов checkbox, где пользователь одновременно может выбрать сразу несколько полей.

Для обработки этой формы определим в postuser.jsp следующий код:

`<!DOCTYPE html>`

`<html>`

`<head>`

`<meta` `charset="UTF-8"` `/>`

`<title>User Info</title>`

`</head>`

`<body>`

`<p>Name: <%= request.getParameter("username") %></p>`

`<p>Country: <%= request.getParameter("country") %></p>`

`<p>Gender: <%= request.getParameter("gender") %></p>`

`<h4>Selected courses</h4>`

`<ul>`

`<%`

`String[] courses = request.getParameterValues("courses");`

`for(String course: courses){`

`out.println("<li>" + course + "</li>");`

`` `}`

`%>`

`</ul>`

`</body>`

`</html>`

Для тех полей, которые допускают выбор одного значения или представляют одно значение, все идентично: после слова param через точку указывается название поля. Но, например, набор чекбоксов имеет одно и то же имя - courses и позволяет выбрать сразу несколько значений. Эти значения мы можем получить в JSP через массив:

`String[] courses = request.getParameterValues("courses");`

И затем можно использовать цикл for для перебора массива и вывода на страницу его элементов.

Назад Содержание Вперед