Для освоєння матеріалу необхідно ознайомитись з мовою розмітки веб-сторінок HTML та вивчити власне саму мову програмування Java (так зване Java Core - досл. ядро Java). Для цього можете скористатися відповідними вікіпідручниками «HTML» та «Освоюємо Java».
Долучайтесь до покращення даного вікіпідручника. Якщо знайдете помилки або ж неточності, виправте їх або напишіть про них на сторінці обговорення.
Вступ Мова програмування Java розроблялася як платформа для програмування різноманітних пристроїв. Проте стрімкий розвиток інтернет-технологій змусив творців java працювати і в цьому напрямку. Початково ставка робилася на аплети, проте через певні проблеми ранніх віртуальних машин джави із швидкодією та безпекою, аплети так і не змогли скласти конкуренцію іншим дещо подібним технологіям як то flash. Проблема безпеки аплетів до цих пір актуальна. Компанія Google з 1 вересня 2015 року припинила підтримку плагінів NPAPI, в наслідок чого, плагіни на основі NPAPI (Silverlight, Java-applet и Unity) у Google Chrome працювати не будутьhttps://java.com/en/download/faq/chrome.xml Java and Google Chrome Browser . В 1997 році Sun розпочав роботу над новою інтернет-технологією JSP, а згодом з'явилася і успішно розвивається ціла платформа Java Enterprise Edition (JEE), яка включає цілий ряд технологій для розробки повноцінних серверних інтернет-додатків. В результаті java змогла закріпитися у світі-веб програмування і успішно конкурувати із іншими аналогічними веб-технологіями.
Основною веб-технологій, що базуються на java є серверні сторінки джави (Java Server Pages, JSP) та сервлети (Servlets). Даний вікіпідручник фокусується саме на їх описі.
Встановлюємо Apache Tomcat Для розробки та виконання серверних сторінок Java (JSP) та сервлетів необхідний спеціальний засіб, так званий сервлет контейнер. Існує декілька реалізацій сервлет контейнерів як платних так і безкоштовних. Apache Tomcat безкоштовний контейнер сервлетів розроблений фірмою Apache Software Foundation, яка відома також тим що займається розробкою одного з найпопулярніших веб-серверів Apache.
Процес встановлення Apache Tomcat на вашому локальному комп'ютері доволі простий:
1. Звантажте Tomcat із офіційного сайту tomcat.apache.org. Тут зараз ідеться про встановлення Tomcat 7.
2. Якщо ви звантажили архів, розпакуйте його в каталог, наприклад, у C:\Tomcat7.
3. Запустіть командний рядок і зайдіть у каталог C:\Tomcat7\bin та наберіть: startup
Скоріш за все ви отримаєте наступне повідомлення: C:\tomcat7\bin>startup Neither the JAVA_HOME nor the JRE_HOME environment variable is defined At least one of these environment variable is needed to run this program Це означає що для запуску потрібно певним чином вказати де встановлено Java (вірніше де встановлено JDK - Java Development Kit). Це можна зробити кількома способами. Можна зайти у змінні середовища і створити змінну JAVA_HOME. Інколи в літературі так і вказують. Проте це не дуже хороший спосіб надіятись на системні змінні і ставити себе в залежність від системи. Найкращий спосіб відредагувати файл catalina.bat.
4. Тож у каталозі C:\tomcat7\bin знайдіть catalina.bat і відредагуйте його. Вписавши наступний рядок: set JAVA_HOME=c:\jdk7 Звичайно ж потрібно вказати де у вас знаходиться JDK.
5. Спробуйте знову запустити Apache Tomcat. Повинно вийте, щось на зразок такого: C:\tomcat7\bin>startup Using CATALINA_BASE: "C:\tomcat7" Using CATALINA_HOME: "C:\tomcat7" Using CATALINA_TMPDIR: "C:\tomcat7\temp" Using JRE_HOME: "c:\jdk7" Using CLASSPATH: "C:\tomcat7\bin\bootstrap.jar;C:\tomcat7\bin\tomcat-juli. jar" C:\tomcat7\bin>catalina.bat Паралельно повинно запуститися консольне вікно із повідомленням що сервер запустився.
6. Щоб перевірити чи дійсно усе працює. Наберіть у браузері: http://localhost:8080/ Повинна з'явитися сторінка із привітанням. На даній сторінці можна перейти на сторінку examples (пошукайте відповідне посилання, у tomcat7 воно знаходиться у розділі Developer Quick Start) де можна запустити тестові JSP та сервлети.
7. Щоб зупинити Tomcat наберіть в командному рядку: C:\tomcat7\bin>shutdown
IDE вам на допомогу На відміну від звичайного програмування на java, для написання яких цілком достатньо JDK та блокнота, веб-програмування вимагає дещо більше зусиль. Тому створення серверних сторінок java (JSP) та сервлетів користуючись лише блокнотом може бути довгим та нудним процесом. Передусім тому, що необхідне створення каталогів із певними назвами та деяких конфігураційних файлів в форматі .xml. Багато ранніх книжок розпочиналися з детального опису даних каталогів, їхнього призначення та як писати правильно відповідні .xml файли. Сучасні графічні середовища розробки, дозволяють не так детально вглиблюватися в цю тему і беруть значну кількість рутинної роботи на себе. Зокрема надають зручні графічні форми для редагування файлів конфігурації.
Ви можете вибрати, наприклад, NetBeans або ж Eclipse, або ж інше популярне графічне середовище розробки, яке дозволяє створити заготовку веб-застосунку(web application). В основному після встановлення графічного середовища розробки, все що необхідно від користувача, це вказати IDE де знаходиться Tomcat. Після чого можна працювати. В кожному IDE це робиться по своєму, тому тут не буде наводитися як це робиться. Ви просто можете пошукати відповідний опис в інтернеті чи навіть відповідний відеоурок, яких зараз чимало або ж можете розібратися самі.
Привіт JSP
Коли ви користуєтеся браузерами і натискаєте на певному посиланні чи кнопці, ви відправляєте HTTP запит на веб-сервер. Найпростіше, коли ви маєте діло із статичними HTML сторінками, тобто, ті які описані на HTML і ви просто здійснюєте переходи з однієї html сторінки на іншу сторінку. Тоді веб-сервер (що є спеціальною програмою, а в нашому випадку його функції частково виконує Tomcat) вибирає запитану вами сторінку і пересилає її вашому браузеру, який опрацьовує її і виводить вам на екран у читабельному симпатичному вигляді. Інше діло, коли вам потрібно, щоб нова сторінка видала вам щось специфічне, в залежності від того, що ви натиснули. Наприклад, ви вводите прізвище та ім’я, а у відповідь вам необхідно одержати телефон введеної вами особи. Тоді на веб-сервері повинна бути відповідна програма/скрипт, що могла б звернутися до певного файлу чи бази даних, знайшла б необхідний телефон і сформувала б вам відповідну html сторінку із потрібними вам даними. Такі програми можуть писатися на різноманітних мовах веб-програмування. Якщо ви працювали з такими мовами як PHP чи Perl, то дана концепція не буде вам новою. Освоїти JSP та сервлети не складніше за освоєння даних мов, проте потребує попереднього вивчення власне самої Java.
Для реалізації вищенаведеної задачі з допомогою джави, можна скористатися або ж сервлетом або ж серверною сторінкою джави (JSP). Сервлет – це серверна програма написана суто на Java. JSP – це по суті HTML сторінка з розширенням .JSP, де поміж звичайними HTML тегами вставлені ще так звані JSP скриптлети (JSP scriptlets) та спеціальні JSP вирази (JSP expressions). Якщо вам не потрібно робити великих обчислень, то краще створювати JSP. Якщо ж для вашої задачі вам потрібно писати багато коду на Java, то звичайно що простіше зробити це у сервлеті.
Насправді кожна серверна сторінка джави перед виконанням перетворюється у сервлет. Це відбувається при першому зверненні до неї користувача. Здійснює перетворення і компіляцію так званий JSP процесор (JSP engine). При повторному зверненні користувача, зразу ж буде викликатись уже скомпільований сервлет.
Для прикладу, розробимо веб-прикладення, яке складатиметься з двох сторінок. Першою буде проста сторінка з формою для введення логіна та паролю (index.jsp). При натисненні кнопки «Підтвердити» відбуватиметься запит до іншої сторінки, яка просто виведе введені користувачем логін та пароль (hello.jsp).
Для початку створіть відповідний проект для вашого веб-прикладення (web application) у вашому інтегрованому середовищі розробки. У NetBeans, наприклад, це робиться через пункт меню File->New Project після чого вибираємо у діалоговому вікні зі списку категорію Java Web та вид проекту Web Application. В результаті введення назви вашого проекту з’явиться ряд каталогів з головним файлом index.jsp. Після деякого редагування це і буде перша наша сторінка. Практично схожим чином діємо і в інших IDE.
Ось перша сторінка: <%@page contentType="text/html" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>JSP Page</title> </head> <body> <h1>Введіть логін та пароль</h1> <form name="hello" action="hello.jsp" method="post"> <table border="0">
<tbody> <tr> <td>Логін: </td> <td><input type="text" name="login" value="" size="15" /></td> </tr> <tr> <td>Пароль:</td> <td><input type="password" name="password" value="" size="15" /><br/></td> </tr> <tr> <td></td> <td> <input type="submit" value="Підтвердити" name="submit" /><br/></td> </tr> </tbody> </table> </form> </body> </html> Якщо ви знаєте html, то практично усе вам повинно бути зрозумілим. На сторінці присутня форма для створення запиту і в таблиці розміщуються елементи форми: два текстових поля та кнопка.
Лише перший рядок може викликати запитання – це власне і є спеціальне jsp вставлення. Вона просто коротко описує нашу сторінку. Дану сторінку запросто можна написати і зберегти з розширенням .html, видаливши перший рядок. При натисненні кнопки на сервер був переданий запит з відповідними змінними та їхніми значеннями.
Якщо б у нас був не POST, а GET запит, то у браузері при переході на сторінку name.jsp ми б побачили:
http://localhost:8080/HelloApp/hello.jsp?login=volodimirg&password=qazwsx&submit=Підтвердити
Друга сторінка name.jsp буде більш цікавішою. Її створити можна у тому ж каталозі що і попередня сторінка.
<%@page contentType="text/html" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>JSP Page</title> </head> <body> <h3>Ви розкриті</h3> <% String login=request.getParameter("login"); String password=request.getParameter("password"); String ipAddress=request.getRemoteAddr(); %> Ваш логін:<%= login %><br/> Ваш пароль: <%= password %><br/> Ваша IP адреса: <%= ipAddress %> </body> </html>
Як бачимо у нас є JSP скриптлет оточений обмежувачами <% та %>. Тут по суті іде звичайний java код.
Наш Scriplet витягує значення параметрів і зберігає їх у відповідних змінних. Щоб у потрібному місці вивести значення змінних, використовуються відповідні JSP вирази, наприклад, <%= login %> - вставляє в код сторінки значення змінної login.
Слід зазначити, що при використанні кирилиці можуть виникнути проблеми з правильним відображенням символів із запиту. Коли замість потрібних букв будуть зображені незрозумілі закарлючки та символи. Вся проблема у різних кодуваннях запиту і того, що використовує віртуальна машина java, tomcat, база даних і т.п. Якщо у вас в наведеному прикладі вивело саме так, то у випадку з POST запитом допоможе створення спеціального сервлета-фільтра, який викликається перед запитом певних сторінок та сервлетів. Приклад фільтру та вирішення інших проблем з кодуванням дивіться на stackoverflow.com. Даний фільтр повинен бути відповідним чином прописаний у файлі конфігурації web.xml. <filter> <filter-name>NewFilter</filter-name> <filter-class>ua.vova.NewFilter</filter-class> </filter> <filter-mapping> <filter-name>NewFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> Знову ж таки, щоб не заплутатись у файлах конфігурації, популярні IDE надають графічні форми для редагування файлів конфігурації, зокрема і для web.xml.
З GET запитом складніше. В інтернеті можна знайти ряд рекомендацій як усунути цю проблему, проте роз’яснення потребує більш кращого знання теми JSP та сервлетів. Наразі, просто замініть назву типу запиту з GET на POST у відповідних прикладах, або ж застосовуйте латинські літери.
JSP скриптлети та вирази