ЈСП захтев клијента, одговор сервера и ампер; ХТТП статусни кодови

Преглед садржаја:

Anonim

ЈСП акције које користе конструкције у КСМЛ синтакси за контролу понашања сервлет мотора. Детаљније ћемо научити о разним елементима ЈСП акције као што су захтев клијента, одговор сервера, ХТТП кодови статуса.

У овом упутству ћете научити-

  • Захтев ЈСП клијента
  • Одговор ЈСП сервера
  • ЈСП ХТТП кодови статуса

Захтев ЈСП клијента

  • Када се затражи веб страница, она шаље информације веб серверу у ХТТП заглављу.
  • Те информације можемо користити помоћу објекта ХТТПСервлетРекуест.
  • Информације које прегледач шаље се чувају у заглављу захтева ХТТП захтева.
  • Користимо различита заглавља за слање информација до објекта захтева.

У наставку су описани различити заглавља:

Заглавље Опис Пример
Прихвати Одређује МИМЕ типове са којима прегледач или други клијенти могу да раде Слика / пнг или слика / јпег
Прихвати-цхарсет За приказ информација користи скуп знакова који користи прегледач ИСО-8859-1
Аццепт- Енцодинг Одређује тип кодирања којим се обрађује прегледач Гзип или облог
Прихвати језик Одређује језик који одређује клијент Ен, ен_ус
Овлашћење Заглавље које користе клијенти приликом покушаја приступа веб страницама заштићеним лозинком
Веза Означава да ли клијент може да обрађује трајне ХТТП везе (прегледач може да преузме више датотека) Одржи у животу
Дужина садржаја Применљиво на захтеве за објављивање. Даје величину података у бајтовима
Колачић Враћа колачић на сервер (оне који су претходно послати прегледачу)
Домаћин Одређује хост и порт оригиналне УРЛ адресе
Ако се модификује од Означава да захтева само страницу ако је промењена или измењена
Ако није измењен од Означава да страница захтева само ако није промењена или измењена
Реферрер Означава УРЛ референтне УРЛ странице
Кориснички агент Идентификује претраживач или клијент који подноси захтев

Следеће методе се користе за читање ХТТП заглавља на ЈСП страници:

  1. Цоокие [] гетЦоокиес () - враћа низ који садржи објекте колачића које је клијент послао
  2. Енумерација гетАттрибутеНамес () - садржи набрајање имена атрибута за захтев
  3. Енумератион гетХеадерНамес () - садржи набрајање имена заглавља.
  4. Енумератион гетПараметерНамес () - садржи набрајање добијања имена параметара у захтеву.
  5. ХттпСессионгетСессион () - враћа тренутну сесију повезану са захтевом или ако нема сесију, створиће нову.
  6. Лоцале гетЛоцале () - враћа жељену локалитету у којој ће клијент прихватити садржај. Додијељен је одговору. Подразумевано, вредност ће бити задана локализација сервера.
  7. Објецт гетАттрибуте (Стринг наме) - враћа вредност именованог атрибута као објекта.
  8. СервлетИнпутСтреамгетИнпутСтреам () - преузима тело захтева као бинарне податке.
  9. Стринг гетАутхТипе () - враћа име шеме за аутентификацију ради заштите сервлета
  10. Стринг гетЦхарацтерЕнцодинг () - враћа име кодирања знакова који се користи у телу захтева.
  11. Стринг гетЦонтентТипе () - враћа МИМЕ тип тела захтева.
  12. Стринг гетЦонтектПатх () - враћа део УРИ захтева који указује на контекст путању УРИ
  13. Стринг гетХеадер (име низа) - враћа заглавље захтева као низ
  14. Стринг гетМетход () - враћа име ХТТП методе попут ГЕТ, ПОСТ
  15. Стринг гетПараметер (име низа) - враћа параметар захтева као низ.
  16. Стринг гетПатхИнфо () - враћа информације о путањи повезане са УРЛ-ом
  17. Стринг гетКуериСтринг () - враћа низ упита који је повезан са УРЛ-ом захтева
  18. Стринг гетСервлетПатх () - враћа део УРЛ-а захтева који позива ЈСП
  19. Стринг [] гетПараметерВалуес (име низа ) - враћа низ објеката низа који садрже вредности које параметар захтева има

