CodeGym /جاوا بلاگ /Random-UR /servlets اور JSPs کا استعمال کرتے ہوئے ایک سادہ ویب ایپلی...
John Squirrels
سطح
San Francisco

servlets اور JSPs کا استعمال کرتے ہوئے ایک سادہ ویب ایپلیکیشن بنانا (حصہ 1)

گروپ میں شائع ہوا۔
مضمون کو سمجھنے کے لیے علم کی ضرورت ہے: آپ نے پہلے ہی کم و بیش جاوا کور کا پتہ لگا لیا ہے اور JavaEE ٹیکنالوجیز اور ویب پروگرامنگ کو دیکھنا چاہیں گے ۔ آپ کے لیے یہ سب سے زیادہ معنی خیز ہوگا کہ آپ فی الحال Java Collection quest کا مطالعہ کر رہے ہوں ، جو مضمون کے قریب کے موضوعات سے متعلق ہے۔
servlets اور JSPs کا استعمال کرتے ہوئے ایک سادہ ویب ایپلیکیشن بنانا (حصہ 1) - 1
یہ مواد میرے مضمون کا منطقی تسلسل ہے IntelliJ Idea Enterprise میں آسان ترین ویب پروجیکٹ بنانا ۔ اس آرٹیکل میں، میں نے دکھایا کہ ورکنگ ویب پروجیکٹ ٹیمپلیٹ کیسے بنایا جائے۔ اس بار میں آپ کو دکھاؤں گا کہ Java Servlet API اور JavaServer Pages API کا استعمال کرتے ہوئے ایک سادہ لیکن مکمل طور پر پرکشش ویب ایپلیکیشن کیسے بنائی جائے ۔ ہماری درخواست کا ہوم پیج دو لنکس کے ساتھ ہوگا:
  • صارفین کو شامل کرنے کے لیے ایک صفحہ کا لنک؛
  • صارفین کی فہرست کا ایک لنک۔
پہلے کی طرح، میں استعمال کروں گا IntelliJ Idea Enterprise Edition ، Apache Maven (ہم صرف کچھ انحصار جوڑیں گے)، اور Apache Tomcat ۔ آخر میں، ہم W3.CSS فریم ورک کا استعمال کرتے ہوئے اپنی ایپلیکیشن کو "خوبصورت" بنائیں گے۔ ہم فرض کریں گے کہ آپ کے پاس پہلے سے ہی ایک خالی پروجیکٹ ہے جسے ہم اب شامل کریں گے۔ اگر نہیں، تو پہلے مضمون کو دیکھیں اور ایک بنائیں۔ اس میں صرف چند منٹ لگیں گے :)

ہماری مستقبل کی درخواست کے ڈھانچے کے بارے میں تھوڑا سا

ہمارا ہوم پیج (/) ہیڈر اور دو لنکس/بٹن کے ساتھ ایک انتہائی عام جامد HTML صفحہ ہو گا :
  • ایک نیا صارف شامل کریں (نیویگیٹ کریں / شامل کریں
  • صارفین کی فہرست دیکھیں (/ فہرست پر جائیں )۔
Tomcat ان پتوں کی درخواستیں پکڑے گا اور انہیں ان دو سرولیٹس میں سے ایک پر بھیجے گا جو ہم بنانے جا رہے ہیں (ہم web.xml میں میپنگ کی وضاحت کریں گے )۔ سرولیٹس پھر درخواستوں پر کارروائی کریں گے، ڈیٹا تیار کریں گے (یا ڈیٹا کو محفوظ کریں گے، اگر ہم کسی صارف کو شامل کر رہے ہیں)، اور مناسب JSP فائلوں کو کنٹرول منتقل کریں گے ، جو پھر نتیجہ کو "رینڈر" کرے گی۔ ہم ڈیٹا کو ایک سادہ وینیلا لسٹ (فہرست) میں محفوظ کریں گے۔

ایک مستحکم ہوم پیج بنائیں

اگر آپ index.jsp اپنے ویب فولڈر میں ہیں تو اسے حذف کر دیں۔ اس کے بجائے، اس فولڈر میں index.html نامی ایک سادہ HTML فائل بنائیں :
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>My super project!</title>
</head>
<body>
    <!-- header -->
    <div>
        <h1>Super app!<//h1>
    </div>

    <div>       <!-- content -->
        <div>    <!-- button holder -->
            <button onclick="location.href='/list'">List users<//button>
            <button onclick="location.href='/add'">Add user<//button>
        </div>
    </div>
</body>
</html>
یہاں کچھ بھی پیچیدہ نہیں ہے۔ ٹائٹل ٹیگ میں ، ہم اپنے صفحہ کے عنوان کی نشاندہی کرتے ہیں۔ صفحہ کے جسم میں، ہمارے پاس دو اہم تقسیم ہیں: ہیڈر اور مواد ۔ مواد کی تقسیم میں ہمارے بٹنوں کے لیے ایک ہولڈر شامل ہے۔ اور وہاں ہمارے پاس دو بٹن ہیں جو آپ کو ایک کلک کے ساتھ متعلقہ ایڈریس پر لے جاتے ہیں۔ آپ پروجیکٹ چلا سکتے ہیں اور دیکھ سکتے ہیں کہ یہ اب کیسا لگتا ہے۔ اگر آپ بٹنوں پر کلک کرتے ہیں، تو آپ کو 404-غلطی والے صفحات ملتے ہیں ، کیونکہ ہمارے متعلقہ صفحات ابھی تک موجود نہیں ہیں۔ لیکن ہم بتا سکتے ہیں کہ بٹن کام کرتے ہیں۔ نوٹ کریں کہ یہ سب سے زیادہ آفاقی طریقہ نہیں ہے: اگر براؤزر میں جاوا اسکرپٹ کو آف کر دیا جائے تو یہ بٹن کام نہیں کریں گے۔ لیکن ہم فرض کریں گے کہ کوئی بھی جاوا اسکرپٹ کو غیر فعال نہیں کرتا ہے۔ :) ظاہر ہے، آپ سادہ لنکس کے ذریعے حاصل کر سکتے ہیں، لیکن میں بٹن کو ترجیح دیتا ہوں۔ آپ یہ کر سکتے ہیں جیسا کہ آپ چاہیں. اور اس حقیقت کے بارے میں فکر نہ کریں کہ میری مثالوں میں بہت سارے divs ہوں گے ۔ ہم انہیں بعد میں سٹائل سے بھریں گے، اور ہر چیز زیادہ خوبصورت نظر آئے گی۔ :)

نتیجہ رینڈر کرنے کے لیے JSP فائلیں بنائیں

اسی ویب ڈائرکٹری میں، ایک فولڈر بنائیں جہاں ہم اپنی JSP فائلیں شامل کریں گے ۔ میں نے اسے ' نظریات ' کہا، لیکن ایک بار پھر آپ اصلاح کر سکتے ہیں۔ اس فولڈر میں، ہم دو JSP فائلیں بنائیں گے:
  • add.jsp - صارفین کو شامل کرنے کے لیے ایک صفحہ؛
  • list.jsp - صارفین کی فہرست ظاہر کرنے کے لیے صفحہ۔
ان کو مناسب صفحہ ہیڈر تفویض کریں۔ " نیا صارف شامل کریں " اور " صارف کی فہرست " جیسا کچھ، اور ہم اسے اسی طرح چھوڑ دیں گے۔

دو سرولیٹ بنائیں

