🗊Презентация Понятие Cookie. Класс javax.servlet.http.Cookie

Нажмите для полного просмотра!
Понятие Cookie. Класс javax.servlet.http.Cookie, слайд №1Понятие Cookie. Класс javax.servlet.http.Cookie, слайд №2Понятие Cookie. Класс javax.servlet.http.Cookie, слайд №3Понятие Cookie. Класс javax.servlet.http.Cookie, слайд №4Понятие Cookie. Класс javax.servlet.http.Cookie, слайд №5Понятие Cookie. Класс javax.servlet.http.Cookie, слайд №6Понятие Cookie. Класс javax.servlet.http.Cookie, слайд №7Понятие Cookie. Класс javax.servlet.http.Cookie, слайд №8Понятие Cookie. Класс javax.servlet.http.Cookie, слайд №9Понятие Cookie. Класс javax.servlet.http.Cookie, слайд №10Понятие Cookie. Класс javax.servlet.http.Cookie, слайд №11Понятие Cookie. Класс javax.servlet.http.Cookie, слайд №12Понятие Cookie. Класс javax.servlet.http.Cookie, слайд №13Понятие Cookie. Класс javax.servlet.http.Cookie, слайд №14Понятие Cookie. Класс javax.servlet.http.Cookie, слайд №15Понятие Cookie. Класс javax.servlet.http.Cookie, слайд №16Понятие Cookie. Класс javax.servlet.http.Cookie, слайд №17Понятие Cookie. Класс javax.servlet.http.Cookie, слайд №18Понятие Cookie. Класс javax.servlet.http.Cookie, слайд №19Понятие Cookie. Класс javax.servlet.http.Cookie, слайд №20Понятие Cookie. Класс javax.servlet.http.Cookie, слайд №21Понятие Cookie. Класс javax.servlet.http.Cookie, слайд №22Понятие Cookie. Класс javax.servlet.http.Cookie, слайд №23Понятие Cookie. Класс javax.servlet.http.Cookie, слайд №24Понятие Cookie. Класс javax.servlet.http.Cookie, слайд №25Понятие Cookie. Класс javax.servlet.http.Cookie, слайд №26Понятие Cookie. Класс javax.servlet.http.Cookie, слайд №27Понятие Cookie. Класс javax.servlet.http.Cookie, слайд №28Понятие Cookie. Класс javax.servlet.http.Cookie, слайд №29Понятие Cookie. Класс javax.servlet.http.Cookie, слайд №30Понятие Cookie. Класс javax.servlet.http.Cookie, слайд №31Понятие Cookie. Класс javax.servlet.http.Cookie, слайд №32Понятие Cookie. Класс javax.servlet.http.Cookie, слайд №33Понятие Cookie. Класс javax.servlet.http.Cookie, слайд №34Понятие Cookie. Класс javax.servlet.http.Cookie, слайд №35Понятие Cookie. Класс javax.servlet.http.Cookie, слайд №36Понятие Cookie. Класс javax.servlet.http.Cookie, слайд №37Понятие Cookie. Класс javax.servlet.http.Cookie, слайд №38Понятие Cookie. Класс javax.servlet.http.Cookie, слайд №39Понятие Cookie. Класс javax.servlet.http.Cookie, слайд №40Понятие Cookie. Класс javax.servlet.http.Cookie, слайд №41Понятие Cookie. Класс javax.servlet.http.Cookie, слайд №42Понятие Cookie. Класс javax.servlet.http.Cookie, слайд №43Понятие Cookie. Класс javax.servlet.http.Cookie, слайд №44Понятие Cookie. Класс javax.servlet.http.Cookie, слайд №45Понятие Cookie. Класс javax.servlet.http.Cookie, слайд №46Понятие Cookie. Класс javax.servlet.http.Cookie, слайд №47Понятие Cookie. Класс javax.servlet.http.Cookie, слайд №48Понятие Cookie. Класс javax.servlet.http.Cookie, слайд №49Понятие Cookie. Класс javax.servlet.http.Cookie, слайд №50Понятие Cookie. Класс javax.servlet.http.Cookie, слайд №51Понятие Cookie. Класс javax.servlet.http.Cookie, слайд №52

Содержание

Вы можете ознакомиться и скачать презентацию на тему Понятие Cookie. Класс javax.servlet.http.Cookie. Доклад-сообщение содержит 52 слайдов. Презентации для любого класса можно скачать бесплатно. Если материал и наш сайт презентаций Mypresentation Вам понравились – поделитесь им с друзьями с помощью социальных кнопок и добавьте в закладки в своем браузере.

Слайды и текст этой презентации


