Розробка 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 / j 2 ee / 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 сервлета має наступну форму:

де 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 href=«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. Для запуску T omcat використовуйте 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);

}

}

}

Тут ми з викликає сторінки отримуємо параметри f irstname і 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);

Додати в блог або на сайт

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

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


Схожі роботи:
Розробка Web додатків із застосуванням Java Servlet технології
Розробка програми на Java
Розробка транслятора в середовищі Java і С
Розробка технології обробітку ярого ріпаку
Розробка технології процесу управління персоналом
Розробка технології виготовлення типових деталей
Розробка технології термічної обробки напівмуфти
Розробка технології виготовлення монометалічна форм
Розробка отварочной технології виробництва пива
© Усі права захищені
написати до нас