JSP же Java Server Pages Java колдонмолору үчүн динамикалык веб-баракчаларды түзүүгө мүмкүндүк берген Java технологиясы. Бул макалада биз JSP деген эмне жөнүндө кененирээк сүйлөшөбүз, бул технологиянын кээ бир мүмкүнчүлүктөрүн талкуулайбыз, JSP баракчаларынын структурасын карап чыгабыз, ошондой эле Java Server Pages деген эмне экенин практикалык жактан карап көрүүгө аракет кылабыз. Бирок адегенде JSPтин артыкчылыктары жана маанилүүлүгү жөнүндө сөз кылалы. JSP иштеп чыгуучуга төмөнкүлөргө мүмкүндүк берет:
Келгиле, сиз JSPдеги жашыруун an objectтерге, анын ичинде URL параметрлерине кантип кире аларыңызды карап көрөлү. Бул үчүн, Tomcatти ишке киргизиңиз жана http://localhost:8080/ баракчасында браузерди ачыңыз. Андан кийин Мисалдар барагына өтүңүз: Андан кийин JSP шилтемесин аткарыңыз Мисалдар: Мисалдар бетинде шилтемени ээрчиңиз Implicit Objects -> Execute: Бул боюнча бетте сиз жашыруун an objectтерди колдонуунун мисалын көрө аласыз. Төмөндө барактын скриншоту кеңири түшүндүрмөлөр менен берилген: Параметрдин маанисин
- Java codeуна интернет баракчасынан маалыматтарды алуу;
- Java codeунан веб-баракчага маалыматтарды жөнөтүү;
- Java codeун түз html ичине жазыңыз (бирок сиз муну кыянаттык менен колдонбошуңуз керек).
- JSP негизги Java веб-технологияларынын бири болуп саналат;
- JSP көпчүлүк компанияларда жана долбоорлордо кеңири колдонулат;
- JSP сервлет контейнеринин ичиндеги Java сервлеттери менен кемчorксиз интеграцияланат.
JSP аныктамасы
Бул жерде Wikipedia аныктамасы: JSP (JavaServer Pages) веб-иштеп чыгуучуларга статикалык жана динамикалык компоненттери бар мазмунду түзүүгө мүмкүндүк берген технология. JSP барагы тексттин эки түрүн камтыйт: HTML, SVG, WML же XML текст форматтарынын биринде болушу мүмкүн болгон статикалык булак маалыматтары жана динамикалык мазмунду түзүүчү JSP элементтери. Кошумчалай кетсек, JSP тег китепканаларын, ошондой эле Java codeун JSP баракчаларынын статикалык мазмунуна киргизүү үчүн Expression Language (EL) колдонсо болот. JSP бет codeу Jasper JSP бет компилятору аркылуу сервлеттин Java codeуна которулуп, андан кийин Java Virtual Machine (JVM) byte codeуна түзүлөт. JSP баракчаларын аткарууга жөндөмдүү сервлет контейнерлери платформадан көз карандысыз Java тorнде жазылган. JSP технологиясы веб-тиркемелерди иштеп чыгуу үчүн платформадан көз карандысыз, көчмө жана оңой кеңейтилүүчү технология.JSP бет түзүмү
Жалпысынан алганда, JSP динамикалык веб-баракчаларды билдирет, алардын динамикалык бөлүгү Java, ал эми статикалык бөлүгү белгилөө тилдери, көбүнчө HTML аркылуу түзүлөт. Мындай барак JSP элементтери (же JSP тэгдери) менен кесorшкен белгилөө тилдеринин биринде (мисалы, HTML, SVG, WML жана XML) жазылган .jsp кеңейтүүсү бар текст documentи. Бул тегдер server codeуна (маалыматтарга) чалууларды камтыйт жана ошондой эле кээ бир эсептөөлөрдү жүргүзөт. Бул файлдар serverде иштетилет, анын натыйжасында бардык JSP тегдери html тегдерине айландырылат жана натыйжасы кадимки html баракчасы болуп саналат. Төмөнкү диаграмма JSP баракчасынын структурасынын диаграммасын жана анын server менен өз ара аракеттенүүсүн көрсөтөт. Жөнөкөй JSP барагынын мисалы:<html>
<body>
<p> ${2 + 2} равно 4 </p>
</body>
</html>
Бул мисалда, атайын тилде жазылган JSP туюнтмасы, Expression Language (EL) html codeунун ичинде "киргизилген" . Ал презентация катмары (веб баракчалар) менен тиркеме бизнес логикалык катмарынын (Java codeу) ортосундагы өз ара аракеттенүүнүн маанилүү механизмин камсыз кылат. Мисалдан көрүнүп тургандай, JSP туюнтмасы тармал кашаалардын ичинде, алдыңкы доллар белгиси менен - ${...}
. Тармал кашаанын ичиндеги нерселердин баары serverде бааланат жана бул туюнтуунун натыйжасы htmlде, JSP туюнтмасы алгач аныкталган жерде берилет. Бардык тегдерди иштеп чыккандан кийин, барак төмөнкүдөй болот:
<html>
<body>
<p> 4 равно 4 </p>
</body>
</html>
Сервлет контейнерин орнотуу жана иштетүү
JSP codeу Java сервлет codeуна которулгандыктан, JSP кандайча иштээри жөнүндө сүйлөшө алышыбыз үчүн кандайдыр бир сервлет контейнерин алышыбыз керек. Болбосо, контейнерсиз JSP иштебейт. Бирок адегенде сервлет контейнеринин аныктамасын карап көрөлү. Сервлет контейнери – бул сервлеттерге системалык колдоо көрсөтүүчү жана спецификацияларда аныкталган эрежелерге ылайык алардын жашоо циклин камсыз кылуучу server болгон программа. Ал толук кандуу көз карандысыз веб-server катары иштей алат, башка веб-server үчүн барак провайдери боло алат же Java EE колдонмо serverине интеграцияланышы мүмкүн. Эң популярдуу сервлет контейнерлеринин бири - Apache Tomcat. Белгилей кетсек, Tomcat толук кандуу Java EE колдонмо serverи эмес. Бирок, сервлеттердин жана JSP баракчаларынын маанилүү муктаждыктары үчүн Tomcat serverи жетиштүү. Орнотууну баштайлы. Сиз Tomcat'ты расмий баракчадан жүктөп алсаңыз болот . Windows OS үчүн Tomcatты төмөнкүдөй орното аласыз:-
32-бит/64-бит Windows Кызмат Орнотуучусун жүктөп алыңыз.
-
Келгиле, файлды иштетели.
-
Андан кийин, кадимки орнотуу proceduresасын аткарыңыз:
-
Тиешелүү орнотуучу терезеде Мисалдар кутучасын белгилөөнү унутпаңыз:
-
жана алдын ала орнотулган JREге жолду көрсөтүңүз:
-
-
Орнотуудан кийин, Tomcat иштетип, браузерди ачыңыз. http://localhost:8080/ дарегине өтүңүз .
Демо колдонмолор. Жашырылган an objectтер
Келгиле, кээ бир JSP функцияларын карап көрөлү. Алардын бири жашыруун an objectилер деп аталган мүмкүнчүлүк болуп саналат ( Implicit Objects ). Бул Expression Language (EL) аркылуу кирүүгө мүмкүн болгон an objectтер. Мындай an objectтердин мисалдары HTTP аталыштары же URL параметрлери. Келгиле, URL параметрлери кандай экенин ачып берели (же эс тутумубузду жаңыртабыз). Төмөндөгү мисалда параметрлери бар URL көрсөтүлгөн. Параметрлер кара тамга менен жазылган: http://example.net/foo/bar ?param1=value1¶m2=value2&a=1&name=Tom Параметрлер дайыма суроо белгиси менен башталат (?). Андан кийин параметрдин аталышы, андан кийин теңдик белгиси коюлат – параметрдин мааниси аныкталат. Бир нече же бир параметр болушу мүмкүн. Эгерде бирден ашык болсо, ар бир ат-маани түгөйү амперанд белгиси (&) менен бөлүнөт. Жогорудагы мисалда бир нече параметрлер жана алардын баалуулуктары аныкталган:Параметр аты | Параметрдин мааниси | |
---|---|---|
param1 | маани1 | |
param2 | маани 2 | |
а | 1 | |
аты | Том |
foo
барактагы тиешелүү талааны колдонуп өзгөртүп көрүңүз, андан кийин дарек тилкесинде бул параметрдин мааниси да өзгөргөнүн байкаңыз. Сунушталган барактын көп функционалдуулугу жок, бирок бул жакшы маалымдама, сиз келечекте белгилүү бир жашыруун an objectке кирүү керек болгондо кайрыла аласыз. Бул баракта кирүүгө мүмкүн болгон жашыруун an objectтердин тизмеси бар. Ал эми төмөндө, tableда, белгилүү бир an objectке кантип кире ала тургандыгы көрсөтүлгөн.
JSP функциялары
Эми мурунку бетке кайрылып, "жашыруун an objectилер" барагынын баштапкы codeун карап көрөлү: Бул жерде:<%@page contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<html>
<head>
<title>JSP 2.0 Expression Language - Implicit Objects</title>
</head>
<body>
<h1>JSP 2.0 Expression Language - Implicit Objects</h1>
<hr>
This example illustrates some of the implicit objects available
in the Expression Language. The following implicit objects are
available (not all illustrated here):
<ul>
<li>pageContext - the PageContext object</li>
<li>pageScope - a Map that maps page-scoped attribute names to
their values</li>
<li>requestScope - a Map that maps request-scoped attribute names
to their values</li>
<li>sessionScope - a Map that maps session-scoped attribute names
to their values</li>
<li>applicationScope - a Map that maps application-scoped attribute
names to their values</li>
<li>param - a Map that maps parameter names to a single String
parameter value</li>
<li>paramValues - a Map that maps parameter names to a String[] of
all values for that parameter</li>
<li>header - a Map that maps header names to a single String
header value</li>
<li>headerValues - a Map that maps header names to a String[] of
all values for that header</li>
<li>initParam - a Map that maps context initialization parameter
names to their String parameter value</li>
<li>cookie - a Map that maps cookie names to a single Cookie object.</li>
</ul>
<blockquote>
<u><b>Change Parameter</b></u>
<form action="implicit-objects.jsp" method="GET">
foo = <input type="text" name="foo" value="${fn:escapeXml(param["foo"])}">
<input type="submit">
</form>
<br>
<code>
<table border="1">
<thead>
<td><b>EL Expression</b></td>
<td><b>Result</b></td>
</thead>
<tr>
<td>\${param.foo}</td>
<td>${fn:escapeXml(param["foo"])} </td>
</tr>
<tr>
<td>\${param["foo"]}</td>
<td>${fn:escapeXml(param["foo"])} </td>
</tr>
<tr>
<td>\${header["host"]}</td>
<td>${fn:escapeXml(header["host"])} </td>
</tr>
<tr>
<td>\${header["accept"]}</td>
<td>${fn:escapeXml(header["accept"])} </td>
</tr>
<tr>
<td>\${header["user-agent"]}</td>
<td>${fn:escapeXml(header["user-agent"])} </td>
</tr>
</table>
</code>
</blockquote>
</body>
</html>
Эгер сиз HTML менен тааныш болсоңуз, анда барактын баштапкы codeу сизге так болушу керек. Бул саптарга көңүл буруңуз:
<tr>
<td>${param.foo}</td>
<td>${fn:escapeXml(param["foo"])} </td>
</tr>
Бул жерде биз html тегдерин <tr>
жана <td>
. Tagдерден кийин <td>
тармал кашааларга оролгон JSP тэгдери турат ${ }
. Бирок, URL параметринин мааниси кандайча чыгарылганына көңүл буруңуз foo
:
${fn:escapeXml(param["foo"])}
Маани JSP функциясын колдонуу аркылуу чыгарылат fn:escapeXml()
. JSP функциялары кайра колдонула турган кээ бир функцияларды камтыйт. Бул учурда, ал XML качып жатат. JSP технологиясы тандоо үчүн функциялардын кеңири спектрин, ошондой эле өз функцияларыңызды түзүү мүмкүнчүлүгүн берет. JSPде функцияны колдонуу үчүн, сиз JSP файлына функция аныкталган тиешелүү китепкананы импорттооңуз керек.
Tag китепканалары
Жогорудагы баштапкы codeдун дагы бир сабын (экинчи сап) карап көрөлү:<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
Tag китепканалары ушундайча импорттолот. Синтаксис интуитивдик. Биз бир нече нерсени аныктайбыз:
taglib
(тег китепканасы - тег китепканасы);url
, бул китепкана кайда жайгашкан;- префикс (бул учурда
fn
), ал аркылуу бул китепканада аныкталган функцияларды чакырууга мүмкүн болот.
<%@ taglib uri = "http://java.sun.com/jsp/jstl/core" prefix = "c" %>
сыяктуу эле fn
, белги c
милдеттүү эмес жана жалпы кабыл алынган. Бул белгини бул китепканалар колдонулган бардык жерде табууга болот. Бул жерде негизги китепканадан бир функциянын мисалы:
<c:out value = "${'<div>'}"/>
Бул функция жөн гана тегди чыгарат <div>
. Бул функция мурунтан эле XMLден качат. Бул функция коопсуздук көз карашынан алганда маанилүү, анткени өзгөрмөлөрдүн маанисин түздөн-түз чыгаруу менен, ${variable}
биз скрипт инъекциясынын эшигин ачабыз.
JSP түзөтүү
Эми, жаңы бorмдер менен куралданып, келгиле, Tomcat ичиндеги демо тиркемеге өзгөртүүлөрдү киргизүүгө аракет кылалы. Бул үчүн, биз бул барактын баштапкы codeун ушул сервлет контейнери орнотулган папканын ичинен табабыз. Бул файлды төмөнкү даректен тапса болот: ...\Apache Software Foundation\Tomcat 9.0\webapps\examples\jsp\jsp2\el Андан кийин каалаган текст редакторунда implicit-objects.jsp файлын ачыңыз. Негизги китепкананын импортун кошуңуз , анан аны колдонуңуз Келгиле, бир аз текст чыгаралы: Эми жашырылган an objectтер барагын жаңыртып, киргизилген өзгөртүүлөрдү карап көрөлү:Жыйынтыктар
Ошентип, биз JSP сыяктуу технологияны үстүртөн карап чыктык. Биз талкууладык:- JSP деген эмне;
- JSP бет түзүмү;
- Tomcat сервлет контейнерин орнотуу жана иштетүү тартиби;
- Tomcat serverинин бөлүштүрүү пакетине кирген жашыруун an objectтерге кирүү үчүн демо тиркеме;
- JSP функциялары жана тег китепканалары.
Кийинкиси эмне?
Материалды камсыз кылуу үчүн сиз:- Бул макалада сүрөттөлгөн баарын кайталаъыз.
- Tomcat serverинде камтылган башка демо тиркемелерди карап көрүңүз.
- Өз арызыңызды жазыңыз жана аны сервлет контейнерине орнотуңуз. Колдонмо катары IntelliJ Idea Enterprise ичинде жөнөкөй веб-долбоорду түзүү макаласын колдоно аласыз. Кадам-кадам, сүрөттөр менен.
GO TO FULL VERSION