Слайд 1





Понятие Cookie
Спецификация Cookie разработана компанией Netscape Communications
Cookie - это текстовый файл, хранящийся на клиентской машине и доступный браузеру. 
С программной точки зрения, cookie - это пара «название - значение», которая посылается браузеру сервером при первом обращении, а затем передается браузером тому же серверу при обращении к определенным ресурсам. 
Этот механизм позволяет на протяжении нескольких HTTP запросов сохранять для браузера на клиенте ту или иную информацию, полученную от сервера.
Описание слайда:
Понятие Cookie Спецификация Cookie разработана компанией Netscape Communications Cookie - это текстовый файл, хранящийся на клиентской машине и доступный браузеру. С программной точки зрения, cookie - это пара «название - значение», которая посылается браузеру сервером при первом обращении, а затем передается браузером тому же серверу при обращении к определенным ресурсам. Этот механизм позволяет на протяжении нескольких HTTP запросов сохранять для браузера на клиенте ту или иную информацию, полученную от сервера.

Слайд 2





Схема обмена Cookie
Описание слайда:
Схема обмена Cookie

Слайд 3





Cookie
Response Header:
Set-Cookie: cname=cvalue;Expires=Tue,  14-Feb-2006 23:13:26 GMT;Path=/
Request Header:
Cookie: cname=cvalue

Internet Explorer:
...\Documents and Settings\...\Cookies
Описание слайда:
Cookie Response Header: Set-Cookie: cname=cvalue;Expires=Tue, 14-Feb-2006 23:13:26 GMT;Path=/ Request Header: Cookie: cname=cvalue Internet Explorer: ...\Documents and Settings\...\Cookies

Слайд 4





Класс javax.servlet.http.Cookie
Cookie(String name, String value)
get/setName(String)
get/setValue(String)
get/setAge(int)
get/setPath(String)
is/setSecure(boolean)
get/setVersion(int)
Описание слайда:
Класс javax.servlet.http.Cookie Cookie(String name, String value) get/setName(String) get/setValue(String) get/setAge(int) get/setPath(String) is/setSecure(boolean) get/setVersion(int)

Слайд 5





Пример использования.Cookie
Cookie c = new Cookie("cname", "cvalue");
c.setPath("/");
c.setMaxAge(3600);
response.setContentType = "text/html"; 
response.addCookie(c);
Cookie cookies[] = request.getCookies();
Описание слайда:
Пример использования.Cookie Cookie c = new Cookie("cname", "cvalue"); c.setPath("/"); c.setMaxAge(3600); response.setContentType = "text/html"; response.addCookie(c); Cookie cookies[] = request.getCookies();

Слайд 6





Преимущества Cookie
Отслеживание сеанса пользователя
Пользовательские настройки 
Подстановка имени и пароля при повторном заходе на сайт
Направленная реклама
Использование cookie не представляет угрозы безопасности с точки зрения атак
Браузеры принимают только 20 cookies на сайт и 300 всего, каждое Cookie до 4 кбайт – отсутствует проблема засорения жесткого диска
Описание слайда:
Преимущества Cookie Отслеживание сеанса пользователя Пользовательские настройки Подстановка имени и пароля при повторном заходе на сайт Направленная реклама Использование cookie не представляет угрозы безопасности с точки зрения атак Браузеры принимают только 20 cookies на сайт и 300 всего, каждое Cookie до 4 кбайт – отсутствует проблема засорения жесткого диска

Слайд 7





Недостатки Cookies
Не представляют угрозу безопасности, но угрожают конфиденциальности:

eMail с HTML текстом может загружать Web-ресурсы, передающие cookies
Cookie могут подделываться для идентификации пользователя в качестве другого
Cookie – открытые текстовые файлы. Поэтому в них нельзя хранить конфиденциальную информацию. Обычно хранится только идентификатор – данные в хеш-таблице или базе данных на сервере
Описание слайда:
Недостатки Cookies Не представляют угрозу безопасности, но угрожают конфиденциальности: eMail с HTML текстом может загружать Web-ресурсы, передающие cookies Cookie могут подделываться для идентификации пользователя в качестве другого Cookie – открытые текстовые файлы. Поэтому в них нельзя хранить конфиденциальную информацию. Обычно хранится только идентификатор – данные в хеш-таблице или базе данных на сервере

Слайд 8





Отслеживание сеанса
HTTP – stateless протокол
каждый запрос – отдельное соединение
сервер не имеет данных о предыдущем запросе
Connection: keep-alive не спасает ситуацию
Описание слайда:
Отслеживание сеанса HTTP – stateless протокол каждый запрос – отдельное соединение сервер не имеет данных о предыдущем запросе Connection: keep-alive не спасает ситуацию

