Класс HttpServlet. Работа с HTTP – запросами




 

Методы, которым метод service передает HTTP‑запросы:

· doGet, для работы с GET-, условными GET-, и HEAD‑запросами

· doPost, для работы с POST‑запросами

· doPut, для работы с PUT‑запросами

· doDelete, для работы с DELETE‑запросами

По умолчанию, эти методы возвращают ошибку BAD_REQUEST (400). Сервлет должен переопределить либо метод service, либо методы для работы с теми HTTP‑запросами, которые он поддерживает. Метод service, принадлежащий HttpServlet, также вызывает метод doOptions, когда сервлет получает OPTIONS‑запрос и метод doTrace, когда сервлет получает TRACE‑запрос. По умолчанию, реализация метода doOptions автоматически определяет какие HTTP‑опции поддерживаются и возвращает эту информацию. По умолчанию, реализация метода doTrace выдает ответ с сообщением, содержащим все заголовки, посланные в TRACE‑запросе. Эти методы, как правило, не переопределяются.


Практическая часть

 

Сервер Jakarta Tomcat

 

Перейдем к практической части лабораторной работы. Для ее выполнения вам понадобится сервер Jakarta Tomcat Server, который можно скачать на web‑узле https://java.sun.com. Установите дистрибутив. Объявите переменные среды JAVA_HOME = «<path>/jdk…» и CATALINA_HOME =»<path>\jakarta-tomcat…» (Control Panel / System / Advanced / Environment Variables). Теперь Вы имеет установленный tomcat. Если вам надо чтобы какие-то библиотеки подключались в CLASSPATH – положите их в каталог lib. По умолчанию сервер использует порт 8080. Для запуска Tomcat используйте bin\startup.bat, для остановки – bin\shutdown.bat. Корневым каталогом для Ваших докуметов будет webapps/ROOT/

Для классов – webapps/ROOT/WEB-INF/classes/. Например, класс myServlet расположенный в этом каталоге вызывается: https://localhost:8080/servlet/myServlet. Класс myPackage.myServlet (расположенный в пакете myPackage и соответственно в каталге webapps/ROOT/WEB-INF/classes/myPackage/) вызывается: https://localhost:8080/servlet/myPackage.myServlet

 

Примеры

Приведем несколько примеров сервлетов.

// HelloWorld.java выводит на браузер надпись HelloWorld

import java.io.*;import javax.servlet.*;import javax.servlet.http.*;public class HelloWorld extends HttpServlet {public void doGet (HttpServletRequest request, HttpServletResponse response)throws IOException, ServletException{response.setContentType («text/html»);PrintWriter out = response.getWriter();out.println («<html>»);out.println («<body>»);out.println («<head>»);out.println («<title>Hello World!</title>»);out.println («</head>»);out.println («<body>»);out.println («<h1>Hello World!</h1>»);out.println («</body>»);out.println («</html>»);}}

Как вы видите, сервлет обрабатывает Get – запрос браузера.

response.setContentType («text/html»); – устанавливаем тип ответаPrintWriter out = response.getWriter(); – открываем поток, при помощи которого происходит запись выходных данных на браузер.

Приведем пример сервлета, обрабатывающего входные параметры.

// код HTML‑страницы, вызывающей сервлет

<form action= «RequestParamExample » method=POST>

First Name:

<input type=text size=20 name=firstname>

<br>

Last Name:

<input type=text size=20 name=lastname>

<br>

<input type=submit>

</form>

// RequestParamExample.java получает входные параметры и выводит на браузер их значения

import java.io.*;import java.util.*;import javax.servlet.*;import javax.servlet.http.*;public class RequestParamExample extends HttpServlet {public void doPost (HttpServletRequest request, HttpServletResponse res)throws IOException, ServletException{Enumeration e = request.getParameterNames();PrintWriter out = res.getWriter ();while (e.hasMoreElements()) {String name = (String) e.nextElement();String value = request.getParameter(name);out.println (name + «=» + value);}}}

Здесь мы из вызывающей страницы получаем параметры firstname и lastname. В сервлете:

Enumeration e = request.getParameterNames(); – получаем имена всех параметров запроса, затем открываем поток записи н браузер, и до тех пор, пока множество имен не исчерпано, получаем имя параметраString name = (String) e.nextElement();Получаем, значение параметра, зная имяString value = request.getParameter(name);Выводим его на брузерout.println (name + «=» + value);Приведем пример работы с сессиями:import java.io.*;import java.util.*;import javax.servlet.*;import javax.servlet.http.*;public class SessionExample extends HttpServlet {public void doGet (HttpServletRequest request, HttpServletResponse response)throws IOException, ServletException{response.setContentType («text/html»);PrintWriter out = response.getWriter();HttpSession session = request.getSession(true); // добавить атрибут в сессиюString dataName = request.getParameter («dataName»);String dataValue = request.getParameter («dataValue»);session.setAttribute (dataName, dataValue); // вывести значения атрибутов сессииEnumeration e = session.getAttributeNames();while (e.hasMoreElements()) {String name = (String) e.nextElement();String value = session.getAttribute(name).toString();out.println (name + «=» + value);}}}Сервлет обрабатывает Get‑запрос, извлекает значение параметраString dataName = request.getParameter («dataName»);String dataValue = request.getParameter («dataValue»);И добавляет его в сессиюsession.setAttribute (dataName, dataValue);Затем получаем имена всех атрибутов сессии:Enumeration e = session.getAttributeNames();И пишем на браузер их значенияString value = session.getAttribute(name).toString();out.println (name + «=» + value);


Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2020-03-31 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: