- •Характеристика бази практики.
- •2. Мета переддипломної практики.
- •3. Індивідуальне завдання.
- •4. Зміст та результати виконаних робіт
- •4.1 Календарний план-графік переддипломної практики
- •4.2. Результати виконання індивідуального завдання. Анотація
- •4.2.1. Теоретичні положення
- •4.2.2. Хід роботи Крок 1
- •Висновки за результатами практики
- •Соколов е. Технологии Java для разработки веб-приложений :[Електронний ресурс]. - Режим доступа: http://www.Techinfo.Net.Ru/docs/web/javawebdev.Html.
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.
Йдемо сюди http://tomcat.apache.org/download-70.cgi і качаємо Tomcat 7.0.
Рис.4. Сайт Apache Tomcat
2. Витягуємо з архіву;
Рис.5 Структура сервлет-контейнера Tomcat на локальному диску
Кладемо serhii-web.war(наш додаток) у папку webapp, яка знаходиться у Tomcat.
В папці bin знаходяться скріпти для роботи зі сервером, запускаємо команду startup, яка піднімає всі *.war архіви, відбувається деплой на локальний комп’ютер
Рис.5. Вікно командної стрічки для запуску сервера
Користувач посилає запит GET з ідентифікатором теста і отримує інформацію по тесту
Рис.6. Результат для користувача