سرولیٹ ان درخواستوں کو وصول کریں گے اور ان پر کارروائی کریں گے جو ٹومکیٹ انہیں بھیجتی ہیں۔ src/main/java فولڈر میں ، ایپ پیکج بنائیں ، جہاں ہم اپنا سورس کوڈ ڈالیں گے۔ دوسرے پیکج بھی وہاں جائیں گے۔ لہذا، ان پیکجوں کو ایک دوسرے کے اندر بننے سے روکنے کے لیے، ہم ایپ پیکیج میں کچھ کلاس بنائیں گے (ہم اسے بعد میں حذف کر دیں گے)۔ اب ایپ پیکج میں تین مختلف پیکجز بنائیں :
  • entities — ہمارے ادارے (وہ کلاس جو صارف کی اشیاء کو بیان کرتی ہے) یہاں جائیں؛
  • ماڈل - یہ وہ جگہ ہے جہاں ہمارا ماڈل جاتا ہے (ہم اس کے بارے میں تھوڑی دیر بعد بات کریں گے)؛
  • servlets - اور یہ وہ جگہ ہے جہاں ہمارے servlets جاتے ہیں۔
ایک بار جب آپ یہ کر لیتے ہیں، تو آپ سکون سے اس کلاس کو ایپ پیکیج سے حذف کر سکتے ہیں (اگر آپ نے اسے بنایا ہے، یقیناً)۔ servlets پیکیج میں ، دو کلاسز بنائیں:
  • AddServlet - کو بھیجی گئی درخواستوں پر عمل کرتا ہے
  • ListServlet - / فہرست کو بھیجی گئی درخواستوں پر کارروائی کرتا ہے ۔

Maven میں انحصار کو مربوط کرنا

Tomcat 9 .* Servlet 4.0 اور JavaServer Pages 2.3 کے لیے وضاحتیں نافذ کرتا ہے ۔ ٹامکیٹ 9 کے سرکاری دستاویزات کے پہلے پیراگراف کی دوسری سطر میں یہی کہا گیا ہے ۔ اس کا مطلب ہے کہ اگر آپ، میری طرح، Tomcat کا یہ ورژن استعمال کرتے ہیں ، تو آپ جو کوڈ لکھیں گے اور چلائیں گے وہ ان ورژنز کو استعمال کرے گا۔ لیکن ہم اپنے پروجیکٹ میں یہ تصریحات رکھنا چاہیں گے، تاکہ ہمارا کوڈ، جو ان کا استعمال کرتا ہے، کم از کم کامیابی سے مرتب ہو۔ اور ایسا کرنے کے لیے، ہمیں انہیں اپنے پروجیکٹ میں لوڈ کرنے کی ضرورت ہے۔ یہ وہ جگہ ہے جہاں ماون بچاؤ کے لئے آتا ہے۔

عام اصول یہ ہے: اگر آپ کو Maven کا استعمال کرتے ہوئے اپنے پروجیکٹ سے کچھ جوڑنے کی ضرورت ہے:

  • Maven سے مخزن کی ویب سائٹ پر جائیں؛
  • مطلوبہ لائبریری کا مطلوبہ ورژن تلاش کریں۔
  • انحصار کوڈ حاصل کریں جسے آپ کے pom.xml میں پیسٹ کرنے کی ضرورت ہے۔
  • پیسٹ :)
چلو شروع کریں. سب سے پہلے، POM فائل تیار کریں ۔ کہیں /version اندراج کے بعد، لیکن اس سے پہلے /project ، درج ذیل داخل کریں:
<dependencies>

</dependencies>
ہم یہ اس بات کی نشاندہی کرنے کے لیے کرتے ہیں کہ ہم ان ٹیگز کے اندر مطلوبہ انحصار کی فہرست بنائیں گے۔ اب mvnrepository.com پر جائیں ۔ سب سے اوپر ایک سرچ فیلڈ ہے۔ شروع کرنے کے لیے، ' servlet ' تلاش کریں ۔ پہلا نتیجہ، جسے سات ہزار سے زیادہ مرتبہ استعمال کیا جا چکا ہے، ہمارے مطابق ہے۔ یاد رکھیں، ہمیں ورژن 4.0 ( Tomcat 9 کے لیے ) کی ضرورت ہے۔ دوسرے ورژن پرانے نفاذ کے لیے موزوں ہو سکتے ہیں۔ یہ کافی حالیہ ورژن ہے، اس لیے اتنے زیادہ استعمال نہیں ہیں۔ لیکن ہمیں اس کی ضرورت ہے۔ ایک صفحہ کھلتا ہے جہاں آپ مختلف قسم کے پیکیج مینیجرز کے لیے اس انحصار کا کوڈ حاصل کر سکتے ہیں، یا آپ اسے آسانی سے ڈاؤن لوڈ کر سکتے ہیں۔ لیکن چونکہ ہم اسے Maven کا استعمال کرتے ہوئے جوڑنا چاہتے ہیں، اس لیے ہم Maven ٹیب پر موجود کوڈ کو منتخب کریں گے۔ ہم اپنی POM فائل کے انحصار والے حصے میں کاپی اور پیسٹ کرتے ہیں۔ اگر آپ کو اطلاع ملتی ہے کہ کیا آپ IDEA کے نیچے دائیں کونے میں خودکار درآمد کو فعال کرنا چاہتے ہیں تو آگے بڑھیں اور اس سے اتفاق کریں۔ اگر آپ نے غلطی سے انکار کر دیا تو، " سیٹنگز " پر جائیں اور خودکار درآمد کو دستی طور پر آن کریں: سیٹنگز (Ctrl + Alt + S) -> Build, Execution, Deployment -> Maven -> Importing ۔ یہ آپ کو اس پروجیکٹ کے لیے POM فائل اور IDEA کنفیگریشن فائلوں کو مطابقت پذیر رکھنے دے گا۔ اسی اصول پر عمل کرتے ہوئے، ہم JavaServer Pages 2.3 ("JSP" کی تلاش) کو تلاش اور مربوط کریں گے۔ اور چونکہ ہم پہلے ہی Maven شروع کر چکے ہیں، آئیے صرف یہ بتاتے ہیں کہ ہماری سورس فائلیں جاوا 8 نحو کی پیروی کرتی ہیں، اور ہمیں اس ورژن کے لیے انہیں بائیک کوڈ میں مرتب کرنے کی ضرورت ہے۔ ان تمام مراحل کے بعد، ہمارا pom.xml کچھ اس طرح نظر آئے گا:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>cc.codegym.info.fatfaggy</groupId>
    <artifactId>my-super-project</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <maven.compile.source>1.8</maven.compile.source>
        <maven.compile.target>1.8</maven.compile.target>
    </properties>

    <dependencies>
        <!-- Servlet API 4.0 for tomcat 9 -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>4.0.0</version>
            <scope>provided</scope>
        </dependency>

        <!-- JavaServer Pages API 2.3 for tomcat 9 -->
        <dependency>
            <groupId>javax.servlet.jsp</groupId>
            <artifactId>javax.servlet.jsp-api</artifactId>
            <version>2.3.1</version>
            <scope>provided</scope>
        </dependency>
    </dependencies>

</project>

ہمارے سرولیٹس کو اصلی سرولیٹس بنائیں

اس وقت، ہم نے جو سرولیٹس بنائے ہیں وہ دراصل عام کلاسز ہیں۔ ان میں کوئی فعالیت نہیں ہے۔ لیکن اب ہم نے Servlet API کو اپنے پروجیکٹ سے جوڑ دیا ہے، اور اس کے مطابق ہم اس کی کلاسز استعمال کر سکتے ہیں۔ اپنے سرولیٹس کو "حقیقی" بنانے کے لیے ہمیں بس انہیں HttpServlet کلاس کا وارث بنانا ہے۔

نقشہ سازی یا مارک اپ

اب یہ کسی طرح Tomcat کو بتانا اچھا ہو گا کہ / ایڈ ایڈریس کی درخواستوں پر ہمارے AddServlet کے ذریعہ کارروائی کی جاتی ہے ، اور / فہرست ایڈریس کی درخواستوں کو ListServlet کے ذریعہ ہینڈل کیا جاتا ہے ۔ اس عمل کو میپنگ (مارک اپ) کہا جاتا ہے۔ یہ اسی اصول کا استعمال کرتے ہوئے web.xml میں کیا جاتا ہے:
  • شروع کرنے کے لیے، سرولیٹ کی وضاحت کریں (کچھ نام فراہم کریں اور کلاس کا راستہ خود بتائیں)؛
  • پھر اس سرولیٹ کو ایک مخصوص ایڈریس سے منسلک کریں (سرولیٹ کا نام بتائیں، جو ہم نے ابھی دیا ہے، اور اس ایڈریس کی وضاحت کریں جس کی درخواستیں اس سرولیٹ پر بھیجی جائیں)۔
سرولیٹ کی وضاحت کریں:
<servlet>
    <servlet-name>add</servlet-name>
    <servlet-class>app.servlets.AddServlet</servlet-class>
</servlet>
اب اسے ایڈریس سے منسلک کریں:
<servlet-mapping>
    <servlet-name>add</servlet-name>
    <url-pattern>/add</url-pattern>
</servlet-mapping>
جیسا کہ آپ دیکھ سکتے ہیں، servlet-name دونوں صورتوں میں ایک جیسا ہے۔ نتیجے کے طور پر، Tomcat جانتا ہے کہ اگر /add کی درخواست موصول ہوتی ہے، تو اسے app.servlets.AddServlet پر بھیجا جانا چاہیے۔ ہم دوسرے سرولیٹ کے ساتھ بھی ایسا ہی کرتے ہیں۔ آخر میں، ہمارے web.xml میں تقریباً درج ذیل مواد ہے:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1">

    <!-- add servlet -->
    <servlet>
        <servlet-name>add</servlet-name>
        <servlet-class>app.servlets.AddServlet</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>add</servlet-name>
        <url-pattern>/add</url-pattern>
    </servlet-mapping>

    <!-- list servlet -->
    <servlet>
        <servlet-name>list</servlet-name>
        <servlet-class>app.servlets.ListServlet</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>list</servlet-name>
        <url-pattern>/list</url-pattern>
    </servlet-mapping>
</web-app>
ویسے، ہم نے ہوم پیج (/) کے لیے مارک اپ نہیں بنایا۔ حقیقت یہ ہے کہ ہمیں اس معاملے میں اس کی ضرورت نہیں ہے۔ ہمارا ہوم پیج ایک سادہ HTML فائل ہے جو صرف دو بٹن دکھاتی ہے۔ اس میں کوئی متحرک مواد نہیں ہے، لہذا ہمیں / سے درخواستوں کے لیے علیحدہ سرولیٹ بنانے کی ضرورت نہیں ہے جو ہمارے لیے دو بٹن کھینچنے کے لیے کچھ JSP (جسے بنانا بھی پڑے گا) کو آگے بھیجنے کے سوا کچھ نہیں کرے گا۔ ہمیں اس کی ضرورت نہیں ہے۔ ایک جامد صفحہ ہمارے لیے موزوں ہے۔ جب Tomcat کو کوئی درخواست موصول ہوتی ہے، تو یہ چیک کرے گا کہ آیا کوئی ایک سرولیٹ ہے جو اس ایڈریس کی درخواست پر کارروائی کر سکتا ہے، اور پھر دیکھے گا کہ اس ایڈریس میں پہلے سے ہی تیار HTML فائل موجود ہے، جسے وہ پیش کرے گا۔ ہم اپنی ایپلیکیشن کو دوبارہ چلا سکتے ہیں (سرور کو دوبارہ شروع کریں یا اسے دوبارہ استعمال کریں — جو بھی آپ چاہیں) اور یقینی بنائیں کہ ہوم پیج رینڈر کیا گیا ہے، کچھ بھی نہیں ٹوٹا ہے، اور جب ہم بٹنوں پر کلک کرتے ہیں تو تبدیلیاں واقع ہوتی ہیں (حالانکہ ہمیں دوبارہ غلطی ہو جاتی ہے)۔ ویسے، جہاں پہلے ہمیں 404 ایرر ملتا تھا، اب ہمیں 405 ملتا ہے۔ اس کا مطلب ہے کہ میپنگ نے کام کیا اور سرولیٹس مل گئے، لیکن ان کے پاس درخواست کو ہینڈل کرنے کا کوئی مناسب طریقہ نہیں تھا۔

مختصر اختلاف: "ہڈ کے نیچے" کیا ہوتا ہے؟

آپ نے شاید پہلے ہی سوچا ہوگا کہ ٹامکیٹ میں ہماری ایپلی کیشن کیسے کام کرتی ہے۔ وہاں کیا ہوتا ہے؟ اور مین () طریقہ کہاں ہے؟ جیسے ہی آپ اپنے براؤزر میں localhost:8080 پر جاتے ہیں، براؤزر HTTP پروٹوکول کا استعمال کرتے ہوئے اس ایڈریس پر ایک درخواست بھیجتا ہے۔ مجھے امید ہے کہ آپ پہلے ہی سے واقف ہوں گے کہ درخواستوں کی بہت سی مختلف اقسام ہیں، اور سب سے زیادہ مقبول GET اور POST ہیں۔ ہر درخواست کا جواب دیا جانا چاہئے. ایک GET درخواست کو براؤزر پر واپس آنے والے استعمال کے لیے تیار HTML کوڈ کا جواب موصول ہونے کی توقع ہے۔ براؤزر پھر کوڈ کی جگہ لے لیتا ہے تمام خوبصورت حروف، بٹن اور فارم۔ POST کی درخواست تھوڑی زیادہ دلچسپ ہے، کیونکہ اس میں کچھ معلومات بھی ہوتی ہیں۔ مثال کے طور پر، فرض کریں کہ آپ کسی ویب سائٹ پر رجسٹریشن یا سائن ان فارم میں اسناد درج کرتے ہیں، اور "بھیجیں" پر کلک کریں۔ اس کی وجہ سے آپ کی ذاتی معلومات کے ساتھ ایک POST درخواست سرور کو بھیجی جاتی ہے۔ سرور یہ معلومات حاصل کرتا ہے، اس پر کارروائی کرتا ہے، اور کچھ جواب دیتا ہے (مثال کے طور پر، آپ کے پروفائل کے ساتھ ایک HTML صفحہ)۔ ان کے درمیان بنیادی فرق یہ ہے کہ GET درخواستیں صرف سرور سے ڈیٹا کی بازیافت کے لیے استعمال ہوتی ہیں، جبکہ POST درخواستوں میں کچھ معلومات ہوتی ہیں (اور سرور پر موجود ڈیٹا تبدیل ہو سکتا ہے)۔ مثال کے طور پر، جب آپ اپنی تصویر سرور پر اپ لوڈ کرتے ہیں، تو اسے POST کی درخواست میں وہاں لے جایا جاتا ہے اور سرور اسے ڈیٹا بیس میں شامل کرتا ہے، یعنی تبدیلی واقع ہوتی ہے۔ اب واپس Tomcat پر۔ جب اسے کسی کلائنٹ کی طرف سے کوئی درخواست موصول ہوتی ہے، تو وہ ایڈریس کو دیکھتا ہے۔ یہ چیک کرتا ہے کہ آیا اس ایڈریس کے لیے درخواستوں پر کارروائی کرنے کے لیے کوئی مناسب سرولیٹ موجود ہے (یا ایک دستیاب وسیلہ جسے فوری طور پر واپس کیا جا سکتا ہے)۔ اگر اسے واپس کرنے کے لیے کچھ نہیں ملتا ہے، تو یہ HTML صفحہ کے بجائے 404-غلطی کے ساتھ جواب دیتا ہے۔ لیکن اگر اسے اس ایڈریس پر ایک مناسب سرولیٹ "بیٹھا" ملتا ہے، تو وہ درخواست کی قسم (GET، POST، یا کچھ اور) کو دیکھتا ہے اور سرولیٹ سے پوچھتا ہے کہ کیا اس کے پاس کوئی طریقہ ہے جو اس قسم کے استفسار کو سنبھال سکتا ہے۔ اگر سرولیٹ کہتا ہے کہ یہ نہیں جانتا کہ اس قسم کو کیسے ہینڈل کرنا ہے، تو Tomcat ایک 405 کوڈ لوٹاتا ہے۔ اور ہمارے پروجیکٹ میں ایسا ہی ہوا۔ لیکن اگر کوئی مناسب سرولیٹ مل جاتا ہے، اور اس کا ایک مناسب طریقہ ہے، تو ٹامکیٹ ایک سرولیٹ آبجیکٹ بناتا ہے، اسے ایک نئے دھاگے پر شروع کرتا ہے۔(جو اسے خود چلنے دیتا ہے)، اور Tomcat اپنا کام جاری رکھتا ہے، درخواستیں قبول کرنا اور بھیجنا۔ مزید برآں، Tomcat دو اور اشیاء تخلیق کرتا ہے: ایک HttpServletRequest (جسے میں مختصر میں "درخواست" کہوں گا)، اور ایک HttpServletResponse (جسے میں "ردعمل" کہوں گا)۔ یہ کلائنٹ کی درخواست سے موصول ہونے والے تمام ڈیٹا کو پہلے آبجیکٹ میں رکھتا ہے، تاکہ وہ تمام ڈیٹا اس سے نکالا جا سکے۔ اور پھر اس سب کے بعد، یہ ان دونوں چیزوں کو سرولیٹ کے مناسب طریقہ پر منتقل کرتا ہے جو ایک الگ تھریڈ پر شروع کیا گیا تھا۔ جیسے ہی سرولیٹ اپنا کام ختم کرتا ہے اور کلائنٹ کو بھیجے جانے کے لیے ایک جواب تیار ہوتا ہے، اس نے ٹام کیٹ پر ایک جھنڈا لہراتے ہوئے کہا کہ "میرا کام ہو گیا ہے۔ سب کچھ تیار ہے"۔ ٹامکیٹ جواب وصول کرتا ہے اور اسے کلائنٹ کو بھیجتا ہے۔ یہ ٹومکیٹ کو درخواستیں وصول کرنے اور جوابات بھیجنے کی اجازت دیتا ہے، بغیر کسی مشغول ہوئے، اور تمام کام الگ الگ تھریڈز پر چلنے والے سرولیٹس کے ذریعے کیا جاتا ہے۔ اس کا مطلب ہے کہ جب ہم سرولیٹ کوڈ لکھتے ہیں تو ہم یہ طے کرتے ہیں کہ کون سا کام انجام دیا جائے گا۔ اور آپ main() طریقہ کے بارے میں سوچ سکتے ہیں کہ وہ خود Tomcat کے اندر واقع ہے (جی ہاں، یہ جاوا میں لکھا گیا ہے)، اور جب ہم Tomcat کو "لانچ" کرتے ہیں تو main() طریقہ شروع ہو جاتا ہے۔ servlets اور JSPs کا استعمال کرتے ہوئے ایک سادہ ویب ایپلیکیشن بنانا (حصہ 1) - 2

GET طریقوں کو پکڑنے اور انتہائی آسان جوابات بھیجنے کے لیے servlets کا استعمال کریں۔

اس وقت، ہمارے سرولیٹس کے پاس کوئی مناسب طریقہ نہیں ہے (GET)، اس لیے Tomcat 405 غلطی لوٹاتا ہے۔ آئیے انہیں بنائیں! HttpServlet کلاس، ہم اپنے سرورلیٹس کو وراثت میں حاصل کرتے ہیں، مختلف طریقوں کا اعلان کرتے ہیں۔ طریقوں کو مخصوص کوڈ تفویض کرنے کے لیے، ہم انہیں صرف اوور رائڈ کرتے ہیں۔ اس صورت میں، ہمیں doGet()دونوں سرولیٹس میں طریقہ کو اوور رائڈ کرنے کی ضرورت ہے۔
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

}
جیسا کہ آپ دیکھ سکتے ہیں، یہ طریقہ دو دلائل لیتا ہے: درخواست (درخواست) اور جواب (جواب)۔ یہ وہی چیزیں ہیں جو ٹامکیٹ ہمارے لیے تخلیق اور آباد کرتی ہیں جب یہ سرولیٹ میں مناسب طریقہ کو کال کرتی ہے۔ شروع کرنے کے لیے، ہم آسان ترین جوابات بنائیں گے۔ ایسا کرنے کے لیے، ہم resp آبجیکٹ لیں گے اور اس سے ایک PrintWriter آبجیکٹ حاصل کریں گے۔ اس قسم کی آبجیکٹ کو جواب تحریر کرنے کے لیے استعمال کیا جاتا ہے۔ ہم اسے ایک سادہ سٹرنگ آؤٹ پٹ کرنے کے لیے استعمال کریں گے۔
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    PrintWriter writer = resp.getWriter();
    writer.println("GET method from AddServlet");
}
ہم ListServlet میں کچھ ایسا ہی کریں گے، اور پھر ہم اپنے سرور کو دوبارہ شروع کریں گے۔ جیسا کہ آپ دیکھ سکتے ہیں، سب کچھ کام کرتا ہے! جب آپ بٹنوں پر کلک کرتے ہیں، تو آپ کو متن کے ساتھ صفحات ملتے ہیں جو ہم نے پرنٹ رائٹر کے ساتھ "لکھے" ہیں۔ لیکن JSP فائلیں جو ہم نے جوابات کے ساتھ صفحات بنانے کے لیے تیار کی ہیں استعمال نہیں ہو رہی ہیں۔ یہ صرف اس وجہ سے ہے کہ انہیں کبھی بھی سزا نہیں دی جاتی ہے۔ ہمارا سرولیٹ جواب خود بناتا ہے اور چلنا ختم کرتا ہے، Tomcat کو اشارہ کرتا ہے کہ وہ کلائنٹ کو جواب دینے کے لیے تیار ہے۔ ٹامکیٹ صرف جواب لیتا ہے اور اسے کلائنٹ کو واپس بھیج دیتا ہے۔ آئیے servlets سے JSP فائلوں کو کنٹرول منتقل کرتے ہیں۔ ہم اپنے طریقوں کا کوڈ اس طرح تبدیل کریں گے:
  • ہم درخواست آبجیکٹ سے درخواست بھیجنے والا آبجیکٹ حاصل کرتے ہیں، اور اسے JSP صفحہ کا پتہ دیتے ہیں جس پر ہم کنٹرول منتقل کرنا چاہتے ہیں۔
  • ہم اس آبجیکٹ کو مخصوص JSP صفحہ پر کنٹرول منتقل کرنے کے لیے استعمال کرتے ہیں، Tomcat سے موصول ہونے والی درخواست اور جوابی اشیاء کو پاس کرنا نہیں بھولتے۔
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    RequestDispatcher requestDispatcher = req.getRequestDispatcher("views/add.jsp");
    requestDispatcher.forward(req, resp);
}
JSP صفحات کے باڈی ٹیگ میں، آپ کچھ شامل کر سکتے ہیں تاکہ ہم واضح طور پر دیکھ سکیں کہ کون سا صفحہ ڈسپلے ہو رہا ہے۔ ایک بار جب آپ یہ کر لیں، سرور کو دوبارہ شروع کریں اور چیک کریں۔ ہم مرکزی صفحہ پر بٹنوں پر کلک کرتے ہیں اور صفحات کھل جاتے ہیں، جس کا مطلب ہے کہ درخواستیں سرولیٹس کو بھیجی جا رہی ہیں۔ پھر کنٹرول جے ایس پی کے صفحات کو منتقل کیا جاتا ہے، جو اب پیش کیے جا رہے ہیں۔ ابھی کے لیے اتنا ہی ہے۔ اس مضمون کے اگلے حصے میں ، ہم اپنی درخواست کی فعالیت پر کام کریں گے۔
تبصرے
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION