Loading presentation...

Present Remotely

Send the link below via email or IM

Copy

Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in our knowledge base article

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.

DeleteCancel

Make your likes visible on Facebook?

Connect your Facebook account to Prezi and let your likes appear on your timeline.
You can change this under Settings & Account at any time.

No, thanks

Java EE Web Application

No description
by

Sergey Mironov

on 7 October 2013

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of Java EE Web Application

Java EE Web Application
Что такое Java EE
Java EE
- платформа, предоставляющая API и среду выполнения

для разработки и запуска промышленных приложений,

включая сетевые и веб сервисы,

и другие крупномасштабные, многопоточные, масшатибруемые, надежные, и защищенные сетевые приложения
Технологии Java EE
Enterprise JavaBeans
— спецификация технологии серверных компонентов, содержащих бизнес-логику
JavaServer Pages
— динамическая генерация web-страниц на стороне сервера
Servlets

- обслуживание запросов web-клиентов
JavaServer Faces
— компонентный серверный фреймворк для разработки пользоватеьских интерфейсов web-приложений
JavaMail
- получение и отправка электронной почты
И другие...
Как устроены Web-приложения на Java EE
Web-контейнер
EJB-контейнер
Цель платформы
- упростить разработку корпоративных приложений,

предоставив разработчику удобный "фундамент" для построения приложения
— это сервер, принимающий HTTP-запросы от клиентов и выдающий им HTTP-ответы, обычно вместе с HTML-страницей, изображением, файлом, медиа-потоком или другими данными
Web-сервер
это компонент веб сервера, который взаимодействует с Java сервлетами.

Веб-контейнер ответственен за управление жизненным циклом сервлетов и аддресацию URL конкретному сервлету.

Веб-контейнер также предоставляет JSP контейнер.
...
Servlet
Жизненный цикл Servlet'a
javax.serlvet.Servlet
void init(ServletConfig config)
ServletConfig getServletConfg()
String getServletInfo()
void service(ServletRequest request, ServletResponse response)
void destroy()
контейнер сервлета вызывает этот метод для ответа на клиентский запрос
производит инициализацию сервлета
метод вызывается в конце жизнненого цикла сервлета, для осовобождений ресурсов
возвращает информацию о сервлете(например, имя автора, номер версии сервлета и т.д.)
Класс javax.serlvet.http.HttpServlet
void doGet(HttpServletRequest request,
HttpServletResponse response)
void doPost(HttpServletRequest request,
HttpServletResponse response)
javax.serlvet.http.HttpServletRequest
javax.serlvet.http.HttpServletResponse
String getParameter(String name)
Cookie[] getCookies()
Enumeration getParameterNames()
HttpSession getSession(boolean create)
String[] getParametrValues(String name)
возвращает объект, который содержит параметры инициализации и запуска сервлета
обрабатывает POST запросы клиента
обрабатывает GET запросы клиента
Http-servlet
void addCookie(Cookie cookie)
ServletOutputStream getOutputStream()
PrintWriter getWriter()
void setContentType(String type)
Структура проекта веб-приложения
/
WEB-INF/
web.xml - файл настроек приложений
classes/ - скомпилированные классы
lib/ - jar'ы c нужными библиотками
http-контент - т.е. все html, css, js, jsp...
Servlet
является Java-интерфейсом, реализация которого расширяет функциональные возможности сервера
Что такое Servlet?
JSP
JSTL
Java EE
Цель
Http-servlet
- servlet, который расширяет функциональные возможности web-сервера
Протокол HTTP
HTTP
- протокол прикладного уровня передачи данных

В настоящее время повсеместно используется для получения информации с веб-сайтов
Структура HTTP-сообщения:
Стартовая строка — определяет тип сообщения и содержт URI, запрашиваемого ресурса
Заголовки— характеризуют тело сообщения, параметры передачи и прочие сведения
Тело сообщения — непосредственно данные сообщения
Вид стартовой строки запроса:
Метод URI HTTP/Версия
Пример:
GET /wiki/HTTP HTTP/1.0
Методы:
GET
POST
HEAD
PUT
DELETE
...
Спасибо за внимание!
Вопросы?
Метод HTTP
определяет действие, которое необходимо произвести над указанным ресурсом
Методы HTTP
GET
Метод GET
используется для запроса содержимого указанного ресурса
Пример:
GET /path/resource?param1=value1&param2=value2 HTTP/1.1
Параметры запроса передаются в URI
POST
Структура HTTP сообщения
Метод POST
применяется для передачи пользовательских данных заданному ресурсу
Передаваемые данные включаются в тело запроса.
Метод POST предполагает, что по указанному URI будет производиться обработка передаваемого клиентом содержимого
HTTP Cookie
— небольшой фрагмент текстовых данных, отправленный веб-сервером и хранимый на компьютере пользователя.

Браузер всякий раз при попытке открыть страницу соответствующего сайта пересылает этот фрагмент данных веб-серверу в HTTP-запросе.
Сооkie применяется для сохранения данных на стороне пользователя, на практике обычно используется для:

аутентификации пользователя;
хранения персональных предпочтений и настроек пользователя;
отслеживания состояния сессии доступа пользователя;
ведения статистики о пользователях.
HTTP Cookie
Cookie содежит пару имя/значение, а также срок действия, путь и доменное имя.
javax.servlet.http.Cookie
String getDomain()
int getMaxAge()
String getName()

String getPath()
String getValue()
возвращает иия Cookie
возвращает значение Cookie
возвращает число, представляющее максимальный возраст cookie в секундах
возвращает строку, содержащую имя домена cookie
возвращает строку, содержащую префикс URL для cookie
Отслеживание состояния сеанса
HttpSession
javax.servlet.http.HttpSession
void invalidate()
Object getAttribute(String name)
Enumeration getAttributeNames()
String getId()
int getMaxInactiveInterval()
...
...
JSP
- это технология, которая помогает разработчикам создавать динамически генерируемые веб-страницы
JSP
Servlet
является Java-интерфейсом, реализация которого расширяет функциональные возможности сервера
Servlet
void doDelete(HttpServletRequest request,
HttpServletResponse response)
void doPut(HttpServletRequest request,
HttpServletResponse response)
обрабатывает DELETE запросы клиента
обрабатывает PUT запросы клиента
...
возвращает значение параметра запроса по имени
возвращает имена всех параметров запроса
для параметра с несколькими значениями возвращает все значения
возвращает массив объектов Cookie
возвращает объект HttpSession, ассоциированный с текущим сеансом клиента
...
возвращает бинарный поток вывода, позволяющий отправлять бинарные данные клиенту
возвращает символный поток вывода, позволяющий отправлять текстовые данные клиенту
задает MIME-тип ответа клиенту. MIME-тип позволяет понять клиенту как отображать данные
добавляет Cookie в заголовок ответа клиенту
...
возвращает идентификатор сессии
возвращает значение атрибута по имени
возвращает интервал в секундах, через которое контейнер убъет сиссию, если она будет не активна
закрывает сессию
возвращает имена всех сохраненных в сессии атрибутов
war
(Web application ARchive) - это архив, содержащий файлы веб-приложения.
.war
Т.е. он содежит JSP, сервлеты, html-странцы, xml-файлы, Java-классы и другие файлы, которые вместе составляют web-приложение
Что такое JSP
JavaServer Pages (JSP) позволяют отделить динамическую часть страниц от статического HTML
JSP
- это технология, которая помогает разработчикам создавать динамически генерируемые веб страницы на основе HTML, XML и других типов документов
Заранее определенные переменные для JSP страниц
application
- объект, представляющий контейнер JSP страницы
Область видимости страницы
Область видимости запроса
Область видимости приложения
response
- объект, представляющий ответ клиенту
Область видимости в пределах сеанса
session
- объект, предоставляет информацию о клиентском сеансе
pageContext
- предоставляет доступ ко всем пространствам имён, ассоциированным с JSP-страницей, а также к различным атрибутам страницы
out
- поток вывода, позволяющий записывать текст как часть ответа на запрос
config
- обеъкт, содержащий параметры конфигурации страницы
page
- предсталяет собой ссылку this для текущего экземпляра JSP-страницы
exception
- объект исключения, которое передается страницу сообщения об ошибках JSP. Объект доступен только на страице сообщения об ошибках JSP
JSP страницы имеют расширение .jsp и размещаются там же, где и обычные Web страницы
request
- объект, представляющий клиентский запрос
Жизненный цикл JSP страницы
Ключевые компоненты JSP
Директивы
Действия
Скриплеты
Библиотеки тегов
Комментарии
сообщения для контейнера JSP, которые дают возможность задвать параметры страницы, включать содержимое из других ресурсов, а также подключать библиотеки тегов
являются составной частью механизма расширения тегов, который дает возможность создавать собственные теги
инкапсулируют функциональные возможности в предопределенных тегах, которые можно встраивать в JSP страницу
являются пояснением к коду JSP страницы
дают возможность вставлять код Java, который взаимодействует с компонентами JSP страницы, для обработки запроса
Директивы ограничиваются
<%@
и
%>
Директивы обрабатываются на этапе трансляции
Виды деректив:
page
- задает глобальные настройки для JSP страницы
include
- включает содержимое другого ресурса в JSP страницу
taglib
- дает возможность подключать библиотеки тегов
Существуют три формы:
Выражения, имеющие форму
<%=
выражение
%>,
которые обрабатываются и направляются на вывод
Скриплеты, имеющие форму
<%
код
%>
, которые вставляются в метод service сервлета
Объявления, имеющие форму
<%!
код
%>
, которые вставляются в тело класса сервлета, вне существующих методов.
Виды комментариев:
<%-- комментарий --%>
- комментарий JSP
<!-- комментарий -->
- HTML комментарий
// комментарий
- Java-комментарий
/* комментарий */
- Java-комментарий
Стандартные действия JSP:
jsp:include
- подключает файл в момент запроса страницы
jsp:useBean
- поиск или создание нового экземпляра JavaBean
jsp:setProperty
- установка свойства JavaBean
jsp:getProperty
- получение свойства JavaBean
jsp:forward
- перенаправляет запрос на другую страницу
jsp:text
- вывод текста
jsp:plugin
-добавить в страницу подключаемый компонент в виде специфичного для браузера HTML-элемента OBJECT или EMBED
Действия обрабатываются на этапе запроса
1. Трансляция JSP-страницы в сервлет
2. Компиляция сервлета
3. Загружается класс сервлета страницы JSP
4. Создается экземпляр класса сервлета
5. Происходит иницинализация экземпляра сервлета вызовом метода _jspInit
6. Вызывается метод _jspService, для обработки клиентского запроса
Если контейнеру нужно удалить сервлет страницы JSP, он вызывает метод _jspDestroy.
Что такое JSTL
Она расширяет спецификацию JSP, добавляя библиотеку JSP тегов для общих нужд, таких как:
разбор XML данных
условная обработка
создание циклов
поддержка интернационализации
JSTL
- это стандартная библиотека тегов JSP
JSTL является альтернативой скриплетам

