Мочоный В. О КИ-132
Лабораторна работа № 5 Знайомство з Java технологіями Sevlet та JSP
4.1 Ціль работы:
Ознайомитися з технологіями та для реалізації інтерфейсу користувача.
Створити програму для роботи з реляційною базою даних через WEB інтерфейс.
7.2 Короткі теоретичні відомості
7.2.1 Технологія Servlet
Сервлети - це особливим чином написані (згідно специфікації) Java-програми, які виконуються на сервері і виклик яких здійснюється дистанційно через web-броузер за допомогою HTTP протоколу.
Докладну інформацію про сервлети можна знайти за адресою:
https://docs.oracle.com/javaee/5/tutorial/doc/bnafd.html
Програму, що призначена для збереження сервлетів, системної підтримки та забезпечення їх життєвого циклу, називають контейнером. Контейнер може працювати як повноцінний самостійний веб-сервер, або бути постачальником сторінок для іншого веб-сервера. В лабораторній роботі ми будемо використовувати в якості контейнера Appache Tomcat.
Сервлети повинні реалізувати інтерфейс Servlet. Цей інтерфейс потребує реалізації 5 методів:
void init(ServletConfig config) - метод автоматично викликається один раз при виконанні сервлета для його ініціалізації. Параметр ServletConfig надається контейнером сервлетів, який виконує сервлет;
ServletConfig getServletConfig() - метод повертає посилання на об'єкт, який реалізує інтерфейс ServletConfig. Цей об’єкт надає доступ до інформації про конфігурацію сервлета;
String getServletInfo() - метод повертає рядок з інформацією про сервлетах;
void service(ServletRequest request, ServlerResponse response) - контейнер сервлета викликає цей метод для відповіді на клієнтський запит сервлету;
void destroy() - метод викликається після завершення виконання сервлета контейнером сервлетів. Даний метод слід застосовувати для звільнення ресурсів, використовуваних сервлетом, такі як відкриті файли або відкриті з'єднання з БД.
Але сервлети, що працюють з клієнтом через Web, зазвичай реалізують інтерфейс Servlet не напряму, а через клас HttpServlet. Метод service у цьому класі перевизначається, щоб мати можливість розрізнити стандартні методи запитів, одержувані від Web-браузера клієнта. Типи запитів HTTP є get, post, delete, options, put, trace. Найбільш поширені - get (одержання HTML документа) і post (відправка інформації на сервер). У класі HttpServlet визначені методи doGet і doPost для обробки реакції на ці запити.
Про різницю між doGet та doPost можна почитати в інтернеті. За замовчуванням, Eclipse створює шаблон сервлету, у якому метод doPost викликає метод doGet.
Створюючи шаблон сервлету Eclipse додає до заголовку класу анотацію @WebServlet, яка визначає ім’я сервлету, що буде використовуватися для звертання до сервлету з інших компонентів проекту, наприклад, із html сторінки. За замовчування ім’я сервлету співпадає з ім’ям класу, без розширення. Наприклад, @WebServlet("/MyServlet").
Головне призначення сервлетів – це реалізація обробки інформації, але його можна використовувати і для формування веб-сторінок. Необхідний для цього HTML-код формується за допомогою об’єкта типу PrintWriter, який можна отримати через параметр response методу doGet.
Нижче наведено приклад формування сторінки з таблицею квадратів чисел:
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
int min = 2, max = 9;
response.setCharacterEncoding("UTF-8");
PrintWriter out = response.getWriter();
out.write(
"<html>"+
"<head><title>Тест Servlet</title><meta charset=\"UTF-8\"> </head>”+
“<body> <center> <b>"+
"Квадрати цілих чисел<br>"+
"від "+min+" до "+max+
"<b> <br> <hr>"+
"<table border=\"1\">"+
"<tr> <th>Число</th> <th>квадрат числа</th> </tr>");
for(int i=min;i<=max;i++){
out.write(
"<tr>"+
"<td align=\"center\">"+i+"</td>"+
"<td align=\"center\">"+i*i+"</td>"+
"</tr>");
}
out.write("</table> </center> </body> </html>");
}
Але формування html тексту у сервлетах не схвалюється.