Слайд 9





Сессии
Описание слайда:
Сессии

Слайд 10





Сессии
Для организации сессий существует три типичных подхода:
Cookies
response.addCookie(“JSESSIONID”, sessionId);
URL-rewriting
http://www.some.com/page.jsp?jsessionid=12345
http://www.some.com/page.jsp/12345
http://www.some.com/page.jsp;jsessionid=12345
Скрытые поля форм
<input type=“hidden” name=“JSESSIONID” value=“12345”>
В Java Web-контейнерами обычно используются по умолчанию Cookies, но если браузер их не поддерживает – автоматически осуществляется переход на URL-Rewriting
Описание слайда:
Сессии Для организации сессий существует три типичных подхода: Cookies response.addCookie(“JSESSIONID”, sessionId); URL-rewriting http://www.some.com/page.jsp?jsessionid=12345 http://www.some.com/page.jsp/12345 http://www.some.com/page.jsp;jsessionid=12345 Скрытые поля форм <input type=“hidden” name=“JSESSIONID” value=“12345”> В Java Web-контейнерами обычно используются по умолчанию Cookies, но если браузер их не поддерживает – автоматически осуществляется переход на URL-Rewriting

Слайд 11





Cессии в Java
Объект сессии создается каждый раз при получении запроса от нового клиента и впоследствии идентифицирует его уникальным образом 
Разным пользователям соответствуют различные объекты сессий
Сессии “живут” на сервере в течение заданного времени, но только для одного клиентского браузера
Описание слайда:
Cессии в Java Объект сессии создается каждый раз при получении запроса от нового клиента и впоследствии идентифицирует его уникальным образом Разным пользователям соответствуют различные объекты сессий Сессии “живут” на сервере в течение заданного времени, но только для одного клиентского браузера

Слайд 12





Интерфейс HttpSession
Высокоуровневый интерфейс для работы с сеансами;
Автоматически обеспечивает поддержку сеанса при помощи cookies или перезаписи URL
Позволяет манипулировать данными о сессии, такими, как идентификатор, время создания, время жизни и т.п.
Позволяет сохранять данные, введенные клиентом в течение нескольких переходов по страницам
Получить ссылку на объект HttpSession в сервлете можно с помощью метода 
request.getSession()
Описание слайда:
Интерфейс HttpSession Высокоуровневый интерфейс для работы с сеансами; Автоматически обеспечивает поддержку сеанса при помощи cookies или перезаписи URL Позволяет манипулировать данными о сессии, такими, как идентификатор, время создания, время жизни и т.п. Позволяет сохранять данные, введенные клиентом в течение нескольких переходов по страницам Получить ссылку на объект HttpSession в сервлете можно с помощью метода request.getSession()

Слайд 13





Реализация сессий
В случае использования cookies автоматически формируется Cookie с именем JSESSIONID и значением типа 02395C69B8FB84D3278B49F1B05F3379, которое используется в качестве ключа в хеш-таблице на сервере 
Если cookie отключены, формируется URL вида:
	http://.../some_path;jsessionid=02395C69B8FB84D3278B49F1B05F3379
			
Это делается автоматически только в случае, если URL, к которому обращаются из Web-приложения, закодирован методом
HttpServletResponse.encodeURL()
или encodeRedirectURL()
Описание слайда:
Реализация сессий В случае использования cookies автоматически формируется Cookie с именем JSESSIONID и значением типа 02395C69B8FB84D3278B49F1B05F3379, которое используется в качестве ключа в хеш-таблице на сервере Если cookie отключены, формируется URL вида: http://.../some_path;jsessionid=02395C69B8FB84D3278B49F1B05F3379 Это делается автоматически только в случае, если URL, к которому обращаются из Web-приложения, закодирован методом HttpServletResponse.encodeURL() или encodeRedirectURL()

Слайд 14





Сессии в Java
Описание слайда:
Сессии в Java

Слайд 15





