۲۹ شهریور ۱۴۰۳

Techboy

اخبار و اطلاعات روز تکنولوژی

JSP چیست؟ معرفی صفحات سرور جاکارتا

یکی از فناوری‌های اصلی وب جاوا، JSP است که هنوز به طور گسترده با servlets و JSTL استفاده می‌شود. در اینجا نحوه استفاده از Jakarta Server Pages برای ساخت صفحات وب پویا که به بک اند جاوا متصل می شوند، آورده شده است.

یکی از فناوری‌های اصلی وب جاوا، JSP است که هنوز به طور گسترده با servlets و JSTL استفاده می‌شود. در اینجا نحوه استفاده از Jakarta Server Pages برای ساخت صفحات وب پویا که به بک اند جاوا متصل می شوند، آورده شده است.

صفحات سرور جاکارتا (صفحات جاواسرور سابق) یک فناوری استاندارد جاوا است که توسعه دهندگان از آن برای نوشتن صفحات وب پویا و مبتنی بر داده برای برنامه های کاربردی وب جاوا استفاده می کنند. JSP در بالای Java Servlet (aka  ساخته شده است Jakarta Servlet) مشخصات و یکی از فناوری های وب جاوا است که برای پشتیبانی و ارتقاء مداوم در Jakarta EE گنجانده شده است.< /p>

JSP و servlet ها معمولاً با هم کار می کنند، به خصوص در برنامه های وب قدیمی جاوا. از منظر کدنویسی، واضح ترین تفاوت بین JSP و servlets این است که با servlet ها کد جاوا را می نویسید و سپس نشانه گذاری سمت مشتری (مانند HTML) را در آن کد قرار می دهید. با JSP، شما با اسکریپت سمت سرویس گیرنده یا نشانه گذاری شروع می کنید، سپس تگ های JSP را برای اتصال صفحه خود به قسمت پشتی جاوا تعبیه می کنید.

به JSP به عنوان راهی برای نوشتن نشانه گذاری با ابرقدرت ها برای تعامل با قسمت پشتی فکر کنید. معمولاً نشانه‌گذاری‌هایی مانند HTML برای مشتری ارسال می‌شود که در آنجا با سرور back-end از طریق JavaScript در تعامل است. JSP HTML را با دستورات ویژه برای دسترسی و استفاده از قابلیت های سرور از قبل پردازش می کند، سپس آن صفحه کامپایل شده را برای مشتری ارسال می کند.

JSP در جاکارتا EE

پس از انتشار Java EE 8، Oracle سرپرستی Java Enterprise Edition (Java EE) را به بنیاد Eclipse منتقل کرد. در آینده، پلتفرم سازمانی جاوا به عنوان Jakarta EE تغییر نام داد. همراه با مشخصات Servlet و JSF، JSP یا سرور جاکارتا Pages، اکنون بخشی از Jakarta EE است.

JSP و JSF

JSP با JSF یا Jakarta Server Faces (که قبلاً JavaServer Faces) ارتباط نزدیکی دارد. JSF یک مشخصات جاوا برای ساخت برنامه های وب مدل-نما-کنترلر (MVC) است. این استاندارد برای چارچوب های وب جاوا مانند Eclipse Mojarra، MyFaces، و PrimeFaces. در حالی که استفاده از JSP به‌عنوان پیش‌فرض برای برنامه‌های قدیمی‌تر JSF غیرعادی نیست، Facelets فناوری نمایش ترجیحی برای پیاده سازی های مدرن JSF است.

آیا توسعه دهندگان همچنان از JSP استفاده می کنند؟

توسعه دهندگان هنوز برای برخی از برنامه ها از JSP استفاده می کنند. این فناوری ساده‌تر از رویکردهای مدرن‌تر مانند Jamstack یا موتور قالبی مانند Thymeleaf است. ، اما گاهی اوقات راه ساده ای است.

