Реферат по предмету "Информатика, программирование"


Разработка Web–приложений с применением Java Servlet-технологии

Факультет «Информатика исистемы управления»
Методические указания к лабораторной работе
по курсу «Распределенныесистемы обработки информации»
«Разработка Web‑приложений сприменением JavaServletТехнологии»
Москва 2004 г.

Цель работы
 
Получитьзнания о Java Servlet технологии, сервере Jakarta Tomcat, его настройке дляработы с сервлетами./>/> Задание длядомашней подготовки
Ознакомиться с материалом, предоставленным вприложении к данным методическим указаниям. Ознакомиться с текстом задания клабораторной работе. Написать Web – приложение./>/> Задания клабораторной работе
Написатьпользовательский интерфейс online форума./>/> Содержаниеотчета
Отчет долженсодержать:
1.        Постановкузадачи, решаемой отлаженных программ.
2.        Руководствопользователя отлаженных программ, содержащее описание интерфейсов всех функцийпрограмм.
3.        Руководствосистемного программиста в объеме, необходимом для последующего сопровождения(модификации) отлаженных программ другим программистом (само документируемыйлистинг программы, необходимые пояснения алгоритма и его программнойреализации)./>/> Контрольныевопросы
1.        ПреимуществаJavaServlet?
2.        Изкаких этапов состоит жизненный цикл сервлета?
3.        Способывызова сервлетов с браузера и страницы?
4.        Способыпередачи параметров сервлету и их обработка?
5.        Какпроисходит запись и чтение атрибутов сессии?Литература
Javain a Nutshell Дэвид Флэнэген Киев 1998
faq.realcoding.net/index.php
java.sun.com/j2ee/learning/tutorial/index.html
egor.spb.ru/doc/db/mysql/14.html#_ftnref1
www.coreservlets.com/Apache-Tomcat-Tutorial/
gcc.gnu.org/ml/java-patches/2000‑q4/index.html#00245
www-ucs.usc.edu/~toms/jakartafaq.html
jakarta.apache.org/faq

Теоретическая часть
 Сервлеты Java
Сервлетырасширяют функциональность Web‑серверов и являются мощным средствомпрограммирования. Сервлеты – это модули, расширяющие возможности серверов типазапрос-ответ, таких как Java‑совместимые web‑сервера. Сервлеты длясерверов то же самое, что и апплеты для браузеров, но в отличие от апплетов, усервлетов нет графического интерфейса пользователя. Сервлеты могут бытьвстроены в различные серверы, так как API сервлетов, который используется дляих написания, не предполагает никакого знания ни об окружении сервера, ни о егопротоколе. Сервлеты наиболее широко используются с HTTP‑серверами; многиеweb‑сервера поддерживают API сервлетов. Они обеспечивают такой способгенерирования динамических документов, который позволяет облегчить их написаниеи ускорить выполнение. Сервлеты также решают проблему программирования настороне сервера с платформо-зависимыми API, которые разрабатываются сиспользованием Java Servlet API, стандартного расширения Java. Характернойособенностью сервлетов является то, что они не требуют создания новых процессовпри каждом новом запросе. Множество сервлетов выполняются параллельно в рамкаходного процесса на сервере.
/>

JavaServlet Development Kit (JSDK)
Наборинструментов разработки Java – сервлетов(JSDK) содержит библиотеки классов,которые нужны для создания сервлетов. Он включает также утилиту, известную какservletrunner, которая дает возможность проверить некоторые из создаваемыхсервлетов. Начиная с JSDK Version 2 пакет Jsdk2.0 встроен в JDK.Servlet API.
Коды,требующиеся для построения сервлетов, содержат два пакета: javax.servlet иjavax.servlet.http. Вместе они представляют Servlet API.Интерфейс сервлета
Центральнойабстракцией в API сервлета является Servlet API‑интерфейс. Все сервлетыреализуют этот интерфейс либо прямо, либо, чаще, путем расширения класса,который реализует этот интерфейс, например класса HttpServlet API. Servlet‑интерфейс объявляет, но не реализует методы,управляющие сервлетом и его связью с клиентами. Разработчики сервлетовобеспечивают реализацию отдельных (или всех) методов в процессе разработкисервлета.Жизненный цикл сервлета
Всесервлеты имеют одинаковый жизненный цикл:
§     Серверзагружает и инициализирует сервлет
§     Сервлетобрабатывает ноль или более запросов клиентов
§     Сервервыгружает сервлет
/>

