Стажировка-2015. Разработка. Занятие 3. Серверные...
TRANSCRIPT
Серверные Java-приложения
Клиент - сервер
Протокол HTTP
● HTTP (HyperText Transfer Protocol) – протокол передачи гипертекста
● Работает поверх TCP/IP● Адрес узла – URL● Не сохраняет промежуточное состояние
https://ru.wikipedia.org/wiki/HTTP
Структура протокола HTTP
Каждый HTTP-запрос состоит из 3-х частей:1. Стартовая строка: метод, URL, версия, код состояния2. Заголовки3. Тело запроса
Структура протокола HTTP
Запрос клиента:GET /news/recent HTTP/1.1Host: www.example.com
Стартовая строка ответа сервера:HTTP/1.0 200 OK
HTTP методы
● GET● POST● PUT● DELETE● …и остальные
Коды состояния HTTP
Код состояния = код ответа + поясняющая фраза
200 – OK404 – Not Found
Заголовки HTTPServer: Apache/2.2.11 (Win32) PHP/5.3.0Last-Modified: Sat, 16 Jan 2010 21:16:42 GMTContent-Type: text/plain; charset=windows-1251Content-Language: ru
Заголовки HTTP
Запрос клиента:
GET /wiki/страница HTTP/1.1Host: ru.wikipedia.orgUser-Agent: Mozilla/5.0 (X11; U; Linux i686; ru; rv:1.9b5) Gecko/2008050509 Firefox/3.0b5Accept: text/htmlConnection: close(пустая строка)
Заголовки HTTP
Ответ сервера:HTTP/1.1 200 OKDate: Wed, 11 Feb 2009 11:20:59 GMTServer: ApacheX-Powered-By: PHP/5.2.4-2ubuntu5wm1Last-Modified: Wed, 11 Feb 2009 11:20:59 GMTContent-Language: ruContent-Type: text/html; charset=utf-8Content-Length: 1234Connection: close(пустая строка)
Cookie и сессии
Cookie – небольшой фрагмент данных, отправленный сервером и хранимый на компьютере пользователя.
Cookie и сессии
Сессия - механизм, позволяющий однозначно идентифицировать браузер и создающий для этого браузера файл на сервере, в котором хранятся переменные сеанса.
Java
Сервлеты
Предназначены для динамического формирования содержимого ответа на запрос клиента по сети. Выполняются в специальной среде исполнения, создаваемой контейнером сервлетов.
Контейнеры сервлетов
● Apache Tomcat● Jetty● JBoss● GlassFish● IBM WebSphere
Сервлеты
Общая функциональность, не зависит от протокола.
Логика для HTTP
Логика для конкретного приложения
Жизненный цикл
Параметры методов
● javax.servlet.http.HttpServletRequest request
● javax.servlet.http.HttpServletResponse response
Регистрация сервлета
web.xml:<servlet> <servlet-name>FirstServlet</servlet-name> <servlet-class>it.sevenbits.FirstServlet</servlet-class></servlet><servlet-mapping> <servlet-name>FirstServlet</servlet-name> <url-pattern>/</url-pattern></servlet-mapping>
JSP
JSP (JavaServer Pages) — технология, позволяющая веб-разработчикам создавать содержимое, которое имеет как статические, так и динамические компоненты.
Компиляция jsp
Jasper — механизм JSP Tomcat’а. Jasper анализирует JSP-файлы, чтобы компилировать их в Java код, как сервлеты (которые могут быть обработаны с помощью Catalina).
Элементы JSP
Комментарии :
● исходного кода JSP <%-- jsp --%>● HTML-разметки. <!-- html -->
Элементы JSP
Скриптовые элементы
● Объявления <%! одна или несколько деклараций %>
● Выражения <%= одно выражение %>● Скриплеты <% скриплет %>
Объявления JSP<%! private int accessCount = 0; %>Количество обращений к странице с момента загрузки сервера: <%= ++accessCount %>
Выражения JSPТекущее время: <%= new java.util.Date() %>Имя вашего хоста: <%= request.getRemoteHost() %>
Скриплеты JSP<% if (Math.random() < 0.5) { %> <B>Удачного</B> вам дня!<% } else { %> <B>Неудачного</B> вам дня!<% } %>
Скомпилированный:if (Math.random() < 0.5) { out.println("<B>Удачного</B> вам дня!");} else { out.println("<B>Неудачного</B> вам дня!");}
Элементы JSP
Директивы:
● page● include● taglib
<%@ директива атрибут="значение" %>
Элементы JSP
Действия:jsp:text — Вывод текста;jsp:useBean — Поиск или создание нового экземпляра JavaBean;jsp:setProperty — Установка свойств JavaBean;jsp:getProperty — Вставить свойство JavaBean в поток вывода;jsp:include — Подключает файл в момент запроса страницы;jsp:forward — Перенаправляет запрос на другую страницу;jsp:param — Добавляет параметры в объект запроса, например в элементах forward, include, plugin.;
JSTL<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<c:set var="myName" value="Alex"/>
<h1>${myName}</h1>
<c:if test="${10 > 9}"> <p>True<p></c:if><c:if test="${10 < 9}"> <p>False<p></c:if>
<c:forEach var="num" items="${list}">
<p>${num}</p>
</c:forEach>
Структура warindex.jsplist.jspWEB-INF/|----web.xml|----lib/| |----mysql-5.jar| |----jstl-1.2.jar|----classes/| |----full.path/| | |----Servlet.class| | |----Repository.classMETA-INF/
https://github.com/IvanIvashchenko/[email protected]: sin_error88