JSP یک فناوری وب اصلی جاوا است. به‌عنوان توسعه‌دهندگان، می‌توانیم صفحات JSP را نسبتاً سریع و آسان بسازیم، و آنها به‌طور یکپارچه با سرولت‌های موجود در یک سرویلت ظرف مانند Tomcat تعامل دارند. می توان گفت که JSP معادل اکوسیستم جاوا PHP و ASP در دنیای NET است.

شما در برنامه های وب قدیمی جاوا با JSP مواجه خواهید شد. گاه به گاه، ممکن است همچنان برای ساختن صفحات وب ساده و پویا جاوا مفید باشد. به عنوان یک توسعه دهنده جاوا، باید با JSP و نحوه استفاده از آن در برنامه های خود آشنا باشید.

JSP و کتابخانه برچسب استاندارد جاکارتا را بیاموزید

این مقاله معرفی سریع JSP یا چهره‌های سرور جاکارتا، از جمله کتابخانه برچسب استاندارد جاکارتا خواهد بود. (JSTL). شما یاد خواهید گرفت که چگونه یک صفحه HTML ساده بنویسید، تگ های JSP را برای اتصال به سرورلت جاسازی کنید، و صفحه را در یک ظرف سرولت اجرا کنید. برای اطلاعات بیشتر در مورد servlets و JSF، مقالات قبلی این مجموعه را ببینید.

نوشتن صفحات JSP

یک صفحه JSP ساده شامل نشانه گذاری HTML است که با تگ های JSP تعبیه شده است. فایل های JSP دارای پسوند .jsp هستند. سرور JSP (که ظرف JSP نیز نامیده می شود) به گونه ای پیکربندی شده است که یک درخواست HTTP را به یک صفحه JSP خاص هدایت کند، که سپس مسئول ارائه پاسخ HTTP است.

هنگامی که درخواست می رسد، فایل در سرور پردازش می شود و HTML به عنوان نمای برنامه، یک صفحه وب، ارائه می شود. تگ های JSP تعبیه شده برای فراخوانی کد و داده های سمت سرور استفاده خواهند شد. محصول نهایی JSP وانیلی HTML است که مرورگر مشتری می تواند آن را همانطور که هست بفهمد. نمودار در شکل ۱ تعامل بین HTML، JSP و سرور برنامه وب را نشان می دهد.

نمودار صفحه صفحات سرور جاکارتا (JSP) در یک برنامه وب.

شکل ۱. نمای کلی صفحه صفحات سرور جاکارتا (JSP) در یک برنامه وب.

فهرست ۱ یک صفحه JSP ساده را نشان می دهد.


<html>
  <body>
    <p>${2 * 2} should equal 4</p>
  </body>
</html>

در اینجا، بلوکی از HTML را مشاهده می کنید که شامل عبارت JSP است، که دستورالعملی برای سرور جاوا است که با استفاده از زبان بیان (EL). در عبارت ${۲ * ۲}، ${} دستور JSP برای درونیابی کد در HTML است. علامت دلار با براکت‌های فرفری به پردازنده JSP می‌گوید: «یک ثانیه صبر کنید، ما در شرف شروع صحبت در مورد چیز خاصی هستیم که باید از آن مراقبت کنید.»  وقتی اجرا شد، صفحه JSP نتایج اجرای هر آنچه را که هست به نمایش می‌گذارد. در این حالت خروجی عدد ۴ خواهد بود.

JSP در ظرف سرولت

صفحات JSP باید در داخل یک کانتینر servlet مستقر شوند. به منظور استقرار یک برنامه وب جاوا بر اساس JSP و servlets، فایل‌های jsp.، کد جاوا و ابرداده برنامه خود را در یک فایل .war بسته بندی می‌کنید که یک فایل zip ساده با ساختاری معمولی برای برنامه‌های کاربردی وب است.< /p>

هنگامی که JSP را در ظرف سرولت خود بارگذاری کردید، در یک سرورلت کامپایل می شود. JSPها و servlet ها ویژگی های مشابهی دارند، از جمله توانایی دسترسی و پاسخ به اشیاء درخواستی.

کانتینر Servlet در مقابل سرور برنامه