Вызовсервлетов с браузеров
Длявызова сервлета с браузера достаточно набрать запрос – URL сервлета. URLсервлета имеет следующую форму:
machine-name:port/servlet/servlet-name
гдеservlet-name относится к имени, данному этому сервлету. Например
localhost:8080/servlet/bookstore
URLсервлетов может содержать запросы, такие как HTTP GET‑запросы. Например
localhost:8080/servlet/bookdetails? bookId=203Вызов сервлетов с HTML‑страницы
Длявызова сервлета с HTML‑страницы достаточно использовать URL сервлета ссоответствующей HTML‑меткой. Метки, поддерживающие URL, включают те, скоторых начинаются якоря и формы, а также meta‑метки. Например
Calls theservlet
Такжедля вызова сервлета можно использовать атрибут action в теге form в HTML‑странице,указав URL сервлета. Например

Длявызова сервлета также можно использовать тег meta в HTML‑странице, указавURL сервлета. Например
Пакет javax.servlet
Пакетjavax.servlet содержит ряд интерфейсов и классов, устанавливающих обрамление, вкотором работают сервлеты.
Интерфейс
Описание Servlet Объявляет методы цикла жизни для сервлета. ServletConfig Позволяет сервлетам получать параметры инициализации. ServletContext Активизирует возможности сервлетов для регистрации событий и доступа к информации об их среде. ServletRequest Используется для чтения данных из запроса клиента. ServletResponse Используется для записи данных в ответ клиенту. SingleThreadModel Указывает, что сервлет защищен от многопоточности.
Класс
Описание GenericServlet Реализует интерфейс Servlet и ServletConfig ServletInputStream Обеспечивает входной поток для чтения запросов от клиента. ServletOutputStream Обеспечивает выходной поток для записи ответов клиенту. ServletException Указывает, что произошла ошибка сервлета. UnavailableException Указывает, что сервлет постоянно или временно недоступен. Инициализация сервлета
Когдасервер загружает сервлет, он запускает init‑метод сервлета.
public void init (ServletConfig config) throws ServletException
Инициализациязавершается до начала обработки запрос клиента и до удаления сервлета. Сервервызывает метод init только один раз при загрузке сервлета. В дальнейшем, методinit больше не вызывается, если только сервер не перезагружает сервлет. Серверне может перезагрузить сервлет до тех пор, пока он не удалит сервлет, вызвавметода destroy.Удаление сервлета
Сервлетыработают до тех пор, пока сервер не удалит их. Когда сервер удаляет сервлет, онзапускает метод destroy сервлета.
publicvoid destroy()
Этотметод запускается один раз; сервер не будет запускать сервлет снова до тех пор,пока сервер не перезагрузит и переинициализирует сервлет.Взаимодействие с клиентами
Послеинициализации сервлет способен обрабатывать запросы клиентов. Cервлет работаетс запросами клиентов с помощью метода service.
public void service (ServletRequest req, ServletResponse res)
throws ServletException, IOException
Методservice поддерживает стандартные HTTP‑запросы клиентов, отсылая каждыйполученный запрос тому методу, который создан для работы с запросом данноговида.
Когдасервлет принимает вызов клиента, он получает два объекта:
·           ServletRequest,который инкапсулирует связь клиента с сервером.
·           ServletResponse,инкапсулирующий обратную связь сервера с клиентом.
ServletRequestи ServletResponse являются интерфейсами, определенными пакетом javax.servlet.ServletRequest интерфейс
ServletRequestинтерфейс позволяет сервлету получить доступ:
·      кследующей информации: имена параметров, введенных клиентом; протокол (схема),используемый клиентом; имя удаленного хоста, пославшего запрос; имя сервера,получившего этот запрос.
·      квходному потоку ServletInputStream для получения данных от клиентов,использующих такие входные протоколы, как HTTP POST- и PUT‑методы.
Интерфейсы,расширяющие ServletRequest интерфейс, позволяют сервлету получить и другиеданные конкретного протокола. Например, HttpServletRequest интерфейс содержитметоды, позволяющие получить доступ к информации HTTP‑заголовка.ServletResponse интерфейс
ServletResponseинтерфейс обеспечивает сервлет методами, необходимыми для ответа клиенту. Этотинтерфейс:
·      позволяетсервлету установить длину содержимого и MIME‑тип ответа.
·      обеспечиваетвыходной поток ServletOutputStream и Writer, посредством которых сервлет можетпослать данные ответа.
Интерфейсы,расширяющие ServletResponse интерфейс, предоставляют сервлету возможностиконкретного протокола.Чтение параметров сервлета и формирование ответа клиенту
КлассServletRequest включает методы, позволяющие читать имена и значения параметров,которые включены в запрос клиента.
StringgetParameter (String pname) – возвращает значение параметра с именем pname.
EnumerationgetParameterNames() – возвращает перечисление имен параметров этого запроса.
String[]getParameterValues() – возвращает перечисление значений параметров этого запроса.Чтение параметров инициализации
Параметрыинициализации могут использоваться для открытия файлов, создания подключений базыданных или выполнения других действий. К этой информации можно обращаться двумяспособами:
·  Метод init(), объявленныйинтерфейсом Servlet, принимает объект ServletConfig в качестве его параметра;
·  Метод getServletConfig(),объявленный интерфейсом Servlet, возвращает объект ServletConfig.
Манера,в которой параметры инициализации предоставляются сервлету, зависит от сервера.Пакет javax.servlet.http
Пакетjavax.servlet содержит ряд интерфейсов и классов, облегчающих построениесервлетов, которые работают с HTTP – запросами и ответами.

Интерфейс
Описание HttpServletRequest Используется для чтения данных из HTTP – запроса клиента. HttpServletResponse Используется для записи данных в HTTP – ответ клиенту. HttpSession Позволяет читать и записывать данные сеанса HttpSessionBindingListener Информирует объект о том, что он связан или не связан с сеансом. HttpSessionContext Обеспечивает управляемость сеансов
Класс
Описание Cookie Позволяет сохранять информацию состояния на машине клиента HttpServlet Обеспечивает методы для обработки запросов и ответов HTTP HttpSessionBindingEvent Указывает на наличие или отсутствие связи блока прослушивания с сеансовым значением HttpUtils Обеспечивает методы утилит для сервлетов. Класс 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‑узле java.sun.com. Установите дистрибутив.Объявите переменные среды JAVA_HOME = «/jdk…» и CATALINA_HOME =»\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 расположенный в этом каталоге вызывается: localhost:8080/servlet/myServlet.Класс myPackage.myServlet (расположенный в пакете myPackage и соответственно вкаталге webapps/ROOT/WEB-INF/classes/myPackage/) вызывается: 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 («»);
out.println («»);
out.println («»);
out.println («Hello World!»);
out.println («»);
out.println («»);
out.println («Hello World!»);
out.println («»);
out.println («»);
}
}
Как вывидите, сервлет обрабатывает Get – запрос браузера.
response.setContentType («text/html»); – устанавливаем тип ответа
PrintWriter out = response.getWriter(); – открываем поток, при помощи которого происходит запись выходных данных на браузер.
Приведемпример сервлета, обрабатывающего входные параметры.
 //код HTML‑страницы, вызывающей сервлет
RequestParamExample» method=POST>
FirstName:


LastName:




 // 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);


Не сдавайте скачаную работу преподавателю!
Данный реферат Вы можете использовать для подготовки курсовых проектов.

Поделись с друзьями, за репост + 100 мильонов к студенческой карме :

Пишем реферат самостоятельно:
! Как писать рефераты
Практические рекомендации по написанию студенческих рефератов.
! План реферата Краткий список разделов, отражающий структура и порядок работы над будующим рефератом.
! Введение реферата Вводная часть работы, в которой отражается цель и обозначается список задач.
! Заключение реферата В заключении подводятся итоги, описывается была ли достигнута поставленная цель, каковы результаты.
! Оформление рефератов Методические рекомендации по грамотному оформлению работы по ГОСТ.

Читайте также:
Виды рефератов Какими бывают рефераты по своему назначению и структуре.