Обробка даних, отриманих із HTML-форм

Сервлети можуть приймати дані, одержувані сервером у складі HTML-форм. Розглянемо приклад, у якому використовується клас ServletUtilities (листинг 4.5).

Лістинг 4.5. Файл ThreeParams.java

package paket; import java.io.*; import javax.servlet.*;

import javax.servlet.http.*; import java.util.*;

+ request.getParameter("paraml") + "\n" + " param2: "

+ request.getParameter("param2") + "\n" + " param3: "

public void doPost(HttpServletRequest request,

HttpServletResponse response) throws ServletException, IOException < doGet (request, response);

У файл web.ini вставимо наступний фрагмент:

servlet.param.className: paket.ThreeParams servlet.param.url: /param

У програмі описано три параметри:

html-форм

Мал. 4.6. Відображення параметрів запитів

Можлива ситуація, коли сервлет не знає, які імена параметрів можуть бути передані із запитом. Нижче наведено приклад (листинг 4.6), який переглядає всі імена параметрів запиту та становить таблицю. При цьому враховуються також імена, які не мають значення, а також імена, що мають кілька значень. Імена параметрів переглядаються за допомогою функції getParameterNames. Це метод інтерфейсу HttpServletRequest (точніше суперінтерфейсу ServietRequest). Метод повертає java.util. Enumeration. Список імен можна переглядати з використанням перевірки наявності наступного елемента за допомогою методу добільшогоелементів, а потім із застосуванням методу nextElement. Метод nextEiement повертає змінну типу об'єкта, потім перетворює результат до string і передає його getParameterVaiues. Таким чином, створюється масив рядків string. Якщо масив виходить довжиною в одинелемент і містить порожній рядок, то сервлет створює наступний текст:"No Value".Якщо

масив має кілька елементів, вони будуть виведені у вигляді маркованого списку (рис. 4.7).

Лістинг 4.6. Файл ShowParameters.java

package paket; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import java.util.*;

public class ShowParameters extends HttpServlet < public void doGet(HttpServletRequest request,

" + title + " \n" + "CTABLE B0RDER=1 ALIGN=CENTER>\n" + "\n" + " Parameter Name Parameter Value(s)"); Enumeration paramt-Iames = request.getParametert-Iames(); while (paramt-Iames.

String paramName = (String) paramt-Iames .nextElement () ;

out. println ("

" + paramt-Iame + "\n");

String [] paramValues ​​= request. getParameterValues ​​(paramt-Iame) ;

if (paramValues.length == 1)

String paramValue = paramValues[0]; if (paramValue.length() == 0)

out.print("No Value"); else

out. println ("\n");

public void doPost(HttpServletRequest request,

HttpServletResponse response) throws ServletException, IOException < doGet (request, response);

Додатки, які вносяться до файлу web.ini:

servlet.showparam.className: paket.ShowParameters servlet.showparam.url: /showparam

обробка

Мал. 4.7. Читання всіх параметрів

Для збору інформації від користувача та передачі його серверу, у тому числі сервлету, використовуються HTML-форми. Як приклад наведемо файл, що містить HTML-форму (листинг 4.7).

Лістинг 4,7, Файл PostForm.html

A Sample FORM using POST

A Sample FORM using POST

Зібрані дані показано на рис. 4.8. ОбробленіДані представлені на рис. 4.9.

обробка

Мал. 4.8. Дані, що вводяться користувачем

request

Мал. 4.9. Дані, оброблені сервлетом