در دنیای جاوا، یک سرویلت ظرف که به عنوان وب سرور نیز شناخته می‌شود، مانند نسخه ساده (آبجو) یک سرور برنامه است. یک کانتینر servlet تعاملات درخواست و پاسخ را مدیریت می کند و به آن تعاملات اجازه می دهد تا با زیر مجموعه ای از قابلیت های سازمانی جاوا برای برنامه های کاربردی وب ارتباط برقرار کنند. یک سرور برنامه کاربردی جاوا شامل کانتینر servlet به عنوان بخشی از پشته کامل سازمانی جاوا، از جمله است. EJB، JPA، JMS، و موارد دیگر.

نحوه استفاده از JSP با Tomcat

ما از یک برنامه کاربردی در تامکت برای شروع کار با صفحات سرور جاکارتا استفاده خواهیم کرد. اگر Tomcat را قبلاً نصب نکرده‌اید، به صفحه دانلود Tomcat بروید و انتخاب کنید. نصب Tomcat برای سیستم عامل شما. از زمان نگارش این مقاله، Tomcat 10 نسخه فعلی است و با Jakarta Servlet 6 و صفحات سرور جاکارتا ۳.۱.

می‌توانید Tomcat را به‌عنوان یک سرویس ویندوز نصب کنید، یا آن را از خط فرمان با /bin/catalina.sh start یا /bin/catalina.bat اجرا کنید. در هر صورت، Tomcat را راه اندازی کنید، سپس به localhost:8080 بروید تا صفحه خوش آمدگویی Tomcat را که در شکل ۲ نشان داده شده است ببینید.

jsp tomcat صفحه خوش آمدگویی

شکل ۲. صفحه خوش آمدگویی Tomcat.

اشیاء ضمنی در JSP

در صفحه خوش آمدگویی Tomcat، روی پیوند نمونه‌ها کلیک کنید، سپس روی JSP Examples کلیک کنید.

بعد، برنامه وب Implicit Objects Execute را باز کنید. شکل ۳ خروجی این نمونه برنامه را نشان می دهد. یک دقیقه به مطالعه خروجی اختصاص دهید. عناصری که توضیح می دهد همیشه به طور پیش فرض در یک صفحه JSP در دسترس هستند.

نمونه خروجی برای یک صفحه JSP.

شکل ۳. نمونه خروجی برای یک صفحه JSP.

توجه داشته باشید که هیچ تغییر کدی بین JSP 2.0 و JSP 3.0 لازم نیست، که به‌روزرسانی فعلی Jakarta EE است. مثال Implicit Object از JSP 2.0 استفاده می کند.

درخواست پارامترها

اشیاء ضمنی اشیایی داخلی هستند که از طریق یک صفحه JSP قابل دسترسی هستند. هنگامی که در حال توسعه یک صفحه وب هستید، از این اشیاء برای دسترسی به مواردی مانند پارامترهای درخواست استفاده خواهید کرد، که داده‌هایی هستند که هنگام صدور یک درخواست HTTP از مرورگر مشتری ارسال می‌شوند.

URL مرورگر را برای برنامه کاربردی اشیاء ضمنی در نظر بگیرید: http://localhost:8080/examples/jsp/jsp2/el/implicit-objects.jsp?foo=bar.

توجه داشته باشید که هیچ چیز خاصی در مورد این صفحه وجود ندارد. ما فقط از آن برای مشاهده نحوه دسترسی به پارامتر URL استفاده می کنیم. پارامتر ?foo=bar است، و می توانید آن را در خروجی صفحه وب مشاهده کنید، جایی که جدول EL Expression و مقدار آن bar است. . برای آزمایش این، URL را به http://localhost:8080/examples/jsp/jsp2/el/implicit-objects.jsp?foo=zork تغییر دهید، Enter را فشار دهید، و خواهید دید تغییر منعکس شده در خروجی.