Пример:

У доњем примеру користимо различите методе користећи објекат захтева

<% @ паге лангуаге = "јава" цонтентТипе = "тект / хтмл; цхарсет = ИСО-8859-1" пагеЕнцодинг = "ИСО-8859-1"%><% @ паге импорт = "јава.ио. * јава.утил. *"%><хтмл><хеад><мета хттп-екуив = "Цонтент-Типе" цонтент = "тект / хтмл; цхарсет = ИСО-8859-1"><титле> Захтев клијента Гуру ЈСП <боди><х2> Гуру ЈСП захтева клијента <табле бордер = "1"><тр><тх> заглавље гуруа  <тх> заглавље гуруа Вредност (и) <%ХттпСессион гурусессион = рекуест.гетСессион ();оут.принт ("<тр> <тд> Име сесије је  <тд>" + гурусессион + " ");Лоцале гурулоцале = рекуест.гетЛоцале ();оут.принт ("<тр> <тд> Име локалитета је  <тд>" + гурулоцале + " ");Стринг пут = рекуест.гетПатхИнфо ();оут.принт ("<тр> <тд> Назив пута је  <тд>" + патх + " ");Низ лпатх = рекуест.гет ();оут.принт ("<тр> <тд> Контекст путања је  <тд>" + липатх + " ");Низ сервера = рекуест.гетСерверНаме ();оут.принт ("<тр> <тд> Име сервера је  <тд>" + име сервера + " ");инт портнаме = рекуест.гетСерверПорт ();оут.принт ("<тр> <тд> Порт сервера је  <тд>" + портнаме + " ");Набрајање хнамес = рекуест.гетХеадерНамес ();вхиле (хнамес.хасМореЕлементс ()) {Низ парамНаме = (Низ) хнамес.нектЕлемент ();оут.принт ("<тр> <тд>" + парамНаме + "");Стринг парамВалуе = рекуест.гетХеадер (парамНаме);оут.принтлн ("<тд>" + парамВалуе + " ");}%>

Објашњење кода:

Линија кода 17: Користећи објект захтева, добијамо објекат сесије те одређене сесије и добијамо вредност објекта те сесије

Линија кода 19: Користећи објекат захтева, добијамо локализацију те одређене сесије и.еен_УС локал за тај ЈСП.

Линија 21: Користећи објекат захтева, добијамо информације о путањи за тај ЈСП. У овом случају, то је ништа, јер не постоји путања за поменуту УРЛ адресу.

Линија кода 23: Коришћењем објекта захтева добивамо контекст пут, тј. Роот пут

Линија кода 25: Коришћењем објекта захтева добивамо име сервера.

Линија кода 27: Коришћењем објекта захтева добивамо порт сервера.

Линија кода 29-35: Користећи објект захтева, добијамо имена заглавља која се појављују као набрајање, а тиме и све вредности заглавља у именима заглавља.

У овом случају добијамо све вредности заглавља као колачић, хост, везу, прихватамо језик, прихватамо кодирање.

Када извршите горњи код, добићете следећи излаз:

Излаз :

Добијамо низ вредности као што су назив сесије, назив локалитета, име путање, име сервера, име порта, хост, контекст путања и све вредности заглавља тог ЈСП-а.

Одговор ЈСП сервера

  • Када се захтев обради, а затим се одговор генерише са веб сервера. Састоји се од статусне линије, заглавља одговора, празног реда и документа.
  • То је објект ХТТПСервлетРеспонсецласс, који је објекат одговора.
  • Ред за статус је верзија ХТМЛ-а.

Заглавља одговора наведена су у наставку:

Заглавље Опис
Дозволи Одређује методе захтева попут ГЕТ, ПОСТ које сервер захтева
Контрола кеш меморије Документ одговора се може кеширати. Може бити јавни, приватни и без кеш меморије. Ниједна кеш меморија не наводи да се документ не сме кеширати
Веза Упућује да ли прегледач треба да користи сачуване ХТТПКоннекције или не. Вредност Цлосе представља да прегледач не би требало да користи постојано у ХТТПЦоннецтионс-у, а „одржавај у животу“ значи коришћење трајних веза
Садржај-диспозиција Да бисте питали корисника да ли ће одговор сачувати на диску или не
Кодирање садржаја Страница мора бити кодирана током преноса
Дужина садржаја Број бајтова у одговору
Тип садржаја Одређује МИМЕ тип одговора
Истиче Одређује до када садржај треба сматрати застарелим и не сме се чувати у кешу
Последња измена Означава када је документ последњи пут измењен
Локација Требало би да буде укључен у све одговоре који имају статусни код и има 300 као статусни код
Освјежи Одређује како пронаћи ажурирану страницу.
Покушај поново Може се користити са одговором 503 да би клијенту рекао колико брзо може да понови захтев
Сет-цоокие Одређује колачић повезан са страницом

Следе методе које користе објекат одговора:

  1. Стринг енцодеРедирецтУРЛ (Стринг УРЛ) - кодира УРЛ у методи редирецтУРЛ.
  2. Стринг енцодеУРЛ (Стринг УРЛ) - кодира УРЛ тако што укључује ИД сесије.
  3. Боолеан цонтаинсХеадер (име низа) - садржи заглавље у ЈСП-у или не.
  4. Логички исЦоммитед () - одговор је предан или није.
  5. Воид аддЦоокие (колачић колачића) - додаје колачић одговору
  6. Воид аддДатеХеадер (Име низа, вредност низа) - додаје име и вредност заглавља одговора
  7. Воид аддХеадер (име низа, вредност низа) - додаје заглавље одговора са именом и вредношћу
  8. Воид аддИнтХеадер (Име низа, вредност инт) - додаје заглавље одговора са именом и целобројном вредношћу
  9. Воид флусхБуффер () - присиљава садржај у међуспремнику на излаз за клијента.
  10. Поништавање празнине () - брише податке у баферу.
  11. Воид ресетБуффер - брише ме успремник садржаја у одговору без брисања статусних кодова.
  12. Воид сендЕррор (интсц, Стрингмсг) - шаље одговор на грешку клијенту помоћу статусног кода.
  13. Воид сендРедирецт (локација низа) - шаље привремени одговор на преусмеравање клијенту.
  14. Воид сетБуфферСизе (инт сизе) - поставља величину бафера тела
  15. Воид сетЦхарацтерЕнцодинг (низ знакова ) - поставља кодирање знакова
  16. Воид сетЦонтентТипе (Стринг типе) - поставља тип садржаја одговора
  17. Воид сетЦонтентЛенгтх (интлен) - поставља дужину садржаја одговора
  18. Воид сетЛоцале (Лоцале лцл) - поставља локални језик одговора
  19. Воид сетСтатус (интсц) - поставља статусни код одговора

Пример:

У овом примеру покривамо различите методе гетЛоцале, флусхбуффер, гетВритер, гет ЦонтентТипе, сетИнтХеадер.

<% @ паге лангуаге = "јава" цонтентТипе = "тект / хтмл; цхарсет = ИСО-8859-1" пагеЕнцодинг = "ИСО-8859-1"%><% @ паге импорт = "јава.ио. * јава.утил. *"%><хтмл><хеад><мета хттп-екуив = "Цонтент-Типе" цонтент = "тект / хтмл; цхарсет = ИСО-8859-1"><титле> Гуру-ов одговор <боди><центер><х2> Гуруов одговор <%Лоцале лцл = респонсе.гетЛоцале ();оут.принтлн ("Локалитет је: + лцл + "\ н");респонсе.флусхБуффер ();ПринтВритер оутпут = респонсе.гетВритер ();оутпут.принтлн ("Ово је из објекта писца");Тип низа = респонсе.гетЦонтентТипе ();оут.принтлн ("Тип садржаја: + тип + "\ н");// Подесите освежавање, време аутоматског учитавања на 5 секундиреспонсе.сетИнтХеадер ("Освежи", 5);// Добијање тренутног временаДатум дт = нови датум ();оут.принтлн ("Данашњи датум је: + дт.тоСтринг () + "\ н");%>

Објашњење кода:

Линија кода 13: Коришћењем објекта одговора добијамо локални језик ове ЈСП сесије

Редак кода 15: Користећи објекат одговора, флусхбуффер се користи за присиљавање садржаја ме успремника у клијента

Редак кода 16: Користећи објекат одговора, добијамо објект писача који добија излаз у излазном току

Кодна линија 18: Коришћењем објекта одговора добијамо тип садржаја тј. МИМЕ тип објекта одговора

Линија 21: Користећи објекат одговора, користи се за аутоматско учитавање на сваких 5 секунди, јер је 5 постављено као други параметар

Када извршите горњи код, добићете следећи излаз:

Излаз:

  • Овде добијамо излаз јер је ово из објекта записивања из гетВритер, који нам даје објекат и можемо да излазимо у излазном току.
  • Локале добијамо као ен_ус, а врсту садржаја као тект / хтмл
  • Добијамо знакове као ИСО 8859
  • Данашњи датум као тренутни датум.

ЈСП ХТТП кодови статуса

  • Када се захтев обради, генерише се одговор. Редак статуса одговора састоји се од ХТТП верзије, статусног кода и придружене поруке.
  • Порука је директно повезана са статусним кодом и ХТТП верзијом, а одређује је сервер.
  • Подразумевано је 200 постављено као статусни код у ЈСП-у, тако да не морамо експлицитно да постављамо.
  • Можемо поставити као метод респонсе.сетСтатус ()

Кодови спадају у следећих 5 категорија:

  • 100-199 - Овде клијент указује да би требало да одговори неком акцијом
  • 200-299 - Значи да је захтев успешан
  • 300-399 - Користе се за датотеке које су премештене и обично садрже заглавље локације које указује на нову адресу
  • 400-499 - Означава грешку клијента
  • 500-599 - Означава грешку сервера

У наставку су наведени неки од уобичајених статусних кодова:

  • 200 - Означава да је све у реду
  • 301 - За стално се преселио
  • 304 - Није измењен од последње промене
  • 400 - Лош захтев
  • 404 - Није пронађено
  • 405 - Метода није пронађена
  • 500 - Интерна грешка сервера
  • 503 - Услуга није доступна
  • 505 - ХТТП верзија није подржана

Неке од његових метода су наведене у наставку:

  1. Јавна празнина сетСтатус (интстатусЦоде)

    Поставља статусни код који год желимо поставити на тој ЈСП страници. То ће нам дати поруку статусног кода који је постављен

  2. Јавна воид сендРедирецт (УРЛ адреса низа)

    Генерише 302 одговора заједно са заглављем локације дајући УРЛ новог документа

  3. Јавна воид сендЕррор (интцоде, Стрингмсг)

    Шаље статусни код заједно са кратком поруком и форматиран је у ХТМЛ документу.

Пример:

У овом примеру, грешку експлицитно шаљемо на ЈСП страницу.

<% @ паге лангуаге = "јава" цонтентТипе = "тект / хтмл; цхарсет = ИСО-8859-1" пагеЕнцодинг = "ИСО-8859-1"%><хтмл><хеад><мета хттп-екуив = "Цонтент-Типе" цонтент = "тект / хтмл; цхарсет = ИСО-8859-1"><титле> Гуру статусни код <боди><% респонсе.сендЕррор (404, „Гуру страница није пронађена“); %>

Објашњење кода:

Линија 10: Коришћењем објекта одговора шаљемо грешку на страницу са два параметра.

  1. Статусни код - може бити било који од горе наведених. У овом случају смо описали као 404
  2. Порука - То може бити било која одређена порука којом желимо да покажемо грешку

Ако извршите горњи код, добићете следећи излаз:

Излаз:

Овде добијамо код грешке као 404, који је послат из кода и такође приказује поруку „Гуру страница није пронађена“ која се види у излазу.

Резиме:

  • У овом чланку сазнали смо о захтеву клијента и одговору сервера о томе како се захтев пресреће и како се одговорима манипулише.
  • Такође смо сазнали о ХТТП кодовима статуса да би се приказали кодови грешака или кодови успеха за одређену датотеку.