Использование стандартизованного множества тегов предпочтительнее, поскольку получаемый код легче поддерживать и проще отделять бизнес-логику от логики отображения
Группы тегов JSTL
Core tags
Formating tags
SQL tags
XML tags
JSTL Functions
Группа, содержит самые часто используемые JSTL теги
Подключение:
<%@ taglib prefix="c"
uri="http://java.sun.com/jsp/jstl/core" %>
Теги группы, используются для форматирования и отображения текста, дат, времени, и чисел для интернационализационных web-сайтов
Подключение:
<%@ taglib prefix="fmt"
uri="http://java.sun.com/jsp/jstl/fmt" %>
Теги группы используются для взаимодействия с реалиционными базами данных
Подключение:
<%@ taglib prefix="sql"
uri="http://java.sun.com/jsp/jstl/sql" %>
Подключение:
<%@ taglib prefix="x"
uri="http://java.sun.com/jsp/jstl/xml" %>
Теги группы, предоставляют централизованный путь по созданию и манипулированию xml-документами
Подключение:
<%@ taglib prefix="fn"
uri="http://java.sun.com/jsp/jstl/functions" %>
Набор предопределенных полезных функций
Пример
Примеры тегов:
<c:out>
- аналогичен <%= %>, но используется для выражений
<c:if>
- простой условный, тег, тело которого обрабатывается если уловие истино
<c:choose>
- простой условный тег, который создает контекст для взаимоисключающих условных операций, отмеченных <с:when> и <с:otherwise>
<c:forEach>
- представляет собой цикл forEach
JSP Expression Language
Неявные объекты EL
Примеры:
<c:out value="${myBean.myField}" />
${myBean.addNewOrder('orderName')}
Expression Language (EL)
— скриптовый язык выражений, который позволяет получить доступ к Java компонентам (JavaBeans) из JSP
Объекты HttpSession находятся на сервере и автоматически ассоциируются с клиентом,
например, с помощью cookies или механизма перезаписи URL
Объекты HttpSession в отличие от cookies могут хранить не только текстовые данны, но и объекты любого типа
web.xml
Аннотация WebServlet
Структура проекта
Пример:
@WebServlet(name = "HelloWorldServlet", urlPatterns = {"/HelloWorldServlet"})
javax.servlet.annotation.WebServlet
- аннотация, которая обрабатывается контейнером сервлетов во время развертывания приложения, и делает сервлет доступным по указанному URL шаблону
web.xml
- файл настройки приложения, определяет способ сопоставления URL с сервлетами, URL которые требуют аутентификации и других сведений
Фильтры
Фильтр – это класс, который работает с запросом как сервлет, но допускает последующую обработку запроса другими фильтрами или сервлетами
Фильтр может выполнять дополнительные задачи, такие как:
регистрация
специальные проверки аутентификации
добавление данных к объектам запросов и ответов
шифрование данных
сжатие данных
javax.servlet.Filter
void destroy()
void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
void init(FilterConfig filterConfig)
производит инициализацию фильтра
метод вызывается в конце жизнненого цикла фильтра, для осовобождений ресурсов
метод вызывается контейнером каждый раз, когда поступает запрос
Класс фильтра реализует интерфейс javax.servlet.Filter
Порядок применения фильтров определяется порядком следования <filter-mapping> в web.xml
Используется внутри JSP тегов для отделения Java кода от JSP для обеспечения лёгкого доступа к Java компонентам и отделения бизнес логики от представления
EL призван упростить слой представления, заменяя трудно поддериживаемые скриплеты и неуклюжие jsp:useBean и jsp:getProperty на короткие и читаемые выражения вида ${expression}
<jsp:useBean id="customer" type="coreservlets.NameBean"
scope="session" />
<jsp:getProperty name="customer" property="firstName" />
<%@ page import="coreservlets.NameBean" %>
<% NameBean person = (NameBean)pageContext.findAttribute("customer");%>
<%= person.getFirstName() %>
${customer.firstName}
Скриплет
useBean + getProperty
EL
Операторы
+, -, *, /
==, !=, <, >, <=, >=
&&, ||, !
[], .
empty
? :
param - В этом контексте находятся все переменные, полученные страницей от пользователя либо как параметры адресной строки, либо как поля html-формы

paramValues - Список значений тех переменных, которые были переданы в страницу пользователем, правда, формат отличен от предыдущего случая. Если там param фактически имел тип HashMap<String, String>, то здесь HashMap<String, String [] >

header - В этом объекте хранится информация об http-заголовках которые были переданы от браузера клиента вашему веб-серверу

headerValues - Список значений http-заголовков

initParam - Конфигурационные параметры, указанные для вашей страницы, сервлета в файле web.xml

cookie - Список переменных помещенных внутрь cookie

pageContext - Ссылка на объект pageContext
pageScope
- контекст страницы (т.е. переменные объявленные на этой странице и доступные только для этой страницы)

requestScope
- Доступ к таким переменным имеют все страницы, сервлеты обслуживающие один, текущий, вот этот самый, запрос пользователя

sessionScope
- Доступ к переменным сохраняется на протяжении всего сеанса пользователя (пока не закроет браузер или не истечет предельное время бездействия)

applicationScope
- Доступ к переменным сохраняется изо всех страниц размещенных внутри веб-приложения (самый глобальный контекст)
Функции
[ns:]f([a1[,a2[,...[,an]]]])
${fn:length("Get my length")}
Диаграмма классов
Full transcript