این مثال مقدمه ای بسیار ساده برای استفاده از تگ های JSP برای دسترسی به پارامترهای درخواست سمت سرور است. در این مورد، صفحه JSP از شی داخلی (ضمنی) به نام param برای دسترسی به پارامترهای درخواست برنامه وب استفاده می کند. شی param در دستور عبارت JSP موجود است که در فهرست ۱ مشاهده کردید. در آن مثال، از یک عبارت برای انجام مقداری ریاضی استفاده کردیم: ${۲ * ۲} که منجر به خروجی ۴ می شود. در این مورد، عبارت برای دسترسی به یک شی و یک فیلد در آن شی استفاده می شود: ${param.foo}. در مرحله بعد، به مثال Implicit Objects با دقت بیشتری نگاه خواهیم کرد.

JSP در یک برنامه وب

در صفحه اشیاء ضمنی، روی پیکان عقب و سپس پیوند منبع کلیک کنید. این شما را به کد JSP برای برنامه وب Implicit Objects هدایت می کند که در لیست ۲ نشان داده شده است.


<%@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"])}&nbsp;</td>
          </tr>
          <tr>
            <td>\${param["foo"]}</td>
            <td>${fn:escapeXml(param["foo"])}&nbsp;</td>
          </tr>
          <tr>
            <td>\${header["host"]}</td>
            <td>${fn:escapeXml(header["host"])}&nbsp;</td>
          </tr>
          <tr>
            <td>\${header["accept"]}</td>
            <td>${fn:escapeXml(header["accept"])}&nbsp;</td>
          </tr>
          <tr>
            <td>\${header["user-agent"]}</td>
            <td>${fn:escapeXml(header["user-agent"])}&nbsp;</td>
          </tr>
        </table>
      </code>
    </blockquote>
  </body>
</html>

توابع JSP

اگر با HTML آشنا هستید، کد موجود در فهرست ۲ باید کاملاً قابل درک باشد. شما عناصر مورد انتظار

HTML را دارید، به دنبال آن دستور عبارت ${ } JSP که در فهرست ۱ معرفی شده است. اما به مقدار توجه کنید param.foo:


<td>${fn:escapeXml(param["foo"])}&nbsp;</td>

در اینجا، fn:escapeXML() یک تابع JSP است.

یک عملکرد JSP بخش‌هایی از قابلیت‌های قابل استفاده مجدد را در بر می‌گیرد. در این مورد، عملکرد فرار از XML است. JSP توابع مختلفی را ارائه می دهد و همچنین می توانید خودتان توابع ایجاد کنید. برای استفاده از یک تابع، کتابخانه آن را به صفحه JSP خود وارد می‌کنید، سپس تابع را فراخوانی می‌کنید.

در فهرست ۲، تابع escapeXML را با خط زیر وارد می کنیم:


<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>

نحو بسیار واضح است: توابع مورد نیاز را وارد می کند و به آنها پیشوندی اختصاص می دهد (در این مورد “fn“) که می تواند در تمام عبارات زیر استفاده شود.

کتابخانه برچسب استاندارد جاکارتا (JSTL)

خط وارد کردن در فهرست ۲، taglib را فرا می‌خواند که مخفف کتابخانه برچسب است. در این مورد، ما کتابخانه برچسب استاندارد جاکارتا (JSTL) را وارد کرده‌ایم. کتابخانه های برچسب، بیت های قابل استفاده مجدد را برای JSP تعریف می کنند. JSTL کتابخانه برچسب استاندارد است که شامل مجموعه‌ای از برچسب‌ها است که با هر سرولت و اجرای JSP از جمله Tomcat ارسال می‌شود.

کتابخانه “functions” تنها یکی از برچسب های موجود در JSTL است. برچسب رایج دیگر کتابخانه هسته است که با فراخوانی:

وارد می‌کنید


<%@ taglib uri = "http://java.sun.com/jsp/jstl/core" prefix = "c" %>

مثل "fn"، نام "c" معمولی است. آن را در اکثر صفحات JSP خواهید دید.

ایمن سازی صفحات JSP با JSTL

تگ مثال زیر از کتابخانه هسته JSTL است:


<c:out value = "${'<div>'}"/>