ЈСП акције које користе конструкције у КСМЛ синтакси за контролу понашања сервлет мотора. Детаљније ћемо научити о разним елементима ЈСП акције као што су захтев клијента, одговор сервера, ХТТП кодови статуса.
У овом упутству ћете научити-
- Захтев ЈСП клијента
- Одговор ЈСП сервера
- ЈСП ХТТП кодови статуса
Захтев ЈСП клијента
- Када се затражи веб страница, она шаље информације веб серверу у ХТТП заглављу.
- Те информације можемо користити помоћу објекта ХТТПСервлетРекуест.
- Информације које прегледач шаље се чувају у заглављу захтева ХТТП захтева.
- Користимо различита заглавља за слање информација до објекта захтева.
У наставку су описани различити заглавља:
Заглавље | Опис | Пример |
---|---|---|
Прихвати | Одређује МИМЕ типове са којима прегледач или други клијенти могу да раде | Слика / пнг или слика / јпег |
Прихвати-цхарсет | За приказ информација користи скуп знакова који користи прегледач | ИСО-8859-1 |
Аццепт- Енцодинг | Одређује тип кодирања којим се обрађује прегледач | Гзип или облог |
Прихвати језик | Одређује језик који одређује клијент | Ен, ен_ус |
Овлашћење | Заглавље које користе клијенти приликом покушаја приступа веб страницама заштићеним лозинком | |
Веза | Означава да ли клијент може да обрађује трајне ХТТП везе (прегледач може да преузме више датотека) | Одржи у животу |
Дужина садржаја | Применљиво на захтеве за објављивање. Даје величину података у бајтовима | |
Колачић | Враћа колачић на сервер (оне који су претходно послати прегледачу) | |
Домаћин | Одређује хост и порт оригиналне УРЛ адресе | |
Ако се модификује од | Означава да захтева само страницу ако је промењена или измењена | |
Ако није измењен од | Означава да страница захтева само ако није промењена или измењена | |
Реферрер | Означава УРЛ референтне УРЛ странице | |
Кориснички агент | Идентификује претраживач или клијент који подноси захтев |
Следеће методе се користе за читање ХТТП заглавља на ЈСП страници:
- Цоокие [] гетЦоокиес () - враћа низ који садржи објекте колачића које је клијент послао
- Енумерација гетАттрибутеНамес () - садржи набрајање имена атрибута за захтев
- Енумератион гетХеадерНамес () - садржи набрајање имена заглавља.
- Енумератион гетПараметерНамес () - садржи набрајање добијања имена параметара у захтеву.
- ХттпСессионгетСессион () - враћа тренутну сесију повезану са захтевом или ако нема сесију, створиће нову.
- Лоцале гетЛоцале () - враћа жељену локалитету у којој ће клијент прихватити садржај. Додијељен је одговору. Подразумевано, вредност ће бити задана локализација сервера.
- Објецт гетАттрибуте (Стринг наме) - враћа вредност именованог атрибута као објекта.
- СервлетИнпутСтреамгетИнпутСтреам () - преузима тело захтева као бинарне податке.
- Стринг гетАутхТипе () - враћа име шеме за аутентификацију ради заштите сервлета
- Стринг гетЦхарацтерЕнцодинг () - враћа име кодирања знакова који се користи у телу захтева.
- Стринг гетЦонтентТипе () - враћа МИМЕ тип тела захтева.
- Стринг гетЦонтектПатх () - враћа део УРИ захтева који указује на контекст путању УРИ
- Стринг гетХеадер (име низа) - враћа заглавље захтева као низ
- Стринг гетМетход () - враћа име ХТТП методе попут ГЕТ, ПОСТ
- Стринг гетПараметер (име низа) - враћа параметар захтева као низ.
- Стринг гетПатхИнфо () - враћа информације о путањи повезане са УРЛ-ом
- Стринг гетКуериСтринг () - враћа низ упита који је повезан са УРЛ-ом захтева
- Стринг гетСервлетПатх () - враћа део УРЛ-а захтева који позива ЈСП
- Стринг [] гетПараметерВалуес (име низа ) - враћа низ објеката низа који садрже вредности које параметар захтева има
Пример:
У доњем примеру користимо различите методе користећи објекат захтева
<% @ паге лангуаге = "јава" цонтентТипе = "тект / хтмл; цхарсет = ИСО-8859-1" пагеЕнцодинг = "ИСО-8859-1"%><% @ паге импорт = "јава.ио. * јава.утил. *"%><хтмл><хеад><мета хттп-екуив = "Цонтент-Типе" цонтент = "тект / хтмл; цхарсет = ИСО-8859-1"><титле> Захтев клијента Гуру ЈСП титле>хеад><боди><х2> Гуру ЈСП захтева клијента х2><табле бордер = "1"><тр><тх> заглавље гуруа тх> <тх> заглавље гуруа Вредност (и) тх>тр><%ХттпСессион гурусессион = рекуест.гетСессион ();оут.принт ("<тр> <тд> Име сесије је тд> <тд>" + гурусессион + " тд.> тр>");Лоцале гурулоцале = рекуест.гетЛоцале ();оут.принт ("<тр> <тд> Име локалитета је тд> <тд>" + гурулоцале + "тд> тр>");Стринг пут = рекуест.гетПатхИнфо ();оут.принт ("<тр> <тд> Назив пута је тд> <тд>" + патх + "тд> тр>");Низ лпатх = рекуест.гет ();оут.принт ("<тр> <тд> Контекст путања је тд> <тд>" + липатх + "тд> тр>");Низ сервера = рекуест.гетСерверНаме ();оут.принт ("<тр> <тд> Име сервера је тд> <тд>" + име сервера + "тд> тр>");инт портнаме = рекуест.гетСерверПорт ();оут.принт ("<тр> <тд> Порт сервера је тд> <тд>" + портнаме + "тд> тр>");Набрајање хнамес = рекуест.гетХеадерНамес ();вхиле (хнамес.хасМореЕлементс ()) {Низ парамНаме = (Низ) хнамес.нектЕлемент ();оут.принт ("<тр> <тд>" + парамНаме + "тд>");Стринг парамВалуе = рекуест.гетХеадер (парамНаме);оут.принтлн ("<тд>" + парамВалуе + "тд> тр>");}%>
Објашњење кода:
Линија кода 17: Користећи објект захтева, добијамо објекат сесије те одређене сесије и добијамо вредност објекта те сесије
Линија кода 19: Користећи објекат захтева, добијамо локализацију те одређене сесије и.еен_УС локал за тај ЈСП.
Линија 21: Користећи објекат захтева, добијамо информације о путањи за тај ЈСП. У овом случају, то је ништа, јер не постоји путања за поменуту УРЛ адресу.
Линија кода 23: Коришћењем објекта захтева добивамо контекст пут, тј. Роот пут
Линија кода 25: Коришћењем објекта захтева добивамо име сервера.
Линија кода 27: Коришћењем објекта захтева добивамо порт сервера.
Линија кода 29-35: Користећи објект захтева, добијамо имена заглавља која се појављују као набрајање, а тиме и све вредности заглавља у именима заглавља.
У овом случају добијамо све вредности заглавља као колачић, хост, везу, прихватамо језик, прихватамо кодирање.
Када извршите горњи код, добићете следећи излаз:
Излаз :
Добијамо низ вредности као што су назив сесије, назив локалитета, име путање, име сервера, име порта, хост, контекст путања и све вредности заглавља тог ЈСП-а.
Одговор ЈСП сервера
- Када се захтев обради, а затим се одговор генерише са веб сервера. Састоји се од статусне линије, заглавља одговора, празног реда и документа.
- То је објект ХТТПСервлетРеспонсецласс, који је објекат одговора.
- Ред за статус је верзија ХТМЛ-а.
Заглавља одговора наведена су у наставку:
Заглавље | Опис |
---|---|
Дозволи | Одређује методе захтева попут ГЕТ, ПОСТ које сервер захтева |
Контрола кеш меморије | Документ одговора се може кеширати. Може бити јавни, приватни и без кеш меморије. Ниједна кеш меморија не наводи да се документ не сме кеширати |
Веза | Упућује да ли прегледач треба да користи сачуване ХТТПКоннекције или не. Вредност Цлосе представља да прегледач не би требало да користи постојано у ХТТПЦоннецтионс-у, а „одржавај у животу“ значи коришћење трајних веза |
Садржај-диспозиција | Да бисте питали корисника да ли ће одговор сачувати на диску или не |
Кодирање садржаја | Страница мора бити кодирана током преноса |
Дужина садржаја | Број бајтова у одговору |
Тип садржаја | Одређује МИМЕ тип одговора |
Истиче | Одређује до када садржај треба сматрати застарелим и не сме се чувати у кешу |
Последња измена | Означава када је документ последњи пут измењен |
Локација | Требало би да буде укључен у све одговоре који имају статусни код и има 300 као статусни код |
Освјежи | Одређује како пронаћи ажурирану страницу. |
Покушај поново | Може се користити са одговором 503 да би клијенту рекао колико брзо може да понови захтев |
Сет-цоокие | Одређује колачић повезан са страницом |
Следе методе које користе објекат одговора:
- Стринг енцодеРедирецтУРЛ (Стринг УРЛ) - кодира УРЛ у методи редирецтУРЛ.
- Стринг енцодеУРЛ (Стринг УРЛ) - кодира УРЛ тако што укључује ИД сесије.
- Боолеан цонтаинсХеадер (име низа) - садржи заглавље у ЈСП-у или не.
- Логички исЦоммитед () - одговор је предан или није.
- Воид аддЦоокие (колачић колачића) - додаје колачић одговору
- Воид аддДатеХеадер (Име низа, вредност низа) - додаје име и вредност заглавља одговора
- Воид аддХеадер (име низа, вредност низа) - додаје заглавље одговора са именом и вредношћу
- Воид аддИнтХеадер (Име низа, вредност инт) - додаје заглавље одговора са именом и целобројном вредношћу
- Воид флусхБуффер () - присиљава садржај у међуспремнику на излаз за клијента.
- Поништавање празнине () - брише податке у баферу.
- Воид ресетБуффер - брише ме успремник садржаја у одговору без брисања статусних кодова.
- Воид сендЕррор (интсц, Стрингмсг) - шаље одговор на грешку клијенту помоћу статусног кода.
- Воид сендРедирецт (локација низа) - шаље привремени одговор на преусмеравање клијенту.
- Воид сетБуфферСизе (инт сизе) - поставља величину бафера тела
- Воид сетЦхарацтерЕнцодинг (низ знакова ) - поставља кодирање знакова
- Воид сетЦонтентТипе (Стринг типе) - поставља тип садржаја одговора
- Воид сетЦонтентЛенгтх (интлен) - поставља дужину садржаја одговора
- Воид сетЛоцале (Лоцале лцл) - поставља локални језик одговора
- Воид сетСтатус (интсц) - поставља статусни код одговора
Пример:
У овом примеру покривамо различите методе гетЛоцале, флусхбуффер, гетВритер, гет ЦонтентТипе, сетИнтХеадер.
<% @ паге лангуаге = "јава" цонтентТипе = "тект / хтмл; цхарсет = ИСО-8859-1" пагеЕнцодинг = "ИСО-8859-1"%><% @ паге импорт = "јава.ио. * јава.утил. *"%><хтмл><хеад><мета хттп-екуив = "Цонтент-Типе" цонтент = "тект / хтмл; цхарсет = ИСО-8859-1"><титле> Гуру-ов одговор титле>хеад><боди><центер><х2> Гуруов одговор х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 - ХТТП верзија није подржана
Неке од његових метода су наведене у наставку:
- Јавна празнина сетСтатус (интстатусЦоде)
Поставља статусни код који год желимо поставити на тој ЈСП страници. То ће нам дати поруку статусног кода који је постављен
- Јавна воид сендРедирецт (УРЛ адреса низа)
Генерише 302 одговора заједно са заглављем локације дајући УРЛ новог документа
- Јавна воид сендЕррор (интцоде, Стрингмсг)
Шаље статусни код заједно са кратком поруком и форматиран је у ХТМЛ документу.
Пример:
У овом примеру, грешку експлицитно шаљемо на ЈСП страницу.
<% @ паге лангуаге = "јава" цонтентТипе = "тект / хтмл; цхарсет = ИСО-8859-1" пагеЕнцодинг = "ИСО-8859-1"%><хтмл><хеад><мета хттп-екуив = "Цонтент-Типе" цонтент = "тект / хтмл; цхарсет = ИСО-8859-1"><титле> Гуру статусни код титле>хеад><боди><% респонсе.сендЕррор (404, „Гуру страница није пронађена“); %>боди>хтмл>
Објашњење кода:
Линија 10: Коришћењем објекта одговора шаљемо грешку на страницу са два параметра.
- Статусни код - може бити било који од горе наведених. У овом случају смо описали као 404
- Порука - То може бити било која одређена порука којом желимо да покажемо грешку
Ако извршите горњи код, добићете следећи излаз:
Излаз:
Овде добијамо код грешке као 404, који је послат из кода и такође приказује поруку „Гуру страница није пронађена“ која се види у излазу.
Резиме:
- У овом чланку сазнали смо о захтеву клијента и одговору сервера о томе како се захтев пресреће и како се одговорима манипулише.
- Такође смо сазнали о ХТТП кодовима статуса да би се приказали кодови грешака или кодови успеха за одређену датотеку.