Пример работы с сессией
Фрагмент сервлета, проверяющего правильность ввода имени и пароля
…
// Установка времени жизни сессии
request.getSession().setMaxInactiveInterval(30*60*1000);
// Берем параметры из запроса        
String login = request.getParameter("login");
String password = request.getParameter("password");
// создаем объект User 
User user = new User(login, password):
if (userDatabase.contains(user)){       // Если такой есть – помещаем в сессию
	request.getSession().setAttribute("user", user);
}
…       
Фрагмент сервлета, выводящего имя зарегистрированного пользователя
…
// извлекаем объект User из сессии
User user = (User)request.getSession().getAttribute("user");
// Печатаем имя пользователя
response.getWriter().println("User name: " + user.getName());
…
Описание слайда:
Пример работы с сессией Фрагмент сервлета, проверяющего правильность ввода имени и пароля … // Установка времени жизни сессии request.getSession().setMaxInactiveInterval(30*60*1000); // Берем параметры из запроса String login = request.getParameter("login"); String password = request.getParameter("password"); // создаем объект User User user = new User(login, password): if (userDatabase.contains(user)){ // Если такой есть – помещаем в сессию request.getSession().setAttribute("user", user); } … Фрагмент сервлета, выводящего имя зарегистрированного пользователя … // извлекаем объект User из сессии User user = (User)request.getSession().getAttribute("user"); // Печатаем имя пользователя response.getWriter().println("User name: " + user.getName()); …

Слайд 16





Данные, общие для всего приложения
Объект ServetContext существует в единственном экземпляре для одного WEB-приложения. 
В нем можно хранить глобальные настройки приложения (с помощью методов get/setAttribute(…))
Другие методы ServletContext:
getRealPath(String path) – возвращает реальный путь к ресурсу файловой системы, находящемся по заданному виртуальному пути
getResourceAsStream(String path) – возвращает поток байт  реального ресурса файловой системы
Получить ссылку на ServletContext из сервлета можно, например, так:
getServletContext()
	или по объекту request
request.getSession().getServletContext()
Описание слайда:
Данные, общие для всего приложения Объект ServetContext существует в единственном экземпляре для одного WEB-приложения. В нем можно хранить глобальные настройки приложения (с помощью методов get/setAttribute(…)) Другие методы ServletContext: getRealPath(String path) – возвращает реальный путь к ресурсу файловой системы, находящемся по заданному виртуальному пути getResourceAsStream(String path) – возвращает поток байт реального ресурса файловой системы Получить ссылку на ServletContext из сервлета можно, например, так: getServletContext() или по объекту request request.getSession().getServletContext()

Слайд 17





Установка атрибутов
В качестве атрибутов выступают объекты
Атрибуты можно устанавливать на уровне
запроса
	request.setAttribute(“myattr”, new Integer(1));
	Integer attr = (Integer)request.getAttribute(“myattr”);
сессии
	request.getSession().setAttribute(“myattr”, new Integer(1));
приложения
	getServletContext().setAttribute(…)
Описание слайда:
Установка атрибутов В качестве атрибутов выступают объекты Атрибуты можно устанавливать на уровне запроса request.setAttribute(“myattr”, new Integer(1)); Integer attr = (Integer)request.getAttribute(“myattr”); сессии request.getSession().setAttribute(“myattr”, new Integer(1)); приложения getServletContext().setAttribute(…)

Слайд 18





Фильтры
Фильтр – это Java-код, пригодный для многократного использования и позволяющий осуществлять операции над содержимым HTTP-запросов, ответов и заголовков.
определены в спецификации сервлетов начиная с версии 2.3.
Фильтр способен обрабатывать:
запрос до его получения сервлетом;
ответ после его обработки сервлетом.
Описание слайда:
Фильтры Фильтр – это Java-код, пригодный для многократного использования и позволяющий осуществлять операции над содержимым HTTP-запросов, ответов и заголовков. определены в спецификации сервлетов начиная с версии 2.3. Фильтр способен обрабатывать: запрос до его получения сервлетом; ответ после его обработки сервлетом.

Слайд 19





Роль фильтра в обработке запроса
Описание слайда:
Роль фильтра в обработке запроса

Слайд 20





Интерфейс javax.servlet.Filter
Интерфейс Filter имеет следующие методы:
init(FilterConfig);
doFilter(ServletRequest, ServletResponse, FilterChain);
destroy().
Описание слайда:
Интерфейс javax.servlet.Filter Интерфейс Filter имеет следующие методы: init(FilterConfig); doFilter(ServletRequest, ServletResponse, FilterChain); destroy().

Слайд 21





Жизненный цикл фильтра
Описание слайда:
Жизненный цикл фильтра

Слайд 22





Цепочка фильтров
Предназначена для обработки запроса последовательно несколькими фильтрами.
Представлена интерфейсом javax.servlet.FilterChain.
Объект создается автоматически контейнером
Метод:
doFilter(ServletRequest, ServletResponse)
Описание слайда:
Цепочка фильтров Предназначена для обработки запроса последовательно несколькими фильтрами. Представлена интерфейсом javax.servlet.FilterChain. Объект создается автоматически контейнером Метод: doFilter(ServletRequest, ServletResponse)

Слайд 23





Интерфейс javax.servlet.FilterConfig
Служит для передачи информации о настройках фильтру при его инициализации.
Имеет следующие методы:
String getFilterName()
String getInitParameter(String)
Enumeration getInitParameterNames()
ServletContext getServletContext()
Описание слайда:
Интерфейс javax.servlet.FilterConfig Служит для передачи информации о настройках фильтру при его инициализации. Имеет следующие методы: String getFilterName() String getInitParameter(String) Enumeration getInitParameterNames() ServletContext getServletContext()

Слайд 24





Пример
//пакет и импорты
public class LoggerFilter implements Filter { 
   private FilterConfig filterConfig;
   public void setFilterConfig(FilterConfig fc) { 
         filterConfig = fc;
   }
   public FilterConfig getFilterConfig() { return filterConfig; }
   
   public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
						throws IOException, ServletException { 
	if (filterConfig == null) { 
	    return;
	} 
	ServletContext ctx = filterConfig.getServletContext();
	ctx.log ("" + new Date() + " - resource: " +  ((HttpServletRequest)request).getRequestURL() +
			  " is requested by: " + request.getRemoteHost()) ;
	chain.doFilter(request, response) ;
   }
   public void init(FilterConfig config) throws ServletException { this.filterConfig = config; }
   public void destroy() { }
}
Описание слайда:
Пример //пакет и импорты public class LoggerFilter implements Filter { private FilterConfig filterConfig; public void setFilterConfig(FilterConfig fc) { filterConfig = fc; } public FilterConfig getFilterConfig() { return filterConfig; } public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { if (filterConfig == null) { return; } ServletContext ctx = filterConfig.getServletContext(); ctx.log ("" + new Date() + " - resource: " + ((HttpServletRequest)request).getRequestURL() + " is requested by: " + request.getRemoteHost()) ; chain.doFilter(request, response) ; } public void init(FilterConfig config) throws ServletException { this.filterConfig = config; } public void destroy() { } }

Слайд 25





Описание фильтров в web.xml
В файле web.xml фильтры описываются в элементе filter.
Он имеет следующие параметры:
filter-name
filter-class
init-params
icon (опциональный)
description (опциональный)
display-name (опциональный)
Описание слайда:
Описание фильтров в web.xml В файле web.xml фильтры описываются в элементе filter. Он имеет следующие параметры: filter-name filter-class init-params icon (опциональный) description (опциональный) display-name (опциональный)

Слайд 26





Описание фильтров в web.xml
Для каждого определенного в web.xml фильтра создается ровно один экземпляр.
			
Разные теги <filter> с одним и тем же классом, но разным именем – разные фильтры
Пример описания фильтра в web.xml
<filter>
	<filter-name>LoggerFilter</filter-name>
	<filter-class>ua.kharkov.kture.ius.wbis.LoggerFilter</filter-class>
 <init-param>
      <param-name>logLevel</param-name>
      <param-value>medium</param-value>
 </init-param>
</filter>
Описание слайда:
Описание фильтров в web.xml Для каждого определенного в web.xml фильтра создается ровно один экземпляр. Разные теги <filter> с одним и тем же классом, но разным именем – разные фильтры Пример описания фильтра в web.xml <filter> <filter-name>LoggerFilter</filter-name> <filter-class>ua.kharkov.kture.ius.wbis.LoggerFilter</filter-class> <init-param> <param-name>logLevel</param-name> <param-value>medium</param-value> </init-param> </filter>

Слайд 27





Описание фильтров в web.xml
Описание фильтров и их привязок описывается в web.xml-файле перед определением сервлетов.
Цепочка фильтров-обработчиков строится исходя из последовательности появления соответствующих привязок в web.xml.
Описание слайда:
Описание фильтров в web.xml Описание фильтров и их привязок описывается в web.xml-файле перед определением сервлетов. Цепочка фильтров-обработчиков строится исходя из последовательности появления соответствующих привязок в web.xml.

Слайд 28





Описание фильтров в web.xml
Привязка фильтров бывает:
к сервлету
<filter-mapping>
   <filter-name>Filter1</filter-name>
   <servlet-name>Servlet1</servlet-name>
