
- •Интернет-программирование
- •ИП. Сервлеты и JSP
- •ИП. Сервлеты и JSP
- •ИП. Сервлеты и JSP
- •ИП. Сервлеты и JSP. Отличия в работе
- •ИП. Сервлеты и JSP. Сервлет-контейнеры
- •ИП. Сервлеты и JSP. Структура приложения
- •ИП. Сервлеты и JSP. Структура приложения
- •ИП. Сервлеты и JSP. Структура приложения
- •ИП. Сервлеты и JSP. Структура приложения
- •ИП. Сервлеты и JSP. Структура приложения
- •ИП. Сервлеты и JSP. Структура приложения
- •ИП. Сервлеты и JSP. Структура сервлетов
- •ИП. Сервлеты и JSP. Структура сервлетов
- •ИП. Сервлеты и JSP. Стуктура сервлетов
- •ИП. Сервлеты и JSP. Работа сервлетов. Жизненный цикл
- •ИП. Сервлеты и JSP. Работа сервлетов.
- •ИП. Сервлеты и JSP. Работа сервлетов.
- •ИП. Сервлеты и JSP. Работа сервлетов
- •ИП. Сервлеты и JSP. Работа сервлетов
- •ИП. Сервлеты и JSP. Работа сервлетов
- •ИП. Сервлеты и JSP. Работа сервлетов
- •ИП. Сервлеты и JSP. Работа сервлетов
- •ИП. Сервлеты и JSP. Работа сервлетов
- •ИП. Сервлеты и JSP. Работа сервлетов
- •ИП. Сервлеты и JSP. Работа сервлетов. Пример web.xml файлаМИЭТ, 2017
- •ИП. Сервлеты и JSP. Идея JSP
- •ИП. Сервлеты и JSP. Архитектура приложения JSP
- •ИП. Сервлеты и JSP. Cинтаксис JSP
- •ИП. Сервлеты и JSP. Cинтаксис JSP
- •ИП. Сервлеты и JSP. Cинтаксис JSP
- •ИП. Сервлеты и JSP. Cинтаксис JSP
- •ИП. Сервлеты и JSP. Cинтаксис JSP. Атрибуты директив
- •ИП. Сервлеты и JSP. Cинтаксис JSP
- •ИП. Сервлеты и JSP. Cинтаксис JSP
- •ИП. Сервлеты и JSP. Cинтаксис JSP
- •ИП. Сервлеты и JSP. Cинтаксис JSP
- •ИП. Сервлеты и JSP. Cинтаксис JSP
- •ИП. Сервлеты и JSP. Компоненты JSP
- •ИП. Сервлеты и JSP. Компоненты JSP
- •ИП. Сервлеты и JSP. Компоненты JSP
- •ИП. Сервлеты и JSP. Компоненты JSP
- •ИП. Сервлеты и JSP. Компоненты JSP
- •ИП. Сервлеты и JSP. Компоненты JSP
- •ИП. Сервлеты и JSP.
- •ИП. Сервлеты и JSP. Выбор инструментария.
- •ИП. Сервлеты и JSP. Выбор инструментария.
- •ИП. Сервлеты и JSP. Выбор инструментария.
- •ИП. Сервлеты и JSP. Выбор инструментария.
- •ИП. Сервлеты и JSP. Выбор инструментария.
- •ИП. Сервлеты и JSP. Выбор инструментария.

ИП. Сервлеты и JSP. Работа сервлетов |
МИЭТ, 2017 |
Контекст сервера
Информация о контексте сервера доступна в любое время через объект ServletContext. Сервлет может получить этот объект, вызывая метод
getServletContext() объекта ServletConfig.
Некоторые, часто используемые, методы контекста сервлета
Метод |
Описание |
GetMimeType () |
Возвращает тип MIME данного файла. |
getRealPath () |
преобразует относительный или виртуальный путь в |
|
новый путь относительно месторасположения корня |
|
HTML-документов сервера. |
getServlet () |
Возвращает объект Servlet указанного имени. |
|
Полезен при доступе к службам других сервлетов. |
getServletNames () |
Возвращает список имен сервлетов, доступных в |
|
текущем пространстве имен. |
log () |
Записывает информацию в файл регистрации |
|
сервлета. Имя файла регистрации и его формат |
|
зависят от сервера. |
ИП. Сервлеты и JSP. Работа сервлетов |
МИЭТ, 2017 |
Пример записи сообщения в лог во время инициализации сервлета
import java.io.*; import javax.servlet.*;
public HelloMiet implements Servlet
{
private ServletConfig config;
public void init (ServletConfig config) throws ServletException
{
this.config = config;
ServletContext sc = config.getServletContext(); sc.log( "Started OK!" );
}
}
ИП. Сервлеты и JSP. Работа сервлетов |
МИЭТ, 2017 |
Объект Cookie
Основными методами этого объекта являются:
getName – получение имени ключика getValue — получениезначения ключика
setValue — установка нового значения ключика
Пример кода выбора значений всех ключиков
//Выбор значений всех ключиков Cookie cookies [] = request.getCookies (); for (int i = 0; i < cookies.length; i++) {
out.println(cookies[i].getName()+"="+cookies[i].getValue()+"<br>");
}
Пример кода установки значения ключика
Cookie cookie = new Cookie("key","value"); cookie.setMaxAge(60*60*24); response.addCookie(cookie);
ИП. Сервлеты и JSP. Работа сервлетов |
МИЭТ, 2017 |
Некоторые параметры сервера можно переопределить в конфигурационном файле приложения — web.xml.
Пример переопределения врмени сессии и создание параметра file-upload для указания пути хранения временных файлов
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.1" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-
app_3_1.xsd">
<session-config> <session-timeout>
30 </session-timeout>
</session-config>
<context-param>
<description>Location to store uploaded file</description> <param-name>file-upload</param-name>
<param-value>
C:\Program Files\Apache Software Foundation\Apache Tomcat 8.0.27\temp\
</param-value> </context-param>
</web-app>
Получение в JSP в переменную fileTemp пути, где хранятся временные файлы
<%
ServletContext context = pageContext.getServletContext();
String fileTemp = context.getInitParameter("file-upload");
%>
ИП. Сервлеты и JSP. Работа сервлетов |
МИЭТ, 2017 |
Для того, чтобы сервлет правильно работал на сервере, необходимо подготовить описание сервлета в файле web.xml. Теги файла web.xml показаны ниже:
<servlet> - блок, описывающий сервлеты <display-name> - название сервлета <description> - текстовое описание сервлета
<servlet-name> - имя сервлета <servlet-class> - класс сервлета
<init-param> - блок, описывающий параметры инициализации сервлета <param-name> - название параметра
<param-value> - значение параметра
<servlet-mapping> - блок, описывающий соответсвие url и запускаемого сервлета
<servlet-name> - имя сервлета
<url-pattern> - описывает url-шаблон
<session-config> - блок, описывающий параметры сессии <session-timeout> - максимальное время жизни сессии
<login-config> - блок, описывающий параметры, как пользователь будет логиниться к серверу <auth-method> - метод авторизации (BASIC, FORM, DIGEST, CLIENT-CERT)
<welcome-file-list> - блок, описывающий имена файлов, которые будут пытаться открыться при запросе только по имени директории (без названия файла). Сервер будет искать первый существующий файл из списка и загрузит именно его
<welcome-file> - имя файла
<error-page> - блок, описывающий соответствие ошибки и загружаемой при этом страницы <error-code> - код произошедшей ошибки
<exception-type> - тип произошедшей ошибки <location> - загружаемый файл
<taglib> - блок, описывающий соответствие JSP Tag library descriptor с URI-шаблоном <taglib-uri> - название uri-шаблона
<taglib-location> - расположение шаблона
ИП. Сервлеты и JSP. Работа сервлетов. Пример web.xml файлаМИЭТ, 2017
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.1" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web- app_3_1.xsd">
<servlet> <servlet-name>authorisation</servlet-name> <servlet-class>servlets.authorisation</servlet-class>
</servlet>
<servlet> <servlet-name>NewServlet</servlet-name> <servlet-class>servlets.NewServlet</servlet-class>
</servlet> <servlet-mapping>
<servlet-name>authorisation</servlet-name> <url-pattern>/user/profile/auth.php</url-pattern>
</servlet-mapping> <servlet-mapping>
<servlet-name>NewServlet</servlet-name> <url-pattern>/NewServlet</url-pattern> <url-pattern>/TestServlet?Year=2017</url-pattern>
</servlet-mapping> <session-config>
<session-timeout> 30
</session-timeout> </session-config> <context-param>
<description>Location to store uploaded file</description> <param-name>file-upload</param-name> <param-value>
C:\Program Files\Apache Software Foundation\Apache Tomcat 8.0.27\temp\ </param-value>
</context-param> </web-app>
ИП. Сервлеты и JSP. Идея JSP |
МИЭТ, 2017 |
Как было замечено выше неудобствами сервлетов является:
Громоздкость кода вывода через out.println
Необходимость компилировать весь сервлет при изменении даже незначительной части, не влияющей на логику приложения, например добавить out.println(«<hr>»);
Невозможность использовать для разработки пользовательского интерфейса не специалистов в Java (т. е. Верстальщиков HTML и CSS)
Как решение этих неудобств были создана технология JSP, которая позволяет оформить обработку данных в виде принятом для скриптовых языков, выделяя участки динамической обработки данных специальными тегами, отличными от тегов контента.

ИП. Сервлеты и JSP. Архитектура приложения JSP |
МИЭТ, 2017 |
Существует две архитектуры работы с JSP
«Чистый» JSP |
- для малой и умеренной нагрузки |
JSP+Сервлеты |
- для высокой нагрузки |
|
|
Архитектура JSP+сервлеты |
|
|
|
|
|
веб-сервер |
|
|
запросы |
|
Ресурсоемкий код |
|
|
|
JSP |
База |
|
|
|
|
||
клиент |
|
|
Сервлет |
Данных |
|
|
и другие |
||
|
|
|
||
|
|
JSP |
|
ресурсы |
|
|
|
|
|
|
ответы |
|
|
|
ИП. Сервлеты и JSP. Cинтаксис JSP |
МИЭТ, 2017 |
Пример JSP файла
<%--
Document : response
Created on : 05.05.2017, 15:19:39 Author : Андрей
--%>
<%@page session="true" %>
<%@page contentType="text/html" pageEncoding="UTF-8"%> <%@page import="java.util.*"%>
<%@include file="functions.jsp" %> <!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>JSP Page</title>
</head>
<body>
<h1>Получены данные</h1> <%
for (Enumeration<String> e = request.getParameterNames(); e.hasMoreElements();) { String name = e.nextElement(); out.println(name+"="+request.getParameter(name)+"<br>");
}
%>
<hr>
Получено из сессии: userID = <%= session.getAttribute("userID") %> <hr>
<%
ServletContext context = pageContext.getServletContext(); String filePath = context.getInitParameter("file-upload");
%>
Путь, где хранятся временные файлы <%= filePath%> </body>
</html>
ИП. Сервлеты и JSP. Cинтаксис JSP |
МИЭТ, 2017 |
JSPфайлы в отличие от, например, PHP имеют несколько типов тегов, определяющих исполняемый Java код:
Комментарии
Директивы
Объявления
Выражения
Скриплеты