JavaRush /جاوا بلاگ /Random-SD /حصو 5. سروليٽس، جاوا سروليٽ API. هڪ سادي ويب ايپليڪيشن لک...

حصو 5. سروليٽس، جاوا سروليٽ API. هڪ سادي ويب ايپليڪيشن لکڻ

گروپ ۾ شايع ٿيل
هي مواد "انٽرپرائز ڊولپمينٽ جو تعارف" سيريز جو حصو آهي. اڳيون مضمون: حصو 5. سروليٽس، جاوا سروليٽ API.  هڪ سادي ويب ايپليڪيشن لکڻ - 1ڇا توهان پهريان ئي ڄاڻو ٿا ته جاوا ايپليڪيشنون ڪيئن لکجي جيڪي ڪنسول ۾ ٽيڪسٽ آئوٽ ڪن ٿيون، پر توهان اڃا تائين نه ٿا ڄاڻو ته توهان جي پهرين ويب ايپليڪيشن ڪيئن ٺاهي؟ عظيم، پنهنجو پاڻ کي آرام سان ٺاهيو. هن آرٽيڪل ۾، اسان سرورليٽس سان واقف ٿينداسين ۽ هڪ ايپليڪيشن لکنداسين جيڪا توهان پنهنجن دوستن کي ڏيکاري سگهو ٿا بغير ڪنهن جرنڪ موڪلڻ يا انهن کي جاوا ڊائون لوڊ ڪرڻ لاء مجبور ڪيو. اچو ته هڪ ويب ايپليڪيشن لکون . جيڪڏهن توهان اڃا تائين واقف نه آهيو انهن طريقن سان جيڪي ويب پروگرامنگ ۾ استعمال ڪيا ويا آهن، مان توهان کي صلاح ڏيان ٿو پڙهڻ شروع ڪريو سيريز جي پهرين مضمون کان " انٽرپرائز ڊولپمينٽ جو تعارف ".

هڪ servlet ڇا آهي

پهرين، اچو ته اهو معلوم ڪريون ته هڪ سروليٽ ڇا آهي ۽ توهان ان جي باري ۾ اڪثر ٻڌو ٿا. Java Servlet API هڪ معياري API آهي جيڪو سرور تي عمل درآمد لاءِ ٺاهيو ويو آهي ۽ ڪلائنٽ سان ڪم ڪرڻ لاءِ درخواست-جواب اسڪيم استعمال ڪندي. هڪ servlet هڪ ڪلاس آهي جيڪو ڪلائنٽ کان درخواستون وصول ڪري سگهي ٿو ۽ ان تي جواب واپس ڪري سگهي ٿو. ها، جاوا ۾ servlets خاص طور تي عناصر آهن جن سان ڪلائنٽ-سرور آرڪيٽيڪچر ٺهيل آهي. جيڪڏهن توهان کي ياد آهي، اسان اڳ ۾ ئي هن سيريز جي مضمونن مان هڪ ۾ ڳالهايو آهي. اچو ته بش جي چوڌاري نه کٽون: اچو ته فوري طور تي ڪجهه ڪوڊ لکون.

توهان کي ويب ايپليڪيشن ٺاهڻ جي ڪهڙي ضرورت آهي

جاوا ۾ servlets سان آرام سان ڪم ڪرڻ لاءِ، توهان کي Intellij IDEA الٽيميٽ ايڊيشن جي ضرورت پوندي. اهو ادا ڪيل آهي، پر توهان 30 ڏينهن جي آزمائشي مدت کي چالو ڪري سگهو ٿا يا ابتدائي رسائي وارو نسخو استعمال ڪري سگهو ٿا - اهو هميشه مفت آهي. پڻ انسٽال ڪريو اسان جي ايپليڪيشن سرور - Apache Tomcat. Tomcat هڪ سروليٽ ڪنٽينر آهي: اهو اهو آهي جيڪو ٻاهران ايندڙ درخواستن تي عمل ڪري ٿو ۽ انهن کي اسان جي درخواست تي منتقل ڪري ٿو. توھان ڊائون لوڊ ڪري سگھو ٿا Tomcat ھن لنڪ تان .

پهرين ويب ايپليڪيشن ٺاهيندي

جيڪڏهن سڀ ڪجهه تيار آهي، اچو ته ٺاهيو Maven پروجيڪٽ. جيڪڏهن توهان Maven سان واقف نه آهيو، پوئين مضمون ڏانهن ڌيان ڏيو . اچو ته شروع ڪريون!
  1. pom.xml ۾، javax.servlet-api انحصار شامل ڪريو ۽ پيڪنگنگ وار مقرر ڪريو:

    <?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>

    سادي servlet ڪلاس:

    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. ايپليڪيشن کي هلائڻ لاءِ توهان کي Tomcat ترتيب ڏيڻ جي ضرورت آهي:

    حصو 5. سروليٽس، جاوا سروليٽ API.  هڪ سادي ويب ايپليڪيشن لکڻ - 2 حصو 5. سروليٽس، جاوا سروليٽ API.  هڪ سادي ويب ايپليڪيشن لکڻ - 3

  3. اڳيون، اسان ظاهر ڪريون ٿا ته Tomcat جو ڪهڙو نسخو اسان استعمال ڪنداسين، URL جنهن جي ذريعي اسان سرور تائين رسائي ڪري سگهون ٿا، ۽ بندرگاهه. توھان کي ھن طرح ڪجھ حاصل ڪرڻ گھرجي:

    حصو 5. سروليٽس، جاوا سروليٽ API.  هڪ سادي ويب ايپليڪيشن لکڻ - 4
  4. باقي اهو آهي ته آرٽيڪل کي بيان ڪرڻ لاءِ (جمع ٿيل پروجيڪٽ جار آرڪائيو ۾)، جيڪو ڪنٽينر ۾ لڳايو ويندو. توھان ڪلڪ ڪري سگھوٿا درست ڪريو بٽڻ ۽ چونڊيو جنگ ڌماڪو : ان جو مطلب آھي ته منصوبي جي ٻيهر تعمير ٿيڻ کان پوء، آرٽيڪل خودڪار طريقي سان سرورٽ ڪنٽينر ۾ رکيل آھي. حصو 5. سروليٽس، جاوا سروليٽ API.  هڪ سادي ويب ايپليڪيشن لکڻ - 5

  5. ايپليڪيشن جو حوالو مقرر ڪيو ويو آهي servlets_war_exploded by default ، جنهن جو مطلب آهي ته اپليڪيشن تائين رسائي لازمي آهي: http://localhost:8080/servlets_war_exploded .

    اسان کي اضافي متن جي ضرورت ڇو آهي؟ اچو ته غير ضروري شين کي هٽايو. هاڻي اسان جي ايپليڪيشن ايڊريس آهي: http://localhost:8080 .

    حصو 5. سروليٽس، جاوا سروليٽ API.  هڪ سادي ويب ايپليڪيشن لکڻ - 6

  6. OK تي ڪلڪ ڪريو. اسان ڏسون ٿا ته اسان وٽ هاڻي اپليڪيشن شروع ڪرڻ جو موقعو آهي:

    حصو 5. سروليٽس، جاوا سروليٽ API.  هڪ سادي ويب ايپليڪيشن لکڻ - 7

    هاڻي، جڏهن توهان اپليڪيشن لانچ ڪيو، برائوزر کولڻ گهرجي ۽ 404 غلطي ڏيکاري. اهو منطقي آهي، ڇاڪاڻ ته ايڊريس تي http://localhost:8080/ اتي "/" ميپنگ سان هڪ servlet هجڻ گهرجي، ۽ اسان جي صرف servlet ۾ "/hello" ميپنگ آهي .

  7. اسان ان سان رابطو ڪريون ٿا http://localhost:8080/hello ۽ متوقع جواب حاصل ڪريو - تار ”هيلو“!

جيڪڏهن سڀ ڪجهه ڪم ڪري، اچو ته ڪوڊ ڏسو. هڪ باقاعده طبقي مان هڪ http servlet ٺاهڻ لاء ، توهان کي ان کي HttpServlet طبقي مان ورثي ۾ آڻڻ جي ضرورت آهي. ڪلاس جي مٿان اسان @WebServlet() تشريح بيان ڪريون ٿا، جنهن ۾ اسان سروليٽ کي هڪ مخصوص رستي (“/hello”) سان جڙيل آهيون. هي تشريح صرف 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 انتساب اڃا تائين پيدا نه ڪيو ويو آهي (پهريون ڀيرو توهان صفحي تي وڃو)، getAttribute() طريقو null واپس ڪندو، تنهنڪري توهان کي null جي جانچ ڪرڻ جي ضرورت آهي. ساڳيو ئي درخواست جي پيراگراف تي لاڳو ٿئي ٿو. جيڪڏهن صارف صارف نام جي پيٽرولر کي پاس نه ڪيو، ان جي قيمت ختم ٿي ويندي. انهي صورت ۾، اسان صارف کي گمنام طور سلام ڪنداسين. GET جي درخواست ۾ هڪ پيٽرولر کي پاس ڪرڻ لاء، path-variables استعمال ڪيا ويا آهن، اهو آهي، توهان کي لنڪ تائين رسائي جي ضرورت آهي http://localhost:8080/hello?username=Pavel . توھان وڌيڪ پڙھي سگھوٿا http درخواستن جي سلسلي ۾ پوئين مضمون ۾. ھاڻي اسان جي ايپليڪيشن ۾ گھٽ ۾ گھٽ منطق آھي، پر روٽ جي رستي ۾ 404 نقص ٿورو پريشان ڪندڙ آھي. ان کي درست ڪرڻ لاءِ، اچو ته هڪ ٻيو سروليٽ ٺاهيو ۽ ان کي شروعاتي صفحي @WebServlet("/") تي ​​نقشو بڻايون. هن سرورٽ جو ڪم درخواستن کي "/ هيلو" رستي ڏانهن منتقل ڪرڻ آهي. هن کي ڪرڻ جا ٻه طريقا آهن: استعمال ڪندي اڳتي يا ريڊائريڪٽ. شايد اهو سمجهڻ جي قابل آهي ته انهن جي وچ ۾ فرق ڇا آهي. فارورڊ - نمائندن سرور تي هڪ ٻي سرورٽ تي پروسيسنگ جي درخواست ڪن ٿا، ڪلائنٽ ملوث نه آهي. ھن کي ڪرڻ لاء، توھان کي ھيٺ ڏنل ڪوڊ شامل ڪرڻ جي ضرورت آھي doGet() طريقي سان نئين سرليٽ جي:
getServletContext().getRequestDispatcher("/hello").forward(req, resp);
هن ڪوڊ ۾، اسان servlet جي حوالي سان رسائي حاصل ڪريون ٿا، ان کان گهربل سرورٽ جي درخواست مينيجر کي حاصل ڪريو ۽ ان کان پڇون ٿا ته مخصوص درخواست تي عمل ڪرڻ لاء مخصوص پيٽرولر (req، resp). ريڊائريڪٽ - ڪلائنٽ ڏانهن واپسي اهو پتو جنهن تي هن کي پنهنجي درخواست تي عمل ڪرڻ لاءِ رابطو ڪرڻ جي ضرورت آهي. گھڻا برائوزر پاڻمرادو منتقل ٿيل لنڪ ڏانھن ويندا آھن. ريٽائرمينٽ کي لاڳو ڪرڻ لاءِ توھان کي ھي ڪوڊ شامل ڪرڻو پوندو:
resp.sendRedirect(req.getContextPath() + "/hello");
HttpServletResponse ۾ اسان redirect() طريقي کي سڏيندا آهيون ۽ ان کي پتو ڏيو جنهن کي ڪلائنٽ سان رابطو ڪرڻ جي ضرورت آهي. هڪ اهم تفصيل: http پيرا ميٽرز کي پڻ شامل ڪيو وڃي مڪمل ريڊائريڪٽ رستي جي آخر ۾، جيڪو تمام آسان ناهي. اسان جي صورتحال ۾، اهو بهتر آهي ته استعمال ڪرڻ لاء اڳتي وڌو، پر اهو ٿئي ٿو ته اهو بهتر آهي ته ريڊائريڪٽ استعمال ڪرڻ. جيڪڏھن توھان انھن جي ڪم ۾ فرق سمجھو، توھان پنھنجي پسند سان غلط نه ٿيندا. نئين servlet لاء ڪوڊ هن طرح ڏسجي ٿو:
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");
   }
}

هيٺين لائن

توهان جي پهرين ويب ايپليڪيشن تيار آهي. ايندڙ آرٽيڪل ۾ توهان سکو ته ڪيئن ان کي استعمال ڪرڻ کان سواء انٽيليج IDEA استعمال ڪرڻ. اسان هڪ درخواست لکي آهي جيڪا صرف GET درخواستن تي عمل ڪري ٿي. باقي http طريقا ساڳئي طريقي سان پروسيس ڪيا ويا آهن - والدين طبقي جي لاڳاپيل طريقن کي ختم ڪندي. اهڙين سادي servlets کي استعمال ڪندي، توهان ٺاهي سگهو ٿا پيچيده، امير ويب ايپليڪيشنون. يقينا، بهار وانگر وڏي فريم ورڪ استعمال ڪندي، اهو ڪرڻ تمام آسان آهي. پر جيڪڏهن توهان واقعي چاهيو ٿا ته servlets جي سڀني صلاحيتن کي وڌيڪ تفصيل سان، توهان پڙهي سگهو ٿا سرڪاري تفصيل . حصو 6. سروليٽ ڪنٽينرز حصو 7. MVC (ماڊل-ڏسو-ڪنٽرولر) نموني جو تعارف حصو 8. اسپرنگ بوٽ ۾ ننڍڙي ايپليڪيشن لکڻ
تبصرا
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION