CodeGym /جاوا بلاگ /Random-UR /حصہ 5۔ سرولیٹس اور جاوا سرولیٹ API۔ ایک سادہ ویب ایپلیکیش...
John Squirrels
سطح
San Francisco

حصہ 5۔ سرولیٹس اور جاوا سرولیٹ API۔ ایک سادہ ویب ایپلیکیشن لکھنا

گروپ میں شائع ہوا۔
یہ مواد "انٹروڈکشن ٹو انٹرپرائز ڈویلپمنٹ" سیریز کا حصہ ہے۔ پچھلے مضامین: حصہ 5۔ سرولیٹس اور جاوا سرولیٹ API۔  ایک سادہ ویب ایپلیکیشن لکھنا - 1کیا آپ پہلے ہی جانتے ہیں کہ جاوا ایپلی کیشنز کو کس طرح لکھنا ہے جو کنسول پر ٹیکسٹ ڈسپلے کرتی ہے، لیکن آپ اب بھی واقعی یہ نہیں جانتے کہ اپنی پہلی ویب ایپلیکیشن کیسے بنائی جائے؟ بہت اچھا، اپنے آپ کو آرام دہ بنائیں۔ اس آرٹیکل میں، ہم servlets سے واقف ہوں گے اور ایک ایسی ایپلی کیشن لکھیں گے جس کے بارے میں آپ اپنے دوستوں کو JAR فائل بھیجے بغیر اور انہیں جاوا ڈاؤن لوڈ کرنے پر مجبور کیے بغیر شیخی بگھار سکتے ہیں۔ آئیے ایک سادہ ویب ایپلیکیشن لکھتے ہیں ۔ اگر آپ ویب ڈویلپمنٹ میں استعمال ہونے والے طریقوں سے پہلے سے واقف نہیں ہیں، تو میں تجویز کرتا ہوں کہ آپ " انٹرپرائز ڈویلپمنٹ کا تعارف " سیریز کا پہلا مضمون پڑھ کر شروع کریں۔

سرولیٹ کیا ہے؟

پہلے، آئیے یہ معلوم کریں کہ سرولیٹس کیا ہیں اور آپ ان کے بارے میں اتنی کثرت سے کیوں سنتے ہیں۔ Java Servlet API ایک معیاری API ہے جس کا مقصد سرور پر لاگو کیا جانا ہے۔ یہ کلائنٹس کے ساتھ درخواست کے جواب کی اسکیم کے مطابق تعامل کرتا ہے۔ سرولیٹ ایک کلاس ہے جو کلائنٹ سے درخواستیں وصول کرسکتی ہے اور کلائنٹ کو جوابات واپس کرسکتی ہے ۔ درحقیقت، servlets بالکل وہی بلڈنگ بلاکس ہیں جو ہم جاوا میں کلائنٹ-سرور آرکیٹیکچر بنانے کے لیے استعمال کرتے ہیں۔ آپ کو یاد ہوگا کہ ہم پہلے ہی اس فن تعمیر کے بارے میں سیریز کے ایک اور مضمون میں بات کر چکے ہیں۔ ہم جھاڑی کے ارد گرد ہرا نہیں جا رہے ہیں: آئیے ابھی کچھ کوڈ لکھیں۔

ویب ایپلیکیشن بنانے کے لیے آپ کو کیا ضرورت ہے۔

جاوا سرولیٹس کے ساتھ کام کرتے وقت سب سے زیادہ سہولت کے لیے، آپ کو IntelliJ IDEA الٹیمیٹ ایڈیشن کی ضرورت ہے۔ یہ ایک بامعاوضہ پروڈکٹ ہے، لیکن آپ 30 دن کی آزمائش کو چالو کر سکتے ہیں یا ابتدائی رسائی والا ورژن استعمال کر سکتے ہیں، جو ہمیشہ مفت ہوتا ہے۔ نیز، اپاچی ٹامکیٹ انسٹال کریں — ہماری ایپلیکیشن کا سرور۔ Tomcat ایک سرولیٹ کنٹینر ہے: یہ آنے والی درخواستوں پر کارروائی کرتا ہے اور انہیں ہماری درخواست تک پہنچاتا ہے۔ Tomcat یہاں سے ڈاؤن لوڈ کریں ۔

آئیے اپنی پہلی ویب ایپلیکیشن بنائیں

اگر سب کچھ تیار ہے تو، Maven پروجیکٹ بنائیں۔ اگر آپ Maven سے واقف نہیں ہیں تو پچھلے مضمون پر ایک نظر ڈالیں ۔ چلو شروع کریں!
  1. pom.xml میں، javax.servlet-api انحصار شامل کریں اور WAR پیکیجنگ کی وضاحت کریں:

    <?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>org.example</groupId>
       <artifactId>servlets</artifactId>
       <version>1.0-SNAPSHOT</version>
       <packaging>war</packaging>
    
       <dependencies>
           <dependency>
               <groupId>javax.servlet</groupId>
               <artifactId>javax.servlet-api</artifactId>
               <version>4.0.1</version>
           </dependency>
       </dependencies>
    </project>

    سادہ سرولیٹ کلاس:

    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    import java.io.PrintWriter;
    
    @WebServlet("/hello")
    public class MainServlet extends HttpServlet {
    
       @Override
       protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
           resp.setContentType("text/html");
           PrintWriter printWriter = resp.getWriter();
           printWriter.write("Hello!");
           printWriter.close();
       }
    }
  2. ایپلیکیشن چلانے کے لیے، آپ کو ٹامکیٹ کنفیگریشن بنانے کی ضرورت ہے:

    حصہ 5۔ سرولیٹس اور جاوا سرولیٹ API۔  ایک سادہ ویب ایپلیکیشن لکھنا - 2حصہ 5۔ سرولیٹس اور جاوا سرولیٹ API۔  ایک سادہ ویب ایپلیکیشن لکھنا - 3

  3. اگلا، ہم اشارہ کرتے ہیں کہ ہم Tomcat کا کون سا ورژن استعمال کریں گے، اور سرور کے ساتھ بات چیت کے لیے URL اور پورٹ۔ آپ کے پاس کچھ اس طرح ہونا چاہئے:

    حصہ 5۔ سرولیٹس اور جاوا سرولیٹ API۔  ایک سادہ ویب ایپلیکیشن لکھنا - 4
  4. اب ہمیں صرف نمونے کی وضاحت کرنے کی ضرورت ہے (ایک JAR آرکائیو میں جمع شدہ پروجیکٹ) جو کنٹینر میں تعینات کیا جائے گا۔ آپ فکس بٹن پر کلک کر سکتے ہیں اور وار ایکسپوڈڈ کو منتخب کر سکتے ہیں: اس کا مطلب یہ ہے کہ پروجیکٹ کو دوبارہ بنانے کے بعد، آرٹفیکٹ خود بخود سرولیٹ کنٹینر میں رکھ دیا جائے گا۔ حصہ 5۔ سرولیٹس اور جاوا سرولیٹ API۔  ایک سادہ ویب ایپلیکیشن لکھنا - 5

  5. ایپلیکیشن سیاق و سباق کے لیے ڈیفالٹ ویلیو ہے servlets_war_exploded ۔ اس کا مطلب یہ ہے کہ ہم اس ایپلی کیشن تک رسائی حاصل کرتے ہیں: http://localhost:8080/servlets_war_exploded ۔

    ہم کوئی اضافی متن کیوں چاہیں گے؟ جو غیر ضروری ہے اسے ڈیلیٹ کر دیں۔ اب ہماری ویب ایپلیکیشن کا پتہ ہے: http://localhost:8080 ۔

    حصہ 5۔ سرولیٹس اور جاوا سرولیٹ API۔  ایک سادہ ویب ایپلیکیشن لکھنا - 6
  6. ٹھیک ہے پر کلک کریں۔ ہم دیکھتے ہیں کہ اب ہم ایپلیکیشن لانچ کر سکتے ہیں:

    حصہ 5۔ سرولیٹس اور جاوا سرولیٹ API۔  ایک سادہ ویب ایپلیکیشن لکھنا - 7

    اب جب آپ اپنے براؤزر میں ایپلیکیشن کھولتے ہیں تو آپ کو 404 ایرر ملنا چاہیے۔ یہ سمجھ میں آتا ہے، کیونکہ ایڈریس http://localhost:8080/ کو ایک سرولیٹ کی ضرورت ہوتی ہے جو "/" پر نقشہ بناتا ہے، لیکن ہمارا واحد سرولیٹ نقشہ "/hello" پر ہوتا ہے ۔

  7. ہم اسے http://localhost:8080/hello پر حاصل کر سکتے ہیں ۔ ایک بار جب ہم ایسا کر لیتے ہیں، تو ہمیں متوقع جواب ملتا ہے — تار "ہیلو"!

اگر سب کچھ کام کر رہا ہے تو آئیے کوڈ کا تجزیہ کریں۔ ایک عام کلاس سے HTTP-servlet بنانے کے لیے ، اسے HttpServlet کلاس کا وارث ہونا چاہیے۔ کلاس ڈیکلریشن کے اوپر، ہم @WebServlet()تشریح کی نشاندہی کرتے ہیں۔ یہ وہ جگہ ہے جہاں ہم سرولیٹ کو ایک مخصوص راستے ("/ہیلو") سے باندھتے ہیں (یا نقشہ)۔ یہ تشریح صرف Java Servlet API 3.0 میں ظاہر ہوئی، لہذا انٹرنیٹ میں بہت ساری مثالیں ہیں جہاں ایک XML فائل کے ذریعے سرولیٹ میپنگ ہوتی ہے۔ اب یہ ضروری نہیں رہا۔ GET درخواستوں کو ہینڈل کرنے کے لیے ، ہم doGet()طریقہ کو اوور رائیڈ کر دیتے ہیں۔ طریقہ کار کے پیرامیٹرز پر توجہ دیں: HttpServletRequestاور HttpServletResponse. اعتراض HttpServletRequestہمیں درخواست کے بارے میں تمام ضروری معلومات فراہم کرتا ہے۔ میں HttpServletResponse، ہم اپنا جواب لکھتے ہیں اور ضروری ہیڈر سیٹ کرتے ہیں۔

پیرامیٹرز اور سیشن کے ساتھ کام کرنا

آئیے اپنے سرولیٹ کو بہتر بنائیں تاکہ یہ درخواست کے پیرامیٹرز پر کارروائی کر سکے اور سیشن کے ساتھ کام کر سکے۔
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.io.PrintWriter;

@WebServlet("/hello")
public class MainServlet extends HttpServlet {

   @Override
   protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
       HttpSession session = req.getSession();
       Integer visitCounter = (Integer) session.getAttribute("visitCounter");
       if (visitCounter == null) {
           visitCounter = 1;
       } else {
           visitCounter++;
       }
       session.setAttribute("visitCounter", visitCounter);
       String username = req.getParameter("username");
       resp.setContentType("text/html");
       PrintWriter printWriter = resp.getWriter();
       if (username == null) {
           printWriter.write("Hello, Anonymous" + "<br>");
       } else {
           printWriter.write("Hello, " + username + "<br>");
       }
       printWriter.write("Page was visited " + visitCounter + " times.");
       printWriter.close();
   }
}
اب servlet ایک سیشن کے ساتھ کام کرتا ہے، visitCounterہر بار صفحہ وزٹ کرنے کی قدر میں اضافہ کرتا ہے۔ اگر visitCounterانتساب ابھی تک نہیں بنایا گیا ہے (صفحہ کے پہلے وزٹ پر)، طریقہ getAttribute()null لوٹاتا ہے، لہذا ہمیں null کی جانچ کرنی ہوگی۔ درخواست کے پیرامیٹرز کے لئے بھی یہی ہے۔ اگر صارف صارف نام کے پیرامیٹر کو پاس نہیں کرتا ہے، تو اس کی قیمت کالعدم ہو جائے گی۔ اس صورت میں، ہم صارف کو ایک گمنام وزیٹر کے طور پر خوش آمدید کہتے ہیں۔ جی ای ٹی درخواست میں پیرامیٹر کو پاس کرنے کے لیے، استفسار کی تار استعمال کی جاتی ہے، مثال کے طور پر، ہم درج ذیل یو آر ایل استعمال کر سکتے ہیں: http:// localhost:8080/hello؟ صارف نام = پال۔ آپ سیریز کے پچھلے مضمون میں HTTP درخواستوں کے بارے میں مزید پڑھ سکتے ہیں۔ ہماری ایپلی کیشن میں فی الحال زیادہ منطق نہیں ہے، لیکن یہ قدرے پریشان کن ہے کہ ہمیں روٹ پاتھ میں 404 کی خرابی ملتی ہے۔ اس کو ٹھیک کرنے کے لیے، ہم ایک اور سرولیٹ بنائیں گے اور اسے ابتدائی صفحہ پر نقشہ بنائیں گے: @WebServlet("/")۔ اس سرولیٹ کا مقصد درخواستوں کو "/ہیلو" راستے پر بھیجنا ہے۔ ایسا کرنے کے دو طریقے ہیں: "فارورڈ" یا "ری ڈائریکٹ" کا استعمال۔ شاید ان کے درمیان فرق کو سمجھنا فائدہ مند ہے۔ ایک فارورڈ ڈیلیگیٹس درخواست کی پروسیسنگ سرور پر موجود دوسرے سرولیٹ کو کرتا ہے۔ کلائنٹ ملوث نہیں ہے. ایسا کرنے کے لیے، نئے servlet کے doGet() طریقہ میں درج ذیل کوڈ شامل کریں:
getServletContext().getRequestDispatcher("/hello").forward(req, resp);
اس کوڈ میں، ہم سرولیٹ سیاق و سباق تک رسائی حاصل کرتے ہیں، متعلقہ سرولیٹ کے لیے درخواست بھیجنے والے کو حاصل کرتے ہیں، اور اس سے مخصوص دلائل (req، resp) کے ساتھ مخصوص درخواست پر کارروائی کرنے کے لیے کہتے ہیں۔ ایک ری ڈائریکٹ کلائنٹ کو وہ پتہ واپس کرتا ہے جسے کلائنٹ کو اپنی درخواست پر کارروائی کرنے کے لیے استعمال کرنا چاہیے۔ زیادہ تر براؤزر خود بخود لوٹے ہوئے URL پر جاتے ہیں۔ ری ڈائریکٹ کو لاگو کرنے کے لیے، آپ کو یہ کوڈ شامل کرنا ہوگا:
resp.sendRedirect(req.getContextPath() + "/hello");
ہم پیرامیٹر redirect()پر طریقہ کو کال کرتے ہیں HttpServletResponseاور اسے وہ پتہ دیتے ہیں جسے کلائنٹ کو استعمال کرنے کی ضرورت ہے۔ یہاں ایک اہم تفصیل ہے: مکمل ری ڈائریکٹ پاتھ کے آخر میں HTTP پیرامیٹرز کو بھی شامل کرنا ضروری ہے، جو زیادہ آسان نہیں ہے۔ ہمارے حالات میں، استعمال کرنا افضل ہے forward، لیکن بعض اوقات استعمال کرنا redirectبہتر ہوتا ہے۔ اگر آپ ان کے کام کرنے کے فرق کو سمجھتے ہیں، تو آپ غلط انتخاب نہیں کریں گے۔ نئے سرولیٹ کا کوڈ اس طرح لگتا ہے:
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet("/")
public class IndexServlet extends HttpServlet {

   @Override
   protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//        getServletContext().getRequestDispatcher("/hello").forward(req, resp);
       resp.sendRedirect(req.getContextPath() + "/hello");
   }
}

خلاصہ

آپ کی پہلی ویب ایپلیکیشن ہو گئی ہے۔ اگلے مضمون میں، آپ سیکھیں گے کہ IntelliJ IDEA استعمال کیے بغیر اسے کیسے تعینات کیا جائے۔ ہم نے ایک درخواست لکھی ہے جو صرف GET درخواستوں پر کارروائی کرتی ہے۔ باقی HTTP طریقوں کو اسی طرح سنبھالا جاتا ہے — پیرنٹ کلاس کے متعلقہ طریقوں کو اوور رائیڈ کر کے۔ آپ نفیس ورسٹائل ویب ایپلیکیشنز بنانے کے لیے اس طرح کے سادہ سرولیٹ استعمال کر سکتے ہیں۔ بلاشبہ، بہار جیسے بڑے فریم ورک کا استعمال یہ بہت آسان بنا دیتا ہے۔ لیکن اگر آپ واقعی سرولیٹس کی تمام صلاحیتوں کی گہرائی میں جانا چاہتے ہیں، تو آپ سرکاری تفصیلات پڑھ سکتے ہیں ۔ حصہ 6۔ سرولیٹ کنٹینرز حصہ 7۔ MVC (ماڈل-ویو-کنٹرولر) پیٹرن کا تعارف
تبصرے
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION