JavaRush /جاوا بلاگ /Random-UR /JSP کیا ہے؟ آئیے عملی طور پر امکانات کو تلاش کریں۔
Анзор Кармов
سطح
Санкт-Петербург

JSP کیا ہے؟ آئیے عملی طور پر امکانات کو تلاش کریں۔

گروپ میں شائع ہوا۔
JSP یا Java Server Pages ایک جاوا ٹیکنالوجی ہے جو آپ کو جاوا ایپلیکیشنز کے لیے متحرک ویب صفحات بنانے کی اجازت دیتی ہے۔ اس آرٹیکل میں، ہم اس بارے میں مزید تفصیل سے بات کریں گے کہ JSP کیا ہے، اس ٹیکنالوجی کی کچھ صلاحیتوں پر بات کریں گے، JSP صفحات کی ساخت کو دیکھیں گے، اور یہ بھی عملی جائزہ لینے کی کوشش کریں گے کہ یہ جاوا سرور پیجز کیا ہیں۔ What такое JSP? Разбираемся с возможностями на практике - 1لیکن پہلے، آئیے جے ایس پی کے فوائد اور اہمیت کے بارے میں بات کرتے ہیں۔ JSP ڈویلپر کو اجازت دیتا ہے:
  • جاوا کوڈ میں ویب صفحہ سے ڈیٹا حاصل کرنا؛
  • جاوا کوڈ سے ایک ویب صفحہ پر ڈیٹا بھیجیں؛
  • جاوا کوڈ براہ راست html کے اندر لکھیں (تاہم، آپ کو اس کا غلط استعمال نہیں کرنا چاہئے)۔
JSP علم کی ضرورت کا اندازہ کئی وجوہات کی بنا پر کیا جا سکتا ہے:
  • JSP جاوا کی اہم ویب ٹیکنالوجیز میں سے ایک ہے۔
  • JSP زیادہ تر کمپنیوں اور منصوبوں میں بڑے پیمانے پر استعمال ہوتا ہے۔
  • JSP ایک سرولیٹ کنٹینر کے اندر جاوا سرولیٹس کے ساتھ بغیر کسی رکاوٹ کے ضم ہوجاتا ہے۔

جے ایس پی کی تعریف

یہاں ویکیپیڈیا سے ایک تعریف ہے: JSP (JavaServer Pages) ایک ایسی ٹیکنالوجی ہے جو ویب ڈویلپرز کو ایسا مواد بنانے کی اجازت دیتی ہے جس میں جامد اور متحرک دونوں اجزاء ہوں۔ JSP صفحہ دو قسم کے متن پر مشتمل ہوتا ہے: جامد ماخذ ڈیٹا، جو کہ متنی فارمیٹس HTML، SVG، WML، یا XML، اور JSP عناصر میں سے کسی ایک میں ہو سکتا ہے، جو متحرک مواد کی تشکیل کرتے ہیں۔ اس کے علاوہ، JSP ٹیگ لائبریریوں کو بھی استعمال کیا جا سکتا ہے، نیز ایکسپریشن لینگویج (EL) جاوا کوڈ کو JSP صفحات کے جامد مواد میں سرایت کرنے کے لیے۔ جے ایس پی پیج کوڈ کو جاسپر جے ایس پی پیج کمپائلر کا استعمال کرتے ہوئے سرولیٹ جاوا کوڈ میں ترجمہ کیا جاتا ہے، اور پھر جاوا ورچوئل مشین (JVM) بائی کوڈ میں مرتب کیا جاتا ہے۔ JSP صفحات کو چلانے کے قابل سرولیٹ کنٹینرز پلیٹ فارم سے آزاد جاوا زبان میں لکھے جاتے ہیں۔ JSP ٹیکنالوجی ویب ایپلیکیشنز تیار کرنے کے لیے ایک پلیٹ فارم سے آزاد، پورٹیبل اور آسانی سے قابل توسیع ٹیکنالوجی ہے۔

JSP صفحہ کا ڈھانچہ

