Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Metodichka_Po_Tp.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.44 Mб
Скачать

5. Сервлет, обрабатывающий запросы на основе методов cet и post

Приведем пример сервлета example_form (пример 2), запрос на который можно делать не только методом GET при помощи универсального запроса ресурса по его универсальному адресу URL, но и методом POST, с помощью которого на сервер передаются данные, введенные пользователем в поля интерактивных Web-страниц. В этом сервлете при запросе его методом GET (через ссылку на его URL) - генерируется некая форма, данные из которой затем методом POST отправляются на Web-сервер для обработки этим же сервлетом:

Приведем только листинг исходного текста сервлета, он достаточно ясен для понимания и без подробного объяснения:

/*------------- Пример 2. Файл example_form.java -------------*/

package examples; // пакет для сервлета-примера

// способ вызова клиентом класса example.example_form через строку адреса окна браузера (методом GET)

// http://avanta.vvsu.ru/servlets/examples.example_form

// способ вызова Web-сервером класса example.example_form для обработки данных интерактивной формы, передаваемых методом POST

// http://avanta.vvsu.ru/servlets/examples.example_form?name=Имя&pwd=Пароль&pwd1=ПодтверждениеПароля

// предполагается, что сервлет находится в директории сервлетов на WWW-сервере avanta.vvsu.ru

import java.io.*;

import javax.servlet.*;

import javax.servlet.http.*;

public class example_form extends HttpServlet

{

// -------------------------------------------------------------------------------------------------------

public void doGet (HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException

{

// передача типа генерируемого сервлетом содержимого

response.setContentType("text/html; charset=windows-1251");

// получение выходного потока для вывода генерируемого содержимого

Writer out=new BufferedWriter(new OutputStreamWriter(response.getOutputStream(),"Cp1251")); // начало формирования результата в формате html-файла

out.write("<HTML><HEAD><TITLE>Пример сервлета</TITLE></HEAD><body>\n");

// формирование содержимого - формы ввода

out.write("<p><font size=\"+1\" color=\"Red\">Регистрация</font></p>\n");

out.write("<form action=\"http://avanta.vvsu.ru/servlets/examples.example_form\" method=\"POST\">\n");

out.write("<table>\n");

out.write("<tr><td>Фамилия:</td><td><input type=\"Text\" name=\"name\"></td></tr>\n");

out.write("<tr><td>Пароль:</td><td><input type=\"Password\" name=\"pwd\"></td></tr>\n");

out.write("<tr><td>Подтверждение пароля:</td><td><input type=\"Password\" name=\"pwd1\"></td></tr>\n");

out.write("</table>\n");

out.write("<input type=\"Submit\" value=\"Отправить данные\">  \n");

out.write("<input type=\"Reset\" value=\"Очистить поля\"><p>\n");

out.write("</form>\n");

// завершение формирования результата и закрытие потока

out.write("</body></html>\n");

out.flush(); out.close();

return;

}

// -------------------------------------------------------------------------------------------------------

public void doPost (HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException

{

// получение значения параметра имени, передаваемое через параметры

String NAME=request.getParameter("name");

if( NAME!=null) NAME=new String((NAME.trim()).getBytes(),"windows-1251");

// получение значения параметра пароля, передаваемое через параметры

String PWD=request.getParameter("pwd");

if(PWD!=null) PWD=new String((PWD.trim()).getBytes(),"windows-1251");

// получение значения параметра подтвержденияпароля, передаваемое через параметры

String PWD1=request.getParameter("pwd1");

if(PWD1!=null) PWD1=new String((PWD1.trim()).getBytes(),"windows-1251");

// передача типа генерируемого сервлетом содержимого

response.setContentType("text/html; charset=windows-1251");

// получение выходного потока для вывода генерируемого содержимого

Writer out=new BufferedWriter(new OutputStreamWriter(response.getOutputStream(),"Cp1251")); // начало формирования результата в формате html-файла

out.write("<HTML><HEAD><TITLE>Пример сервлета</TITLE></HEAD><body>\n");

// формирование содержимого

if(NAME==null||NAME.equals(""))

out.write("<p>Ошибка! Не введено имя... </p><p><a href=\"http://avanta.vvsu.ru/servlets/examples.example_form\">Назад, в заполнение формы</a></p>\n");

else if(PWD==null||PWD.equals(""))

out.write("<p>Ошибка! Не введен пароль... </p><p><a href=\"http://avanta.vvsu.ru/servlets/examples.example_form\">Назад, в заполнение формы</a></p>\n");

else if(PWD1==null||PWD1.equals(""))

out.write("<p>Ошибка! Не введено подтверждение пароля... </p><p><a href=\"http://avanta.vvsu.ru/servlets/examples.example_form\">Назад, в заполнение формы</a></p>\n");

else if(!PWD1.equals(PWD))

out.write("<p>Ошибка! Подтверждение пароля не совпадает с паролем... </p><p><a href=\"http://avanta.vvsu.ru/servlets/examples.example_form\">Назад, в заполнение формы</a></p>\n");

{

// здесь можно сделать какие-либо действия по регистрации пользователя,

// например, сохранение информации о нем в базе данных

// . . . . . . . .

// выдача результатов регистрации

out.write("<p><font size=\"+1\" color=\"Red\">Уважаемый "+NAME+", информация о Вас успешно сохранена на сервере.</font></p>\n"); }

// завершение формирования результата и закрытие потока

out.write("</body></html>\n");

out.flush(); out.close();

return;

}

}

/*-------------------------------------------------------------*/

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]