Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Bilobrov_pered_pract.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
148.42 Кб
Скачать

4.2.2. Хід роботи Крок 1

Створюємо звичайний Maven проект, назвемо його serhii-web. Структура проекту наступна:

Рис.1. Структура проекту

Тепер розберемо структуру проекту:

  • src / java / ua / artcode / controller - тут будуть лежати сервлети (сервлети будуть розглядатися в Крок 2)

  • src / ua / artcode / dao - тут будуть класи, обєкти яких будуть з’єднуватися з певним хранилищем даних та виконувати CRUD(Create, Read, Update, Delete) операції

  • src / ua / artcode / entity - класи моделі нашої програми, для зручної роботи з даними у вигляді об’єктів

  • src / webapp - тут лежать всі файли які будуть використовуватися під view (наприклад img, css, jsp).

 

Крок 2

Тепер розберемо що таке Servlet. Servlet - це Java-інтерфейс, реалізація якого розширює функціональні можливості сервера. Servlet взаємодіє з клієнтами за допомогою принципу запит-відповідь за часту це запити GET, POST по протоколу HTTP / HTTPS. Для створення сервлета нам потрібно підключити залежності в Maven.

<dependency>

<groupId>javax.servlet</groupId>

<artifactId>javax.servlet-api</artifactId>

<version>3.0.1</version>

<scope>provided</scope>

</dependency>

<dependency>

<groupId>jstl</groupId>

<artifactId>jstl</artifactId>

<version>1.2</version>

</dependency>

Також вкажіть тип пакування у pom.xml

<packaging>war</packaging>

це говорить Maven-у що збирати треба в WEB проект, за замовчуванням він збирає jar.

Тепер потрібно додати 2 плагіна які дозволяють відкомпілювати і зібрати проект в war архів.

<plugin>

    <groupId>org.apache.maven.plugins</groupId>

    <artifactId>maven-compiler-plugin</artifactId>

    <configuration>

        <source>1.7</source>

        <target>1.7</target>

    </configuration>

</plugin>

 

Опишемо всі Сервлети, привяжемо url-адресу до конкретного сервлету у файлі web.xml

<servlet>

<servlet-name>ProductServlet</servlet-name>

<servlet-class>ua.artcode.controller.ProductServletController</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>ProductServlet</servlet-name>

<url-pattern>/test</url-pattern>

</servlet-mapping>

Тепер створимо клас ProductServletController який успадкуємо від SpringInjectionProcessServlet

public class ProductServletController extends SpringInjectionProcessServlet {

@Autowired

private TestDao testDao;

public void setTestDao(TestDao testDao) {

this.testDao = testDao;

}

private static final String PARAM_ID = "id";

private static final String TEST_PAGE = "WEB-INF/pages/test.jsp";

@Override

protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

String param = req.getParameter(PARAM_ID);

Product test = testDao.find(Integer.parseInt(param));

req.setAttribute("test", test);

RequestDispatcher rd = req.getRequestDispatcher(TEST_PAGE);

rd.forward(req,resp);

}

Як ви бачите тут ми перевизначили метод, як я вже згадував сервлети взаємодіють з клієнтом по засобом запит-відповідь по протоколу (HTTP), так от в основному це GET і POST. Увага! Головне не допускати таку помилку, що всього є два методи GET / POST їх насправді 9, це OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT, PATCH. І так розглянемо ці методи методи: doPost приймає і відправляє за допомогою запиту POST, doGet по засобом запиту GET. В обох методів є вхідні параметри типи яких - HttpServletRequest і HttpServletResponse. HttpServletRequest request - це запит з боку клієнта; HttpServletResponse response - це відповідь з боку сервера.

Крок 3

Не забуваємо, що метод GET спрацьовує коли ми просто заходимо по URL на сторіночку, а пост найчастіше використовується при передачі даних з форми, але за умови що медоти передачі даних форми вказаний POST. Створимо метод, який буде повертати інформац

protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

String param = req.getParameter(PARAM_ID);

Product test = testDao.find(Integer.parseInt(param));

req.setAttribute("test", test);

RequestDispatcher rd = req.getRequestDispatcher(TEST_PAGE);

rd.forward(req,resp);

}

Ми приймаємо PARAM_ID для того, щоб дізнатися які тести повертати на сторінку, потім за допомогою об’єкта testDao, який зв’язується з базою даних MySql і витягує об’єкт з інформацією про тест. По адресі jsp сторінки, ми перенаправляємо дані, покладені у обєкт сесії req.setAttribute("test", test) на сторінку, де об’єкт тесту буде розпарсено і відображено на сторінці.

Вигляд сторінки на яку приходить інформація test.jps

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

<%@ page contentType="text/html;charset=UTF-8" language="java" %>

<%@ page isELIgnored="false" %>

<html>

<head>

<title></title>

</head>

<body>

id : ${test.id}<br/>

name : ${test.name}<br/>

<br/>

</body>

</html>

Крок 4

Тепер зберемо проект в Maven

Спочатку очищаємо вмістимість папки для збірки

Рис.2. Вікно командного вікна

За допомогою команди package пакуємо всі клас файли і додаткові ресурси у веб архів з розширенням

serhii-web.war

Рис.3. Вікно командного вікна

 Крок 5

Установка і настройка Tomcat 7.0.

        1. Йдемо сюди http://tomcat.apache.org/download-70.cgi і качаємо Tomcat 7.0.

Рис.4. Сайт Apache Tomcat

2. Витягуємо з архіву;

Рис.5 Структура сервлет-контейнера Tomcat на локальному диску

  1. Кладемо serhii-web.war(наш додаток) у папку webapp, яка знаходиться у Tomcat.

В папці bin знаходяться скріпти для роботи зі сервером, запускаємо команду startup, яка піднімає всі *.war архіви, відбувається деплой на локальний комп’ютер

Рис.5. Вікно командної стрічки для запуску сервера

  1. Користувач посилає запит GET з ідентифікатором теста і отримує інформацію по тесту

Рис.6. Результат для користувача

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]