| Общая информация » Каталог студенческих работ » ТЕХНИЧЕСКИЕ ДИСЦИПЛИНЫ » Информатика, программирование, базы данных |
| 19.01.2026, 13:23 | |||||||||||||||||||||
ЛАБОРАТОРНАЯ РАБОТА «ОСНОВЫ ТЕХНОЛОГИИ СЕРВЛЕТОВ» Целью данной лабораторной работы является ознакомление со средой разработки Eclipse и написание простейшего серверного приложения на языке программирования Java. Порядок выполнения лабораторной работы 1 Установка ПО Минимальный комплект для разработки программ на Java: · JDK (Java Development Kit) – комплект разработки программного обеспечения (компилятор, стандартные библиотеки и т. п.); · JRE (Java Runtime Environment) – программа для запуска и исполнения программ (среда выполнения Java); · среда программирования Eclipse. Установка Java SDK (JDK) Самые новые версии системного программного обеспечения JRE и JDK можно загрузить с сайта компании Oracle (https://www.oracle.com/). Загрузите и установите Java SE Development Kit 8u261 (рис. 1.1) по ссылке https://www.oracle.com/technetwork/java/javase/downloads/index.html.
Рис. 1.1 – Загрузка Java SE Development Kit 8u261 В курсе используется версия 8. Эта версия JDK поставляется в комплекте с Java Runtime Environment (JRE), поэтому вам не нужно отдельно загружать и устанавливать JRE. Убедитесь, что правильно выбрали между 32-битной и 64-битной версиями для своей ОС Windows. После установки рекомендуется перезагрузить компьютер. Eclipse (https://www.eclipse.org) представляет собой бесплатный и гибкий редактор с открытым исходным кодом. Он может оказаться полезен как для новичков, так и для профессионалов. Первоначально создаваемый как среда для Java-разработки сегодня Eclipse имеет широкий диапазон возможностей благодаря большому количеству плагинов и расширений. Поддерживаемые языки: C, C++, Java, Perl, PHP, Python, Ruby и другие. Множество пакетных решений обеспечивает многоязычную поддержку. Существует интеграция с Maven, JUnit и TestNG, а также возможности анализа покрытия кода. Какая IDE окажется лучшей именно для вас, зависит от используемой операционной системы, языка программирования и тех задач, которые вы хотите выполнять. В курсе показан пример в среде Eclipse (Java EE IDE for Web Developers, Version: 2018-09 (4.9.0)) (рис. 1.2). Скачать ПО можно по ссылке: https://www.eclipse.org/downloads/packages/release/2018-09/r/eclipse-ide-java- ee-developers
Рис. 1.2 – Загрузка Eclipse После скачивания архив нужно распаковать в папку C:\Program Files\eclipse. Запуск Eclipse Чтобы запустить Eclipse IDE, нужно открыть файл eclipse.exe, находящийся в папке C:\Program Files\eclipse\. Начнется запуск IDE (рис. 1.3).
Рис. 1.3 – Запуск Eclipse При запуске откроется окно, предлагающее выбрать рабочую область (Workspace) (рис. 1.4), где будут храниться программные файлы проекта. В простейшем случае рабочее пространство – это каталог для проектов пользователя, в котором располагаются файлы проекта. Все, что находится внутри этого каталога, считается частью рабочего пространства. Указываем удобную для нас директорию и нажимаем OK.
Рис. 1.4 – Workspace Инструментальные средства Eclipse становятся доступны сразу после запуска приложения. Это по существу сама платформа с набором различных функциональных возможностей главного меню, где прежде всего выделяется набор операций по управлению проектом. Фактическая обработка, как правило, осуществляется дополнениями (плагинами), например, редактирование и просмотр файлов проектов осуществляется JDT и т. д. К инструментам (Workbench) относится набор соответствующих редакторов и представлений, размещенных в рабочей области Eclipse. Для конкретной задачи определенный набор редакторов и представлений называют перспективой или компоновкой. Компоновка (Perspective) – это набор представлений и редакторов, расположенных в том порядке, который вам требуется. В каждой компоновке присутствует свой набор инструментов, некоторые компоновки могут иметь общие наборы инструментов. В определенный момент времени активной может быть только одна компоновка. Переключение между различными компоновками осуществляется нажатием клавиш <Ctrl + F8>. Используя компоновки, вы можете настроить свое рабочее пространство под определенный тип выполняемой задачи. В Eclipse имеется также возможность создавать свои компоновки. Открыть компоновку можно командой Window / Open Perspective (рис. 1.5).
Рис. 1.5 – Perspective Редакторы (Editors) представляют собой программные средства, позволяющие осуществлять операции с файлами (создавать, открывать, редактировать, сохранять и др.). Представления (Views) по существу являются дополнениями к редакторам, где выводится информация сопроводительного или дополнительного характера, как правило, о файле, находящемся в редакторе. Открыть представления можно командой Window / Show View (рис. 1.6).
Рис. 1.6 – Views Проект (Project) представляет собой набор файлов приложения и сопутствующих дополнений. Дополнением (Plug-in) называют приложение, которое дополнительно может быть установлено в Eclipse. Примером дополнения может выступать JDT. Проект Java development tools (JDT) с помощью JDT-плагина обеспечивает среду разработки Java-приложений, включая создание Eclipse-плагинов. JDT-плагин добавляет перспективу Java в панель инструментов и Javaгруппу шаблонов в команду New меню File, а также предоставляет набор окон, редакторов и других инструментов для работы с Java-кодом. Eclipse-плагины добавляют к Eclipse-платформе новые типы редакторов, представлений и перспектив. К существующим редакторам, представлениям и перспективам могут добавляться новые действия в меню и панелях инструментов. После того как вы нажмете кнопку OK на окне приветствия, появится страница приветствия (рис. 1.7), на которой имеется 5 графических кнопок: · Overview – обзор, содержащий ссылки на обучающие интернет-ресурсы Eclipse; · Tutorials – уроки, содержат несколько примеров создания простейших приложений Java; · What’s new – содержит обзор основных нововведений; · Samples – примеры, содержит несколько примеров разработки, которые должны быть предварительно установлены для того, чтобы их можно было просмотреть; · Workbench – «рабочий стол», рабочая область программиста.
Рис. 1.7 – Окно приветствия Eclipse Перспектива Java содержит окно редактора и представления Package Explorer, Outline, Problems, Javadoc, Declaration (табл. 1.4). Перспектива Debug содержит окно редактора и представления Debug, Breakpoints, Console, Tasks (табл. 1.4). Таблица 1.4 – Характеристика представлений
Настройка web-сервера Apache Tomcat Чтобы начать работать с Servlet, вам необходимо скачать Tomcat Web Server и объявить его в IDE. В примере используется версия 9. Архив версии сервера можно скачать по ссылке: https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.37/bin/ Cкачаем из раздела Binary Distributions тип поставки Core в формате zip и распакуем скачанный архив apache-tomcat-9.0.37.zip (рис. 1.8). Не забудьте, куда вы его распаковали.
Рис. 1.8 – Загрузка Tomcat Web Server Для настройки сервера Tomcat используются следующие конфигурационные XML-файлы, размещенные в каталоге /usr/share/tomcat/conf/ (рис. 1.9).
Рис. 1.9 – Конфигурационные XML-файлы Tomcat server.xml: общие настройки сервера (порты, виртуальные хосты и пр.). web.xml: параметры, общие для всех web-приложений на текущем сервере. Настройки отдельных web-приложений задаются в их собственных файлах /WEB-INF/web.xml (здесь можно провести аналогию с использованием файла .htaccess в Apache). context.xml: общие настройки управления контентом. tomcat-users.xml: список пользователей и групп (ролей). В Eclipse выберите Window → Preferences и Server → Runtime Environments (рис. 1.10, 1.11).
Рис. 1.10 – Настройка сервера Tomcat
Рис. 1.11 – Объявление Tomcat в Eclipse
Далее необходимо выбрать тип WebServer Tomcat (рис. 1.12).
Рис. 1.12 – Выбор типа WebServer Tomcat Укажите место Tomcat, куда вы извлекли архив на жестком диске и нажмите кнопку Apply and Close, чтобы закончить (рис. 1.13, 1.14).
Рис. 1.13 – Настройка пути к серверу Tomcat
Рис. 1.14 – Настройка среды выполнения сервера
2 Развертывание сервлета в IDE Eclipse Создадим web-проект в Eclipse: File → New → Dynamic Web Project (рис. 1.15).
Рис. 1.15 – Выбор мастера настройки нового web-проекта В появившемся окне вводим название проекта MyWeb (в поле Project name). Заметьте, что Target runtime является сервер, который мы создали ранее (рис. 1.16). Также вы можете поменять версию спецификации сервлетов в Dynamic web module version.
Рис. 1.16 – Настройка нового web-проекта Нажимаем Next, в следующем окне тоже Next, в окне Web Module ставим метку возле надписи Generate web.xml deployment descriptor (это нам понадобится для создания дескриптора, где распишем для Tomcat, какие URL-запросы передавать на какие сервлеты) и жмем Finish (рис. 1.17).
Рис. 1.17 – Настройка конфигурации web-модуля Проект создан, можно добавлять web-страницы и сервлеты. Сам проект имеет структуру, представленную на рисунке 1.18.
Рис. 1.18 – Структура web-проекта
JavaResources JavaResources содержит исходный код Java-проекта для классов, компонентов и сервлетов. Когда эти ресурсы добавляются в web-проект, они автоматически компилируются, а созданные файлы добавляются в каталог WEB-INF/classes. Содержимое исходного каталога не упаковывается в файлы WAR, если только опция не указана при создании файла WAR. WebContent Обязательное расположение всех web-ресурсов, включая HTML, JSP, графические файлы и т. д. Если файлы не помещены в этот каталог (или в структуру подкаталога этого каталога), файлы не будут доступны при выполнении приложения на сервере. Папка web-содержимого представляет содержимое файла WAR, который будет развернут на сервере. Любые файлы, не находящиеся в папке web-материалов, считаются ресурсами времени разработки (например, файлы .java, .sql и .mif) и не развертываются, когда проект подвергается модульному тестированию или публикации. Примечание. Хотя для папки по умолчанию задано имя WebContent, вы можете изменить имя в Project Explorer, щелкнув правой кнопкой мыши по папке и выбрав Refactor → Rename или на web-странице диалога свойств проекта. В динамическом web-проекте изменение имени папки приведет к обновлению выходного каталога сборки Java. WEB-INF Этот каталог содержит вспомогательные web-ресурсы для web-приложения, включая файл web.xml, а также каталоги классов и lib. META-INF Этот каталог содержит файл MANIFEST.MF, который используется для сопоставления путей классов для зависимых файлов JAR, которые существуют в других проектах в том же проекте Enterprise Application. Запись в этом файле обновит путь к классу проекта во время выполнения и параметры сборки Java, чтобы включить в него указанные JAR-файлы. Lib Поддерживающие файлы JAR, на которые ссылается ваше web-приложение. Любые классы в файлах .jar, размещенных в этом каталоге, будут доступны для вашего web-приложения. Добавим в проект пакет com (рис. 1.19, 1.20).
Рис. 1.19 – Выбор мастера Package
Рис. 1.20 – Настройка нового пакета Добавим сервлет, который будет обрабатывать ввод данных с webформы: Java Resources → New → Servlet (рис. 1.21).
Рис. 1.21 – Выбор мастера Servlet В появившемся окне в поле Java package вставляем название пакета com, в поле Class name пишем Login. Жмем Next. В следующем окне жмем Next, в последнем окне жмем Finish (рис. 1.22).
Рис. 1.22 – Настройка нового сервлета Установим Tomcat в конфигурации среды выполнения (Runtime Environment) (рис. 1.23).
Рис. 1.23 – Настройка конфигурации проекта Созданный сервлет появится в окне редактора (рис. 1.24).
Рис. 1.24 – Отображение сервлета в окне редактора По давней традиции, восходящей к языку Си, учебники по языкам программирования начинаются с программы Hello World. Не будем нарушать эту традицию. Добавим в метод doGet() вывод сообщения Hello World (рис. 1.25): response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println("Hello World");
Рис. 1.25 – Программный код сервлета на Java Это и есть код нашего сервлета. Мы создаем наследника класса HttpServlet. В нем реализуем один метод doGet(), в котором вначале сообщаем, что сервлет будет выдавать HTML-документ. У метода есть входящие параметры, типы которых – HttpServletRequest (запрос со стороны клиента) и HttpServletResponse (ответ со стороны сервера). В строке response.setContentType("text/html") мы сообщаем о том, что отображать мы будем страничку как HTML. Потом вытаскиваем из response ссылку на экземпляр PrintWriter. И то, что мы будем писать в нем, будет отдано сервером на запрос от клиента. Аннотация @WebServlet("/Login") указывает на то, что данный сервлет будет доступен по адресу <URL>/Login. Для того чтобы запустить сервлет, нам нужно отредактировать дескриптор развертывания.
3 Написание дескриптора развертывания Первым шагом к созданию приложения является определение так называемого дескриптора развертывания. Он указывает, как приложение должно быть развернуто в определенной среде. Когда дело касается webприложений, дескриптор развертывания представляет собой простой XMLфайл, называемый web.xml, и является частью стандартной спецификации Java EE (рис. 1.26).
Рис. 1.26 – Программный код web.xml Web.xml – это файл, где вы 1) регистрируете и создаете отображение URL на ваши сервлеты; 2) регистрируете и задаете любые фильтры и слушатели приложения; 3) задаете начальные параметры контекста в виде пар имя/значение; 4) конфигурируете страницы ошибок; 5) указываете начальные файлы приложения; 6) задаете время простоя сеанса (тайм-аут); 7) задаете настройки безопасности, управляющие тем, кто к каким web-компонентам он может обращаться. Это только основная часть настроек, которые можно задать в web.xml. Вставим: <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema- instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/ja- vaee http://xmlns.jcp.org/xml/ns/javaee/web- app_4_0.xsd" id="WebApp_ID" version="4.0"> <display-name>MyWeb</display-name> <Servlet> <Servlet-name>Login</Servlet-name> <Servlet-class>com.Login</Servlet-class> </Servlet> <Servlet-mapping> <Servlet-name>Login</Servlet-name> <url-pattern>/</url-pattern> </Servlet-mapping> </web-app> В теге Servlet-class мы отмечаем запускаемый класс сервлета, а в теге url-pattern указываем url – имя запускаемого сервлета. Далее обязательно перезапустим сервер (рис. 1.27).
Рис. 1.27 – Остановка сервера Далее стартуем (рис. 1.28).
Рис. 1.28 – Запуск сервера Запускаем сервлет (рис. 1.29).
Рис. 1.29 – Запуск сервлета Если вы увидели в браузере надпись Hello World (рис. 1.30), то запуск прошел удачно.
Рис. 1.30 – Результат работы сервлета В строке http://localhost:8080/MyWeb/ 8080 – это порт по умолчанию, который занимает Tomcat. Если же вы увидели ошибку 404 или 500, то что-то сделали не так.
4 Обработка запросов HTTP Далее попробуем обработать запросы. В классе HttpServlet определены методы doGet() и doPost() для реакции на запросы типа GET и POST клиента. Эти методы вызываются методом service() класса HttpServlet, который, в свою очередь, вызывается при поступлении запроса на сервер. Для начала создадим страницу JSP mypage.jsp с формой для ввода имени. Далее cделаем JSP-страницу mypage2.jsp, на которую будет осуществляться переход при нажатии кнопки. На этой странице будем отображать приветствие по имени. Чтобы добавить к проекту web-страницу, идем в папку WebContent, вызываем контекстное меню и выбираем пункт JSP File (рис. 1.31). В появившемся окне в поле File name пишем название файла mypage.jsp, в следующем окне выбираем New → JSP и жмем Finish.
Рис. 1.31 – Создание JSP Создадим mypage.jsp (рис. 1.32).
Рис. 1.32 – Создание JSP Запишем в mypage.jsp: <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <form action="Login" method="POST"> Name:<input type="text" name="user"/> <input type="submit" value="Войти"/> </form> </body> </html> Далее также создадим еще одну страницу mypage2.jsp для передачи введенного имени сервлетом. Чтобы принять данные на JSP, нужно обратится к ключу по определенной конструкции ${name}. Запишем код в mypage2.jsp: <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <h1>Welcome, ${name}</h1> </body> </html> Добавим эти файлы в приветствие в web.xml: <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema- instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" id="WebApp_ID" version="4.0"> <display-name>MyWeb</display-name> <Servlet> <Servlet-name>Login</Servlet-name> <Servlet-class>com.Login</Servlet-class> </Servlet> <Servlet-mapping> <Servlet-name>Login</Servlet-name> <url-pattern>/</url-pattern> </Servlet-mapping> <welcome-file-list> <welcome-file>mypage.jsp</welcome-file> <welcome-file>mypage2.jsp</welcome-file> </welcome-file-list> </web-app> Servlet с url-pattern = / Этот сервлет по умолчанию будет использоваться для обработки запроса (request), который имеет ссылку, не совпадающую ни с каким urlpattern другого сервлета, объявленного в вашем приложении. На рисунке ниже показано, как WebContainer решает, какой сервлет использовать для обслуживания запроса от клиента (рис. 1.33) [4].
Рис. 1.33 – Конфигурация ссылки для сервлета Укажем его в аннотации: @WebServlet(urlPatterns = "/Login") Далее перепишем сервлет: package com; import java.io.IOException; import javax.Servlet.ServletException; import javax.Servlet.annotation.WebServlet; import javax.Servlet.http.HttpServlet; import javax.Servlet.http.HttpServletRequest; import javax.Servlet.http.HttpServletResponse; /** * Servlet implementation class Login */ @WebServlet(urlPatterns = "/Login") public class Login extends HttpServlet { private static final long serialVersionUID = 1L; /** * @see HttpServlet#HttpServlet() */ public Login() { super(); // TODO Auto-generated constructor stub } /** * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) */ protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.getServletContext().getRequestDis- patcher("/mypage.jsp").forward(request, response); } @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String inputName= request.getParameter("user"); request.setAttribute("name", inputName); request.getServletContext().getRequestDispatcher("/mypage2.jsp").include(request, response); } } Методы doGet() и doPost() принимают в качестве параметров объекты HttpServletRequest и HttpServletResponse, которые дают возможность осуществлять взаимодействие между клиентом и сервером. Методы интерфейса HttpServletRequest облегчают доступ к данным запроса. Методы интерфейса HttpServletResponse облегчают возврат результатов web-клиенту в виде HTML. Для того чтобы выполнить перенаправление запроса, вначале с помощью метода getServletContext() получаем объект ServletContext, который представляет контекст запроса. Затем с помощью его метода getRequestDispatcher() получаем объект RequestDispatcher. Путь к ресурсу, на который надо выполнить перенаправление, передается в качестве параметра в getRequestDispatcher. Затем у объекта RequestDispatcher вызывается метод forward(), в который передаются объекты HttpServletRequest и HttpServletResponse. Метод forward() класса RequestDispatcher позволяет перенаправить запрос из сервлета на другой сервлет, HTML-страницу или страницу JSP. Также можно использовать метод include() в RequestDispatcher для включения содержимого в страницу. И если мы обратимся к сервлету, то фактически мы получим содержимое страницы, который будет перенаправлен запрос. String inputName= request.getParameter("user"); – получим введенное имя пользователя в текстовое поле по имени user. request.setAttribute("name", inputName); – далее установим полученное значение атрибуту ${name} в mypage2.jsp. Перезапустим сервлет (рис. 1.34).
Рис. 1.34 – Перезапуск сервлета Сначала стартует страница mypage.jsp (рис. 1.35), после ввода имени и нажатия кнопки Войти откроется страница mypage2.jsp (рис. 1.36).
Рис. 1.35 – Открытие страницы mypage.jsp
Рис. 1.36 – Открытие страницы mypage2.jsp
5 Общее задание 1. Изучить технологию Java Servlets. 2. Описать жизненный цикл работы сервлетов. 3. Разработать сервлет по варианту. 4. Разработать интерфейс и связать его с сервлетом. 5. Готовое web-приложение разместить на сервере Tomcat. 6. Отправить на проверку проект с отчетом в архиве.
6 Задание по вариантам Задание по вариантам предполагает создание страницы с аутентификацией для своего проекта. Необходимо предусмотреть как минимум два вида пользователей с разными итоговыми страницами, на которые осуществляется переход в зависимости от введенного логина и пароля. Спроектировать обработку ввода неправильного логина или пароля с выводом соответствующего сообщения как о несуществующем логине, так и о вводе несоответствующего пароля для выбранного логина. Выбор варианта лабораторной работы осуществляется по общим правилам с использованием следующей формулы: V = (N × K) div 100, где V – искомый номер варианта, N – общее количество вариантов, K – код варианта, div – целочисленное деление. При V = 0 выбирается максимальный вариант. Варианты проектов: 1. Сайт для салона красоты. 2. Сайт для больницы. 3. Сайт для библиотеки. 4. Сайт для кинотеатра. 5. Образовательный сайт по ИТ-программированию. 6. Новостной сайт. 7. Сайт для аптеки. 8. Сайт для проката автомобилей. 9. Сайт для факультета. 10. Сайт для школы. 11. Сайт для хостинга файлов. 12. Сайт для техподдержки пользователей. 13. Сайт для прогноза погоды. 14. Сайт «Доска объявлений». 15. Сайт «Планета Зоо».
Требования к содержанию и оформлению отчета После выполнения работы студент должен представить отчет о проделанной работе с описанием полученных результатов и выводов. Отчет по лабораторным работам должен содержать следующие структурные части: · титульный лист (1 стр.); · содержание (1 стр.); · цели и задачи лабораторной работы (1 стр.); · формулировка индивидуального задания; · перечень библиотек и основных классов, методов, использованных в программе; · результаты работы программы в виде скриншота; · анализ полученных результатов; · выводы о проделанной работе; · листинг программы с комментариями; · приложения. Оформление отчета должно соответствовать требованиям образовательного стандарта вуза ОС ТУСУР 01–2013 «Работы студенческие по направлениям подготовки и специальностям технического профиля. Общие требования и правила оформления» (https://regulations.tusur.ru/documents/70). | |||||||||||||||||||||




