</filter-mapping
к ресурсу по маске
<filter-mapping>
   <filter-name>SystemAccessFilter</fliter-name>
	<url-pattern>/*</url-pattern>
</filter-mapping>
Описание слайда:
Описание фильтров в web.xml Привязка фильтров бывает: к сервлету <filter-mapping> <filter-name>Filter1</filter-name> <servlet-name>Servlet1</servlet-name> </filter-mapping к ресурсу по маске <filter-mapping> <filter-name>SystemAccessFilter</fliter-name> <url-pattern>/*</url-pattern> </filter-mapping>

Слайд 29





Пример фильтра
package filters;
//импорты
public class SetCharacterEncodingFilter implements Filter {
  protected String encoding = null;
  protected FilterConfig filterConfig = null;
  public void destroy() {
        this.encoding = null;
        this.filterConfig = null;
  }
  public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, 							ServletException {
        String encoding = selectEncoding(request);
        if (encoding != null)
            request.setCharacterEncoding(encoding);
        chain.doFilter(request, response);
  }
  public void init(FilterConfig filterConfig) throws ServletException {
        this.filterConfig = filterConfig;
        this.encoding = filterConfig.getInitParameter("encoding");
  }
  protected String selectEncoding(ServletRequest request) {  return (this.encoding); }
}
Описание слайда:
Пример фильтра package filters; //импорты public class SetCharacterEncodingFilter implements Filter { protected String encoding = null; protected FilterConfig filterConfig = null; public void destroy() { this.encoding = null; this.filterConfig = null; } public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { String encoding = selectEncoding(request); if (encoding != null) request.setCharacterEncoding(encoding); chain.doFilter(request, response); } public void init(FilterConfig filterConfig) throws ServletException { this.filterConfig = filterConfig; this.encoding = filterConfig.getInitParameter("encoding"); } protected String selectEncoding(ServletRequest request) { return (this.encoding); } }

Слайд 30





Пример фильтра
Фрагмент web.xml:
...
<filter>
    <filter-name>Set Character Encoding</filter-name>
    <filter-class>filters.SetCharacterEncodingFilter</filter-class>
    <init-param>
            <param-name>encoding</param-name>
            <param-value>CP1251</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>Set Character Encoding</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>
...
Описание слайда:
Пример фильтра Фрагмент web.xml: ... <filter> <filter-name>Set Character Encoding</filter-name> <filter-class>filters.SetCharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>CP1251</param-value> </init-param> </filter> <filter-mapping> <filter-name>Set Character Encoding</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> ...

Слайд 31





Изменение ServletResponse
 public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, 							ServletException {
	  // действия фильтра до передачи обработки запроса
        chain.doFilter(request, response);
    // действия фильтра после обработки запроса
    ((HttpServletResponse)response).setStatus(403);
	     ((HttpServletResponse)response).getWriter().println(“Bye“);
  }
Описание слайда:
Изменение ServletResponse public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { // действия фильтра до передачи обработки запроса chain.doFilter(request, response); // действия фильтра после обработки запроса ((HttpServletResponse)response).setStatus(403); ((HttpServletResponse)response).getWriter().println(“Bye“); }

Слайд 32





Изменение содержимого HTTP-ответа
 public void doFilter(ServletRequest request, ServletResponse response,
                     FilterChain chain) throws IOException, ServletException {
     ReverseResponse rr = new ReverseResponse((HttpServletResponse) response);
     chain.doFilter(request, rr);
     response.getWriter().println(rr.getContent().reverse());
  }
}
class ReverseResponse extends HttpServletResponseWrapper {
  private StringWriter sw = new StringWriter();
  private PrintWriter pw = new PrintWriter(sw);
  public ReverseResponse(HttpServletResponse response) {
    super(response); 
  }  
  public PrintWriter getWriter() {
    return pw; 
  }
  public StringBuffer getContent() {
    return sw.getBuffer();
  }
}
Описание слайда:
Изменение содержимого HTTP-ответа public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { ReverseResponse rr = new ReverseResponse((HttpServletResponse) response); chain.doFilter(request, rr); response.getWriter().println(rr.getContent().reverse()); } } class ReverseResponse extends HttpServletResponseWrapper { private StringWriter sw = new StringWriter(); private PrintWriter pw = new PrintWriter(sw); public ReverseResponse(HttpServletResponse response) { super(response); } public PrintWriter getWriter() { return pw; } public StringBuffer getContent() { return sw.getBuffer(); } }

Слайд 33





Слушатели событий
Слушатели событий (Events listeners) - это классы, реализующие один или более интерфейсов слушателей событий сервлета.
Делятся на:
Servlet context listeners
События, связанные с контекстом сервлета.
HTTP session listeners
События, связанные с сеансом HTTP
Описание слайда:
Слушатели событий Слушатели событий (Events listeners) - это классы, реализующие один или более интерфейсов слушателей событий сервлета. Делятся на: Servlet context listeners События, связанные с контекстом сервлета. HTTP session listeners События, связанные с сеансом HTTP

Слайд 34





Servlet context listeners
Представлены интерфейсами:
javax.servlet.ServletContextListener:
 void contextInitialized(ServletContextEvent sce)
 void contextDestroyed(ServletContextEvent sce) 
javax.servlet.ServletContextAttributeListener:
 void attributeAdded(ServletContextAttributeEvent e) 
  void attributeRemoved(ServletContextAttributeEvent e) 
 void attributeReplaced(ServletContextAttributeEvent e)
Описание слайда:
Servlet context listeners Представлены интерфейсами: javax.servlet.ServletContextListener: void contextInitialized(ServletContextEvent sce) void contextDestroyed(ServletContextEvent sce) javax.servlet.ServletContextAttributeListener: void attributeAdded(ServletContextAttributeEvent e) void attributeRemoved(ServletContextAttributeEvent e) void attributeReplaced(ServletContextAttributeEvent e)

Слайд 35





События слушателей контекста
javax.servlet. ServletContextEvent
ServletContext getServletContext() 
javax.servlet.ServletContextAttributeEvent 
String getName()
Object getValue()
Описание слайда:
События слушателей контекста javax.servlet. ServletContextEvent ServletContext getServletContext() javax.servlet.ServletContextAttributeEvent String getName() Object getValue()

Слайд 36





HTTP session listeners
javax.servlet.HttpSessionListener:
 void sessionCreated(HttpSessionEvent se) 
 void sessionDestroyed(HttpSessionEvent se) 
javax.servlet.HttpSessionAttributeListener:
  void attributeAdded(HttpSessionBindingEvent e)
  void attributeRemoved(HttpSessionBindingEvent e)
  void attributeReplaced(HttpSessionBindingEvent e)
 javax.servlet.HttpSessionBindingListener:
 void valueBound(HttpSessionBindingEvent event) 
 void valueUnbound(HttpSessionBindingEvent event)
Описание слайда:
HTTP session listeners javax.servlet.HttpSessionListener: void sessionCreated(HttpSessionEvent se) void sessionDestroyed(HttpSessionEvent se) javax.servlet.HttpSessionAttributeListener: void attributeAdded(HttpSessionBindingEvent e) void attributeRemoved(HttpSessionBindingEvent e) void attributeReplaced(HttpSessionBindingEvent e) javax.servlet.HttpSessionBindingListener: void valueBound(HttpSessionBindingEvent event) void valueUnbound(HttpSessionBindingEvent event)

Слайд 37





События слушателей сессии
javax.servlet.http.HttpSessionEvent
HttpSession getSession() 
javax.servlet.http.HttpSessionBindingEvent
HttpSession getSession() 
String getName()
Object getValue()
Описание слайда:
События слушателей сессии javax.servlet.http.HttpSessionEvent HttpSession getSession() javax.servlet.http.HttpSessionBindingEvent HttpSession getSession() String getName() Object getValue()

Слайд 38





Описание в web.xml
В web.xml слушатели событий прописываются следующим образом:
<listener>
    <listener-class>Полнoe имя клacca</listener-class>
</listener>
				
Слушатели событий описываются после привязок фильтров до определения сервлетов.
HttpSessionBindingListener в web.xml не прописывается, а реализуется классом, который должен отслеживать свою привязку и удаления из сесии
Описание слайда:
Описание в web.xml В web.xml слушатели событий прописываются следующим образом: <listener> <listener-class>Полнoe имя клacca</listener-class> </listener> Слушатели событий описываются после привязок фильтров до определения сервлетов. HttpSessionBindingListener в web.xml не прописывается, а реализуется классом, который должен отслеживать свою привязку и удаления из сесии

Слайд 39





Пример
Листинг:
public class LifeCycleServletContextListener implements 								ServletContextListener {
      public LifeCycleServletContextListener() {
      }
      public void contextInitialized(ServletContextEvent sce) {
         System.out.println("LifeCycleServletContextListener: contextInitialized");
      }
      public void contextDestroyed(ServletContextEvent sce) {      
	System.out.println("LifeCycleServletContextListener:contextDestroyed");
      }
}
Фрагмент web.xml
<listener>
	<listener-class>
		testr1.LifeCycleServletContextListener
	</listener-class>
</listener>
Описание слайда:
Пример Листинг: public class LifeCycleServletContextListener implements ServletContextListener { public LifeCycleServletContextListener() { } public void contextInitialized(ServletContextEvent sce) { System.out.println("LifeCycleServletContextListener: contextInitialized"); } public void contextDestroyed(ServletContextEvent sce) { System.out.println("LifeCycleServletContextListener:contextDestroyed"); } } Фрагмент web.xml <listener> <listener-class> testr1.LifeCycleServletContextListener </listener-class> </listener>

Слайд 40





Пример
Листинг:
public class LifeCycleServletContextListener implements 								ServletContextListener {
      public LifeCycleServletContextListener() {
      }
      public void contextInitialized(ServletContextEvent sce) {
         System.out.println("LifeCycleServletContextListener: contextInitialized");
      }
      public void contextDestroyed(ServletContextEvent sce) {      
	System.out.println("LifeCycleServletContextListener:contextDestroyed");
      }
}
Фрагмент web.xml
<listener>
	<listener-class>
		testr1.LifeCycleServletContextListener
	</listener-class>
</listener>
Описание слайда:
Пример Листинг: public class LifeCycleServletContextListener implements ServletContextListener { public LifeCycleServletContextListener() { } public void contextInitialized(ServletContextEvent sce) { System.out.println("LifeCycleServletContextListener: contextInitialized"); } public void contextDestroyed(ServletContextEvent sce) { System.out.println("LifeCycleServletContextListener:contextDestroyed"); } } Фрагмент web.xml <listener> <listener-class> testr1.LifeCycleServletContextListener </listener-class> </listener>

Слайд 41





Подходы к созданию Web-базированных ИС
Совмещение бизнес-логики и дизайна на JSP-страницах.
Вынесение части логики в bean-компоненты (Model 1).
Разделение Web-приложения на 3 части: Модель, Представление и Контроллер (Model 2).
Описание слайда:
Подходы к созданию Web-базированных ИС Совмещение бизнес-логики и дизайна на JSP-страницах. Вынесение части логики в bean-компоненты (Model 1). Разделение Web-приложения на 3 части: Модель, Представление и Контроллер (Model 2).

Слайд 42





Model 1
Описание слайда:
Model 1

Слайд 43





Особенности Model 1
Преимущества:
простота разработки;
разработка JSP и бизнес-объектов может вестись параллельно благодаря отделению бизнес-логики от представления.
Недостатки:
необходимо вовлечение программистов в процесс создания JSP-документов;
оправдано  создание только приложений, ориентированных на единый тип клиентов.
Описание слайда:
Особенности Model 1 Преимущества: простота разработки; разработка JSP и бизнес-объектов может вестись параллельно благодаря отделению бизнес-логики от представления. Недостатки: необходимо вовлечение программистов в процесс создания JSP-документов; оправдано создание только приложений, ориентированных на единый тип клиентов.

Слайд 44





Треугольник MVC
Описание слайда:
Треугольник MVC

Слайд 45





Model 2
Приложение состоит из 3-х частей:
Модель:
представляет собой состояние бизнес объектов;
обрабатывает запросы о состоянии;
представляет бизнес-логику приложения;
оповещает Представление об изменении состояния.
Контроллер:
определяет поведение приложения;
по запросу пользователя изменяет состояние Модели;
выбирает  отображения для вывода;
единственный для каждой функции.
Представление:
отображает Модель;
получает от Модели информацию об изменении состояния;
передает ввод пользователя контроллеру;
позволяет контроллеру выбрать Представление.
Описание слайда:
Model 2 Приложение состоит из 3-х частей: Модель: представляет собой состояние бизнес объектов; обрабатывает запросы о состоянии; представляет бизнес-логику приложения; оповещает Представление об изменении состояния. Контроллер: определяет поведение приложения; по запросу пользователя изменяет состояние Модели; выбирает отображения для вывода; единственный для каждой функции. Представление: отображает Модель; получает от Модели информацию об изменении состояния; передает ввод пользователя контроллеру; позволяет контроллеру выбрать Представление.

Слайд 46





Общая схема Model 2
Описание слайда:
Общая схема Model 2

Слайд 47





Схема Model 2 для Web-приложений
Описание слайда:
Схема Model 2 для Web-приложений

Слайд 48





Особенности Model 2
Возможность переиспользования компонентов Модели.
Простая поддержка новых типов клиентов.
Возросшая сложность разработки.
Описание слайда:
Особенности Model 2 Возможность переиспользования компонентов Модели. Простая поддержка новых типов клиентов. Возросшая сложность разработки.

Слайд 49





Пример приложения на model1
Описание слайда:
Пример приложения на model1

Слайд 50





Результат
Описание слайда:
Результат

Слайд 51





Пример приложения на model2
Описание слайда:
Пример приложения на model2

Слайд 52





Результат
Описание слайда:
Результат



Похожие презентации
Mypresentation.ru
Загрузить презентацию