1 / 29

9. Сървлетни контексти (Servlet Context)

9. Сървлетни контексти (Servlet Context). Лекционен курс “ Среди и езици за разработване на разпределени приложения ”. доц. д-р Станимир Стоянов катедра “ Компютърни системи ”. Съдържание. 8.1. Въведение 8.2. Конфигуриране на контекстите 8.3. Състояния на сървлетните контексти.

decima
Download Presentation

9. Сървлетни контексти (Servlet Context)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 9. Сървлетни контексти (Servlet Context) Лекционен курс “Среди и езици за разработване на разпределени приложения” доц. д-р Станимир Стоянов катедра “Компютърни системи”

  2. Съдържание 8.1. Въведение 8.2. Конфигуриране на контекстите 8.3. Състояния на сървлетните контексти

  3. 8.1. Въведение В предишната лекция разгледахме как могат да се поддържат състояния върху сървъра, свързани с отделни клиенти. Какво, обаче, трябва да се направи когато трябва да поддържаме състояния за Web приложенията, които не са специфични за един отделен клиент?

  4. Отговор:Използваме сървлетен контекст (Servlet Context) • ServletContext обектите – представляват ресурси, поделени от една група от сървлети. • Във версиите 1.0 и 2.0 на Servlet API, ServletContext доставя достъп до информация за: • Средата на сървлета – такава като име на сървъра, MIME type mappings, … • Log()–метод за записване на съобщения в протоколния файл (log) върху сървъра.

  5. MIME Types: • Multipurpose Internet Mail Extension – универсално и стандартно име за формат на данни • Данните, връщани като резултат от работата на сървлетите се класифицират посредством този тип • Първоначално разработен за предаване на нетекстови e-mail съобщения • Може да се използва и за други цели – напр. HTTP съобщения, където данните се съхраняват и предават заедно със заглавни части, съдържащи мета-информация.

  6. Низ със следния синтаксис – type/sub-type Примери: • “text/html” • “image/jpeg” • “image/gif”

  7. Във версията 2.1на Servlet API, ролята на ServletContext е разширена - Сървлети от един и същ контекст могат да поделят информация посредством атрибутите на контекста (подобно на начина за сесиите)

  8. Контекстите се използват за: • Дефиниране на URI-to-name mappings за едно приложение • Позволяват на сървлетите на едно приложение достъп до поделена информация.

  9. 8.2. Конфигуриране на контекстите Сървлетните машини позволяват дефиниране на повече сървлетни контексти за един и същ сървър, където всеки контекст кореспондира с едно приложение

  10. За всеки сървлетен контекст можем да дефинираме следните неща: • URI префикс на пътя на сървлетния контекст • Имена на класовете на сървлетите • Параметри за инициализация на сървлетите • Как се съпоставят (map) URLs към сървлетите? • Параметри на сесии • MIME типове на статичните полета

  11. Уникален URI Path Prefix за всеки сървлетен контекст: Една HTTP заявка винаги съдържа Uniform Resource Identifier (URI) – идентифицира заявения ресурс

  12. Разлики между URI и URL: • Един URI е някакъв символен низ, който идентифицира определен Интернет ресурс • Един URL е един подобен низ в специфичен за даден протокол формат подобен на HTTP – вид на протокола, име на сървъра, път и евентуално параметри

  13. Един URI път е част от URL, която идентифицира ресурса в определен сървър - т.е. точно частта “път” • URL пътят е по-скоро име, докато URI пътят е идентификатор, използван в Servlet спецификацията.

  14. URI path частта се използва за: • Намиране на коректния сървлетен контекст, отговорен за заявката • Намиране на сървлета вътре в контекста за обработка на актуалната заявка.

  15. Всеки сървлетен контекст трябва преди всичко да се съпостави към един уникален URI path prefix Сървлет машината използва URI path prefix като идентифицираща контекста част на един URL. Примери: • /chat – един контекст на chat приложение • /reservation – контекст на приложение за резервация на хотели.

  16. Когато сървлет-машината получи една HTTP-заявка с път, започващ с /chat, тогава тя знае, че заявката ще бъде обработена от chat-приложението Съответно – ако започва с /reservation, тогава се обработва от приложението за резервация.

  17. Имена на сървлети и URI Path Mappings за всеки сървлетен контекст: Сега трябва да конфигурираме как ще се обработват заявките в един контекст Първо – дефинираме имена за сървлетите на едно приложение, напр. • chatAdmin com.context.chat.ChatAdminServlet • listRooms com.context.chat.ListRoomsServlet Това е съпоставяне на кратко име на име на сървлетен клас.

  18. Кратките имена позволяват: • По-лесно обръщение към сървлетите • Замяна на класове, реализиращи сървлети без да е необходима модификация на референциите към съответния сървлет в рамките на приложението • Допълнително към съпоставянето на сървлетни класове към имена, ние можем да дефинираме параметри за инициализация на сървлетите • Обикновено дефинираме, че един сървлет се зарежда, когато се стартира сървлет-машината.

  19. Второ –дефинираме как ще съпоставяме URI path към името на сървлета, който ще обработва заявките, напр. / file /chatAdmin chatAdmin /listRooms listRooms *.jsp jsp

  20. Съпоставянето на пътища е относително към URI path prefix на контекста – това означава, че една заявка за /chat/chatAdmin първо се изпраща към контекста на chat-приложението • Контекстът на chat-приложението отстранява URI path prefix и след това сравнява остатъка от пътя по дадените по-горе правила - за да установи, че заявката ще бъде обработена от сървлета с име chatAdmin.

  21. По подобен начин заявките за файлове с разширение .jsp ще се обработват от един сървлет с име jsp в този контекст. • Заявки, които не съответстват на никое от специфичните правилата за съпоставка ще се съпоставят на правилото по подразбиране (/) и ще се обработват от сървлета file.

  22. Една заявка с URL, която започва с нещо, различно от /chat ще се обработи в един контекст със съответстващ URI path prefix и правилата за съответствие, специфицирани за този контекст, ще се приложат за да се изчисли как ще се обработи заявката.

  23. http://www.my.com/chat/chatAdmin Servlet Servlet-context chatAdmin Server chatapp Използва URL path prefix mapping (съпоставяне) за намиране на контекста Използва mapping (съпоставяне) на заявки и съпоставяне на имена на сървлети за намиране на сървлетни класове prefix mapping /chat chatapp request mapping /chatAdmin chatAdmin servlet name mapping chatAdmin com.ChatAdminServlet

  24. Диаграмата показва как отделните части на един URL идентифицират: • Един сървър (с една сървлет-машина) • Един сървлетен контекст • Един сървлет за обработка на една заявка.

  25. Сървърът използва едно URI path prefix съпоставяне за да открие коректния сървлетен контекст. Сървлетният контекст използва: • Остатъка от URI path (и едно съпоставяне на пътища) за да намери името на сървлета, който ще обработи заявката • Name-to-class съпоставяне за да намери сървлетния клас.

  26. Какво печелим от всичко това? Гъвкавост !

  27. 8.3. Състояния на сървлетните контексти Ще разгледаме как сървлетите в един сървлетен контекст могат да имат достъп до поделена информация.

  28. Информацията за състоянието на един сървлетен контекст се съхранява в неговите атрибути. Съществуват три ServletContex – метода за работа с атрибутите на контекста: • getAttribute • setAttribute • removeAttribute

  29. Сървлетите в едно приложение могат да се конфигурират така, че да могат да се зареждат когато се стартира сървлет машината. Тя може да инициализира сървлетите посредством setAttribute – метода. По време на обработката всички сървлети на приложението могат да четат и модифицират атрибутите, използвайки дадените методите.

More Related