Получение отправленных форм

Последнее обновление: 23.09.2018

Станицы 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:

Получение в jsp параметров строки запроса

Если для определенного параметра не передается значение, то страница получает значене 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.

Отправка форм в JSP

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

Получение данных в 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 для перебора массива и вывода на страницу его элементов.

Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850