عام طور پر، JSP سے مراد متحرک ویب صفحات ہیں جن میں جاوا کا استعمال کرتے ہوئے متحرک حصہ تیار کیا جاتا ہے، اور جامد حصہ مارک اپ لینگوئجز، اکثر HTML کا استعمال کرتے ہوئے تیار کیا جاتا ہے۔ اس طرح کا صفحہ .jsp ایکسٹینشن کے ساتھ ایک ٹیکسٹ دستاویز ہے، جو مارک اپ زبانوں میں سے کسی ایک میں لکھا جاتا ہے (جیسے HTML، SVG، WML اور XML)، JSP عناصر (یا JSP ٹیگز) کے ساتھ جڑا ہوا ہے۔ یہ ٹیگز سرور کوڈ (ڈیٹا) پر کالز پر مشتمل ہوتے ہیں اور کچھ حساب کتاب بھی کرتے ہیں۔ ان فائلوں کو سرور پر پروسیس کیا جاتا ہے، جس کے نتیجے میں تمام JSP ٹیگز ایچ ٹی ایم ایل ٹیگز میں تبدیل ہو جاتے ہیں، اور آؤٹ پٹ ایک باقاعدہ HTML صفحہ ہوتا ہے۔ نیچے دیا گیا خاکہ JSP صفحہ کی ساخت اور سرور کے ساتھ اس کے تعامل کا خاکہ دکھاتا ہے۔ What такое JSP? Разбираемся с возможностями на практике - 2ایک سادہ JSP صفحہ کی مثال:
<html>
  <body>
    <p> ${2 + 2} равно 4 </p>
  </body>
</html>
В данном примере внутрь html codeа “внедрено” JSP выражение, написанное на специальном языке Expression Language (EL). Он предоставляет важный механизм взаимодействия слоя представления (веб-страниц) со слоем бизнес-логики applications (Java-codeа). Как видно из примера, JSP выражение заключено в фигурные скобки, с ведущим знаком доллара - ${...}. Все, что находится внутри фигурных скобок, вычисляется на serverе, и результат этого выражения приводится в html, в то место, где изначально определено JSP выражение. После обработки всех тегов page приобретет следующий вид:
<html>
  <body>
    <p> 4 равно 4 </p>
  </body>
</html>

Установка и запуск контейнера сервлетов

Так How code JSP транслируется в code Java-сервлета, нам нужно где-то раздобыть Howой-нибудь контейнер сервлетов, чтобы мы могли говорить о работе JSP. Иначе, без контейнера, JSP не заработает. Но для начала, приведем определение контейнера сервлетов. Контейнер сервлетов — программа, представляющая собой server, который занимается системной поддержкой сервлетов и обеспечивает их vital цикл в соответствии с правилами, определенными в спецификациях. Может работать How полноценный самостоятельный веб-server, быть поставщиком страниц для другого веб-serverа or интегрироваться в Java EE server приложений. Одним из самых популярных контейнеров сервлетов является Apache Tomcat. What такое JSP? Разбираемся с возможностями на практике - 3Стоит оговориться, что Tomcat — это не полноценный Java EE server приложений. Однако для жизненных нужд сервлетов и JSP-страниц, serverа Tomcat более чем достаточно. Приступим к установке. Скачать Tomcat можно с официальной pages. Для ОС Windows установить томкат можно следующим образом:
  1. Скачиваем 32-bit/64-bit Windows Service Installer.

  2. Запускаем файл.

  3. Далее следуем обычной proceduresе установки:

    1. не забываем отметить галочку Examples на соответствующем окне инсталлятора:

      What такое JSP? Разбираемся с возможностями на практике - 4
    2. и указать путь до предустановленной JRE:

      What такое JSP? Разбираемся с возможностями на практике - 5
  4. После установки запускаем Tomcat и открываем браузер. Переходим на http://localhost:8080/.

Если вы видите стартовую page томката, значит, установка выполнена успешно и server запущен. Для запуска и остановки Tomcat в ручном режиме, можно запустить один из двух исполняемых файлов в директории bin. Она находится внутри директории, в которую инсталлирован Tomcat: What такое JSP? Разбираемся с возможностями на практике - 6

Демонстрационные applications. Скрытые an objectы

Давайте посмотрим на некоторые возможности JSP в действии. Одна из них — доступ к так называемым скрытым an objectм (Implicit Objects). Это an objectы, к которым можно получить доступ, используя язык выражений EL (Expression Language). Примером таких an objectов могут служить HTTP заголовки or же параметры URL. Раскроем (or же освежим в памяти) что такое параметры URL. В примере ниже представлен URL с параметрами. Параметры выделены жирным шрифтом: http://example.net/foo/bar?param1=value1¶m2=value2&a=1&name=Tom Параметры всегда начинаются с символа вопроса (?). Далее следует Name параметра, после — через знак equalsства — определяется meaning параметра. Параметров может быть несколько либо один. Если их несколько, каждая пара Name-meaning разделяется символом амперсанда (&). В примере выше были определены несколько параметров и их значения:
Name параметра Значение параметра
param1 value1
param2 value2
a 1
name Tom
Взглянем на то, How можно получить доступ к скрытым an objectм в JSP, в том числе и параметрам URL. Для этого запустим Tomcat и откроем браузер на странице http://localhost:8080/ Затем перейдем на page Examples: What такое JSP? Разбираемся с возможностями на практике - 7После чего перейдем по ссылке JSP Examples: What такое JSP? Разбираемся с возможностями на практике - 8На странице примеров перейдем по ссылке Implicit Objects -> Execute: What такое JSP? Разбираемся с возможностями на практике - 9На этой странице можно увидеть пример использования скрытых an objectов. Ниже — скрин pages с подробными разъяснениями: What такое JSP? Разбираемся с возможностями на практике - 10Попробуйте изменить meaning параметра foo, используя для этого соответствующее поле на странице, после чего обратите внимание на то, что meaning данного параметра изменилось также и в addressной строке. Представленная page не обладает большим функционалом, однако она является хорошим справочником, к которому можно обращаться в дальнейшем, когда нужно будет получить доступ к тому or иному скрытому an objectу. На данной странице приведен перечень скрытых an objectов, к которым можно получить доступ. А ниже, в таблице, демонстрируется, How можно получить доступ к тому or иному an objectу.

JSP функции

Теперь вернемся на предыдущую page, и взглянем на исходный code pages “скрытые an objectы”: What такое JSP? Разбираемся с возможностями на практике - 11Вот он:
<%@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 pages должен быть вам вполне понятен. Обратите внимание на эти строки:
<tr>
  <td>${param.foo}</td>
  <td>${fn:escapeXml(param["foo"])} </td>
</tr>
Здесь мы видим html теги <tr> и <td>. За тегами <td> следуют JSP теги, обернутые в фигурные скобки ${ }. Однако обратите внимание, How выводится meaning URL параметра foo:
${fn:escapeXml(param["foo"])}
Значение выводится через использование JSP функции fn:escapeXml(). JSP функции инкапсулируют в себе некоторую функциональность, которую можно переиспользовать. В данном случае это экранирование XML. Технология JSP предоставляет широкий набор функций на выбор, а также возможность создавать свои собственные функции. Whatбы использовать в JSP функцию, необходимо импортировать в JSP файл соответствующую библиотеку, в которой определена данная функция.

Библиотеки тегов

Взглянем на еще одну строку исходного codeа (вторая строка), представленного выше:
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
Именно таким образом импортируются библиотеки тегов. Синтаксис интуитивно понятен. Мы определяем несколько вещей:
  • taglib (tag library — библиотеку тегов);
  • url, по которому располагается данная библиотека;
  • префикс (в данном случае fn) через который можно будет вызывать функции определенные в данной библиотеке.
В примере выше мы рассматривали импорт функций. Конкретно в нашем примере мы импортировали библиотеку JSTL (JSP Standard Tag Library). JSTL — это стандартная библиотека тегов, содержащая набор различных библиотек, которые поставляются вместе с каждой реализацией сервлетов и JSP, включая Tomcat. Еще одной популярной библиотекой тегов является core, которую можно импортировать следующим образом:
<%@ taglib uri = "http://java.sun.com/jsp/jstl/core" prefix = "c" %>
Как и в случае с fn, обоmeaning c опциональное и общепринятое. Такое обоmeaning можно встретить практически везде, где используются данные библиотеки. Приведем пример функции из библиотеки core:
<c:out value = "${'<div>'}"/>
Данная функция просто выведет тег <div>. В этой функции уже осуществляется экранирование XML. Данная функция важна с точки зрения безопасности, потому How выводя meaning переменных напрямую, через ${variable}, мы открываем дверь для скрипт инъекций.

Редактирование JSP

Теперь, вооружившись новыми знаниями, попробуем внести изменения в демонстрационное приложение внутри Tomcat. Для этого найдем исходный code данной pages внутри папки, в которую был установлен данный контейнер сервлетов. Данный файл можно найти по следующему addressу: ...\Apache Software Foundation\Tomcat 9.0\webapps\examples\jsp\jsp2\el Затем откроем в любом текстовом редакторе файл implicit-objects.jsp Добавим импорт библиотеки core, а затем с её помощью осуществим вывод Howого-нибудь текста: What такое JSP? Разбираемся с возможностями на практике - 12Теперь обновим page скрытых an objectов и взглянем на внесенные изменения: What такое JSP? Разбираемся с возможностями на практике - 13

Итоги

Итак, мы поверхностно рассмотрели такую технологию How JSP. Мы обсудor:
  • что такое JSP;
  • структуру JSP pages;
  • proceduresу установки и запуска контейнера сервлетов Tomcat;
  • демонстрационное приложение по доступу к скрытым an objectм, которое входит в поставку дистрибутива serverа Tomcat;
  • JSP функции и библиотеки тегов.

What дальше?

Для закрепления материала можно:
  1. Повторить все описанное в данной статье.
  2. Рассмотреть другие демонстрационные applications входящие в поставку serverа Tomcat.
  3. Написать самостоятельно приложение и задеплоить его в контейнер сервлетов. В качестве руководства можно воспользоваться статьей Creation простейшего веб-проекта в IntelliJ Idea Enterprise. Пошагово, с картинками.
تبصرے
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION