Розробка 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 # 00245
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-UA. Мітки, які підтримують URL, включають ті, з яких починаються якоря і форми, а також meta-мітки. Наприклад
<a «http://localhost:8080/servlet/cashier> Calls the servlet </ a>
Також для виклику сервлета можна використовувати атрибут action в тезі form в HTML-сторінці, вказавши URL сервлета. Наприклад
<form action= «http://localhost:8080/servlet/receipt» method= «post»>
Для виклику сервлета також можна використовувати тег meta в HTML-сторінці, вказавши URL сервлета. Наприклад
<meta http-equiv= «refresh» content= «4; url=http://localhost:8080/servlet/bookstore;»>

Пакет 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 сервлета.
public void 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 включає методи, що дозволяють читати імена і значення параметрів, які включені в запит клієнта.
String getParameter (String pname) - повертає значення параметра з ім'ям pname.
Enumeration getParameterNames () - повертає перерахування імен параметрів цього запиту.
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-вузлі http://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 розташований у цьому каталозі викликається: http://localhost:8080/servlet/myServlet. Клас myPackage.myServlet (розташований в пакеті myPackage і відповідно в каталге webapps / ROOT / WEB-INF / classes / myPackage /) викликається: http://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);
Додати в блог або на сайт

Цей текст може містити помилки.

Програмування, комп'ютери, інформатика і кібернетика | Лабораторна робота
53.8кб. | скачати


Схожі роботи:
Розробка Webпріложеній із застосуванням Java Servlet-технології
Використання JAVA технологій для розробки графічних додатків
Використання JAVA-технологій для розробки графічних додатків
Створення Web-додатків в середовищі Delphi
Розробка програми на Java
Розробка транслятора в середовищі Java і С
Розробка додатків архітектури клієнт-сервер за допомогою SQL
Розробка додатків архітектури клієнт сервер за допомогою SQL
web дизайн Flash технології
© Усі права захищені
написати до нас