Разработка Web–приложений с применением Java Servlet-технологии
Сервлеты расширяют функциональность Web_серверов и являются мощным средством программирования. Сервлеты — это модули, расширяющие возможности серверов типа запрос-ответ, таких как Java_совместимые web_сервера. Сервлеты для серверов то же самое, что и апплеты для браузеров, но в отличие от апплетов, у сервлетов нет графического интерфейса пользователя. Сервлеты могут быть встроены в различные… Читать ещё >
Разработка Web–приложений с применением Java Servlet-технологии (реферат, курсовая, диплом, контрольная)
Факультет «Информатика и системы управления»
Методические указания к лабораторной работе
по курсу «Распределенные системы обработки информации»
" Разработка Web_приложений с применением Java Servlet Технологии"
Москва 2004 г.
Цель работы
Получить знания о Java Servlet технологии, сервере Jakarta Tomcat, его настройке для работы с сервлетами.
Задание для домашней подготовки
Ознакомиться с материалом, предоставленным в приложении к данным методическим указаниям. Ознакомиться с текстом задания к лабораторной работе. Написать Web — приложение.
Задания к лабораторной работе
Написать пользовательский интерфейс online форума.
Содержание отчета
Отчет должен содержать:
1. Постановку задачи, решаемой отлаженных программ.
2. Руководство пользователя отлаженных программ, содержащее описание интерфейсов всех функций программ.
3. Руководство системного программиста в объеме, необходимом для последующего сопровождения (модификации) отлаженных программ другим программистом (само документируемый листинг программы, необходимые пояснения алгоритма и его программной реализации).
Контрольные вопросы
1. Преимущества Java Servlet?
2. Из каких этапов состоит жизненный цикл сервлета?
3. Способы вызова сервлетов с браузера и страницы?
4. Способы передачи параметров сервлету и их обработка?
5. Как происходит запись и чтение атрибутов сессии?
Java in a Nutshell Дэвид Флэнэген Киев 1998
http://faq.realcoding.net/index.php
http://java.sun.com/j2ee/learning/tutorial/index.html
http://egor.spb.ru/doc/db/mysql/14.html#_ftnref1
http://www.coreservlets.com/Apache-Tomcat-Tutorial/
http://gcc.gnu.org/ml/java-patches/2000_q4/index.html#245
http://www-ucs.usc.edu/~toms/jakartafaq.html
http://jakarta.apache.org/faq
Теоретическая часть
Сервлеты Java
Сервлеты расширяют функциональность Web_серверов и являются мощным средством программирования. Сервлеты — это модули, расширяющие возможности серверов типа запрос-ответ, таких как Java_совместимые web_сервера. Сервлеты для серверов то же самое, что и апплеты для браузеров, но в отличие от апплетов, у сервлетов нет графического интерфейса пользователя. Сервлеты могут быть встроены в различные серверы, так как API сервлетов, который используется для их написания, не предполагает никакого знания ни об окружении сервера, ни о его протоколе. Сервлеты наиболее широко используются с HTTP_серверами; многие web_сервера поддерживают API сервлетов. Они обеспечивают такой способ генерирования динамических документов, который позволяет облегчить их написание и ускорить выполнение. Сервлеты также решают проблему программирования на стороне сервера с платформо-зависимыми API, которые разрабатываются с использованием Java Servlet API, стандартного расширения Java. Характерной особенностью сервлетов является то, что они не требуют создания новых процессов при каждом новом запросе. Множество сервлетов выполняются параллельно в рамках одного процесса на сервере.
Java Servlet 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 сервлета имеет следующую форму:
http://machine-name:port/servlet/servlet-name
где servlet-name относится к имени, данному этому сервлету. Например
http://localhost:8080/servlet/bookstore
URL сервлетов может содержать запросы, такие как HTTP GET_запросы. Например
http://localhost:8080/servlet/bookdetails? bookId=203
Вызов сервлетов с HTML_страницы
Для вызова сервлета с HTML_страницы достаточно использовать URL сервлета с соответствующей HTML_меткой. Метки, поддерживающие URL, включают те, с которых начинаются якоря и формы, а также meta_метки. Например
Также для вызова сервлета можно использовать атрибут action в теге form в HTML_странице, указав URL сервлета. Например
// 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);