JavaRush /جاوا بلاگ /Random-SD /servlets ۽ jsp استعمال ڪندي هڪ سادي ويب ايپليڪيشن ٺاهڻ (ح...
fatfaggy
سطح
Киев

servlets ۽ jsp استعمال ڪندي هڪ سادي ويب ايپليڪيشن ٺاهڻ (حصو 2)

گروپ ۾ شايع ٿيل
مان servlets، jsp، Maven ۽ Tomcat استعمال ڪندي ويب ايپليڪيشن ٺاهڻ جي عمل کي بيان ڪرڻ جاري رکندو آهيان. مضمون جي شروعات ، جيڪڏھن ضروري ھجي.
اسان ادارن کي ٺاهيندا آهيون.
اچو ته يوزر ڪلاس ٺاهيون انٽيٽيز پيڪيج ۾، جنهن ۾ اسان ٻه پرائيويٽ اسٽرنگ ويريبلز جو نالو ۽ پاسورڊ ٺاهينداسين. اچو ته ٺاھيندڙ ٺاھيون (ڊفالٽ ۽ ھڪڙو جيڪو ٻنھي قدرن کي قبول ڪري سگھن)، حاصل ڪندڙ / سيٽرز، صرف صورت ۾ toString() طريقي کي اوور رائيڊ ڪريو، گڏوگڏ equals() ۽ hashCode() طريقا. public class User { private String name; private String password; public User() { } public User(String name, String password) { this.name = name; this.password = password; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } @Override public String toString() { return "User{" + "name='" + name + '\'' + ", password='" + password + '\'' + '}'; } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; User user = (User) o; if (name != null ? !name.equals(user.name) : user.name != null) return false; return password != null ? password.equals(user.password) : user.password == null; } @Override public int hashCode() { int result = name != null ? name.hashCode() : 0; result = 31 * result + (password != null ? password.hashCode() : 0); return result; } } ھاڻي اسان استعمال ڪندڙن جي ھڪڙي فهرست ٺاھڻ شروع ڪري سگھون ٿا، جتي اسان پنھنجي صارفين کي شامل ڪنداسين، ۽ جتان اسين انھن کي ڊسپلي لاءِ وٺي وينداسين. پر اتي هڪ مسئلو آهي. اسان اسان جي servlet شيون پيدا نه ڪندا آھن؛ Tomcat انھن کي اسان لاء پيدا ڪري. اهي طريقا جيڪي اسان انهن ۾ اوور رائڊ ڪريون ٿا اهي پڻ اسان لاءِ اڳ ۾ ئي بيان ڪيا ويا آهن ۽ اسان پيٽرول شامل نٿا ڪري سگهون. پوء ڪيئن اسان هڪ عام فهرست ٺاهي سگهون ٿا جيڪو اسان جي ٻنهي سرورن ۾ نظر ايندو؟ جيڪڏهن اسان صرف هر سرورٽ ۾ پنهنجون لسٽ اعتراض ٺاهي سگهون ٿا، اهو ظاهر ٿيندو ته اسان صارفين کي هڪ فهرست ۾ شامل ڪنداسين، پر لسٽ سرورٽ استعمال ڪندڙ استعمال ڪندڙن جي فهرست کي ظاهر ڪرڻ بلڪل مختلف هوندو. اهو ظاهر ٿئي ٿو ته اسان کي هڪ اعتراض جي ضرورت آهي جيڪا ٻنهي سرورن لاء عام هجي. عام طور تي ڳالهائڻ، اسان کي هڪ اعتراض جي ضرورت آهي جيڪا اسان جي پروگرام ۾ سڀني طبقن لاء عام هجي؛ سڄي پروگرام لاء واحد اعتراض. مون کي اميد آهي ته توهان ڊزائن جي نمونن بابت ڪجهه ٻڌو آهي. ۽ شايد ڪجهه لاءِ هي آهي پهرين حقيقي ضرورت آهي سنگلٽن ٽيمپليٽ کي انهن جي پروگرام ۾ استعمال ڪرڻ. توهان تخليقي حاصل ڪري سگهو ٿا ۽ ڊبل چيڪن ۽ هم وقت سازي سان گڏ ڪجهه ٿڌو سنگلٽن ٺاهي سگهو ٿا (ها، اسان وٽ هڪ ملٽي ٿريڊ ايپليڪيشن آهي، جتان ٽام ڪيٽ مختلف ٿريڊن ۾ سروليٽ هلائي ٿو)، پر مان ان آپشن کي استعمال ڪندس شروعاتي شروعات سان، ڇو ته ان صورت ۾ اهو آهي. ڪافي مناسب.
ماڊل ٺاهڻ.
پوءِ اسان ماڊل پيڪيج ۾ هڪ ڪلاس ٺاهينداسين (۽ ان ۾ سنگلٽن ٽيمپليٽ لاڳو ڪنداسين)، ۽ اسان ان کي ڪافي رنگين ماڊل پڻ سڏينداسين. اچو ته ان ۾ هڪ پرائيويٽ يوزر لسٽ شئي ٺاهي، ۽ ٻه طريقا ٺاهيو: هڪ ته جيئن توهان يوزر شامل ڪري سگهو، ۽ ٻيو - ان کي صرف اسٽرنگ جي لسٽ (يوزر جا نالا) موٽڻ ڏيو. جيئن ته اسان جو صارف اعتراض نالو ۽ پاسورڊ تي مشتمل آهي، اسان نه چاهيون ٿا "ظاهر" صارف پاسورڊ، تنهنڪري اسان صرف انهن جي نالن جي فهرست واپس ڪنداسين. public class Model { private static Model instance = new Model(); private List model; public static Model getInstance() { return instance; } private Model() { model = new ArrayList<>(); } public void add(User user) { model.add(user); } public List list() { return model.stream() .map(User::getName) .collect(Collectors.toList()); } }
Mvc بابت ٿورڙو.
جڏهن کان توهان سنگلٽن جي باري ۾ ٻڌو آهي، ان جو مطلب اهو آهي ته توهان شايد ڪنهن ٻئي ڊزائن جي نموني بابت ٻڌو آهي - MVC (ماڊل-ويو-ڪنٽرولر، يا روسي ماڊل-ويو-ڪنٽرولر، يا جيئن انگريزي ماڊل-ويو-ڪنٽرولر ۾). ان جو جوهر ڪاروبار منطق کي پيش ڪرڻ کان الڳ ڪرڻ آهي. اهو آهي، ڪوڊ الڳ ڪريو جيڪو اهو طئي ڪري ٿو ته ڪوڊ مان ڇا ڪجي جيڪو اهو طئي ڪري ٿو ته ڪيئن ڊسپلي ڪجي . ڏسو (ڏسو يا صرف نظريا) ان فارم لاء ذميوار آهي جنهن ۾ ڪجهه ڊيٽا پيش ڪئي وئي آهي. اسان جي حالت ۾، نظريا اسان جا JSP صفحا آهن. ان ڪري مون انهن کي هڪ فولڊر ۾ رکيو جنهن کي views سڏيو ويندو آهي. ماڊل حقيقي ڊيٽا آهي جنهن سان پروگرام ڪم ڪري ٿو. اسان جي حالت ۾، اهي صارف آهن (استعمال ڪندڙن جي فهرست). يقينن، ڪنٽرولرز انهن جي وچ ۾ ڳنڍيندڙ لنڪ آهن. اهي ماڊل مان ڊيٽا وٺن ٿا ۽ ان کي ڏسڻ ۾ منتقل ڪن ٿا، يا اهي Tomcat کان ڪجهه ڊيٽا وصول ڪن ٿا، ان کي پروسيس ڪريو ۽ ان کي ماڊل ڏانهن منتقل ڪريو. ڪاروباري منطق (اهو آهي، ڇا ڪجي ) انهن ۾ بيان ڪيو وڃي، ۽ نه ماڊل يا نظر ۾. تنهن ڪري، هرڪو پنهنجو ڪم ڪري ٿو:
  • ماڊل اسٽوريج ڊيٽا
  • نظارا ڊيٽا جي هڪ خوبصورت نمائندگي ٺاهي
  • ڪنٽرولر ڊيٽا کي پروسيس ڪري ٿو
هي انهن سڀني کي بلڪل سادو ۽ برقرار رکڻ جي اجازت ڏئي ٿو. ۽ هڪ طبقي ۾ سڀني ڪوڊ جو هڪ خوفناڪ ڊمپ ناهي. MVC نه رڳو ويب پروگرامنگ لاءِ موزون آهي، پر اهو اڃا تائين تمام عام آهي (جيڪڏهن هميشه نه هجي) هن علائقي ۾. اسان جي صورت ۾، servlets ڪنٽرولر طور ڪم ڪندو. ها، هي هڪ تمام سطحي آهي ۽ هن نموني جي سخت وضاحت آهي، پر هي مضمون ڊزائن جي نمونن بابت نه آهي، پر هڪ سادي ويب ايپليڪيشن ڪيئن ٺاهڻ بابت آهي :) جيڪو وڌيڪ ڄاڻڻ چاهي ٿو - گوگل سڀ ڪجهه ڄاڻي ٿو ! :) اچو ته اسان جي خيالن ڏانهن موٽون.
استعمال ڪندڙ کي شامل ڪرڻ لاءِ فارم ٺاھيو.
اچو ته add.jsp فائل ۾ هڪ فارم شامل ڪريو، جنهن ۾ ٻه ٽيڪسٽ ان پٽ شامل آهن (هڪ باقاعده، ٻيو پاسورڊ قسم) ۽ سرور ڏانهن ڊيٽا موڪلڻ لاءِ هڪ بٽڻ. هتي فارم ۾ قدر پوسٽ سان هڪ طريقو خاصيت آهي. هن جو مطلب آهي ته هن فارم مان ڊيٽا پوسٽ جي درخواست جي صورت ۾ سرور ڏانهن موڪلي ويندي. عمل جي خاصيت بيان نه ڪئي وئي آهي، جنهن جو مطلب آهي ته اها درخواست ساڳئي پتي تي ويندي جتي اسان هن صفحي تي ويا هئاسين (/ شامل ڪريو). اهڙيء طرح، اسان جو سرور، جيڪو هن ايڊريس تي پابند آهي، هڪ GET درخواست حاصل ڪرڻ تي، صارفين کي شامل ڪرڻ لاء فارم سان هن jsp کي واپس ڪري ٿو، ۽ جيڪڏهن اهو پوسٽ درخواست حاصل ڪري ٿو، ته پوء هن فارم پنهنجي ڊيٽا کي اتي موڪليو آهي (جنهن مان اسين ٻيهر حاصل ڪنداسين. درخواست اعتراض doPost() طريقي ۾، ان کي پروسيس ڪريو ۽ ان کي محفوظ ڪرڻ لاء ماڊل ڏانھن منتقل ڪريو). اها ڳالهه نوٽ ڪرڻ جي قابل آهي ته ان پٽن کي هتي هڪ نالي جي پيٽرولر آهي (جنهن جي نالي سان هڪ فيلڊ لاء اهو قدر جو نالو آهي، ۽ پاسورڊ سان هڪ فيلڊ لاء ان ۾ قدر پاس آهي). هي هڪ تمام اهم نقطو آهي. جيئن ته هن ڊيٽا کي حاصل ڪرڻ لاء (نالو ۽ پاسورڊ جيڪو داخل ڪيو ويندو) درخواست کان (اڳ ۾ ئي سرورليٽ اندر)، اسان بلڪل استعمال ڪنداسين نالو ۽ پاس. پر انهي تي وڌيڪ بعد ۾. ڊيٽا موڪلڻ لاءِ بٽڻ پاڻ وري هڪ بٽڻ جي صورت ۾ ٺاهيو ويندو آهي، ۽ نه ان پٽ، جيئن عام طور تي رواج آهي. مون کي خبر ناهي ته هي اختيار ڪيترو عالمگير آهي، پر اهو مون لاءِ ڪروم ۾ ڪم ڪري ٿو :)
هڪ servlet سان پوسٽ جي درخواست تي عمل ڪندي.
اچو ته واپس وڃو AddServlet servlet. اسان اڳ ۾ ئي ڄاڻون ٿا ته اسان جي servlet لاءِ GET درخواستن کي ”پڪڙڻ“ جي قابل ٿيڻ لاءِ، اسان HttpServlet ڪلاس مان doGet() طريقي کي ختم ڪري ڇڏيو آهي. اسان جي servlet کي سيکارڻ لاءِ پڻ پوسٽ جي درخواستن کي پڪڙڻ لاءِ، اسان پڻ اوور رائڊ ڪريون ٿا doPost() طريقو. اهو Tomcat کان ساڳئي درخواست ۽ جوابي شيون وصول ڪري ٿو، جنهن سان اسان ڪم ڪنداسين. پهرين، اچو ته درخواست مان ڪڍيون نالو ۽ پاس ڪيل پيٽرولر جيڪي فارم موڪليا ويا آهن (جيڪڏهن توهان انهن کي فارم ۾ مختلف طور تي رکيو، ته اهي نالا آهن جيڪي توهان لکندا آهيو). ان کان پوء اسان حاصل ڪيل ڊيٽا استعمال ڪندي اسان جو صارف اعتراض ٺاهينداسين. پوء اسان ماڊل اعتراض حاصل ڪنداسين ۽ ٺاهيل صارف کي ماڊل ۾ شامل ڪنداسين. @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String name = req.getParameter("name"); String password = req.getParameter("pass"); User user = new User(name, password); Model model = Model.getInstance(); model.add(user); }
ڊيٽا کي ڏسڻ ڏانهن منتقل ڪرڻ.
ھاڻي اچو ته اڳتي وڃو ListServlet servlet. اسان اڳ ۾ ئي عمل ڪيو آهي doGet() طريقو، جيڪو صرف ڪنٽرول کي list.jsp ڏيک ڏانهن منتقل ڪري ٿو. جيڪڏهن توهان وٽ اڃا تائين اهو ناهي، اهو ساڳيو طريقي سان قياس سان ڪريو AddServlet servlet. ھاڻي اھو سٺو لڳندو ته ماڊل مان صارفين جي نالن جي ھڪڙي فهرست حاصل ڪري ۽ انھن کي ڏيک ڏانھن منتقل ڪريو، جيڪو انھن کي اتي وصول ڪندو ۽ انھن کي چڱي طرح ڏيکاريندو. هن کي ڪرڻ لاء، اسان ٻيهر استعمال ڪنداسين درخواست اعتراض جيڪو اسان حاصل ڪيو آهي Tomcat. اسان هن اعتراض ۾ هڪ خاصيت شامل ڪري سگهون ٿا، ان کي ڪجهه نالو ڏيو ۽ حقيقت ۾، اعتراض پاڻ کي جيڪو اسان ڏسڻ ۾ منتقل ڪرڻ چاهيون ٿا. ان حقيقت جي ڪري ته جڏهن عمل جي عمل کي هڪ servlet کان هڪ ڏيک ڏانهن منتقل ڪيو وڃي ٿو، اسان اتي ساڳيا درخواست ۽ جوابي شيون پاس ڪريون ٿا جيڪي سرورٽ پاڻ وصول ڪيون آهن، پوء اسان جي نالن جي فهرست کي درخواست واري اعتراض ۾ شامل ڪندي، اسان پوء هن درخواست مان ڪري سگھون ٿا. ڏسڻ ۾ اعتراض اسان جي صارفين جي نالن جي فهرست ٺاهيو ۽ حاصل ڪريو. اسان ListServlet ڪلاس سان ڪيو آهي، تنهنڪري هتي سڄي طبقي لاء ڪوڊ آهي. package app.servlets; import app.model.Model; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.util.List; public class ListServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { Model model = Model.getInstance(); List names = model.list(); req.setAttribute("userNames", names); RequestDispatcher requestDispatcher = req.getRequestDispatcher("views/list.jsp"); requestDispatcher.forward(req, resp); } }
jsp فائلن ۾ جاوا ڪوڊ تي عمل ڪرڻ.
ھاڻي اچو ته list.jsp فائل ڏانھن وڃو. هي فائل صرف عمل ڪيو ويندو جڏهن ListServlet هتي عملدرآمد جي عمل کي گذري ٿو. ان کان علاوه، انهي سرورليٽ ۾ اسان اڳ ۾ ئي ماڊل مان صارف جي نالن جي هڪ فهرست تيار ڪئي آهي ۽ ان کي هتي درخواست اعتراض ۾ پاس ڪيو آهي. ڏنل نالن جي هڪ فهرست، اسان ان جي ذريعي لوپ لاء هلائي سگهون ٿا ۽ هر نالو ڇپائي سگهون ٿا. جيئن ته مون اڳ ۾ ئي چيو آهي، jsp فائلون جاوا ڪوڊ تي عمل ڪري سگهن ٿيون (اصول ۾، اهو آهي جيڪو انهن کي جامد html صفحن کان مختلف بڻائي ٿو). ڪجھ ڪوڊ تي عمل ڪرڻ لاء، اھو ڪافي آھي ھڪڙي تعمير کي جڳھ تي رکڻ لاء جيڪو اسان کي گھربل آھي. <% // java code %> اھڙي تعمير جي اندر، اسان ڪيترن ئي متغيرن تائين رسائي حاصل ڪندا آھيون: درخواست - اسان جي درخواست اعتراض، جيڪو اسان servlet مان گذريو آھي، جتي ان کي صرف سڏيو ويندو ھو. req جواب - جوابي اعتراض، servlet ۾ resp out سڏيو ويندو هو - JspWriter قسم جو هڪ اعتراض (معمولي ليکڪ کان ورثي ۾ مليل آهي)، جنهن جي مدد سان اسان سڌو html صفحي ۾ ڪجهه "لکڻ" ڪري سگهون ٿا. Out.println("Hello world!") System.out.println("هيلو دنيا!") سان بلڪل ملندڙ جلندڙ آهي، پر انهن کي پريشان نه ڪريو! out.println() html صفحي تي "لکي ٿو"، ۽ System.out.println - سسٽم آئوٽ تي. جيڪڏهن توهان jsp ڪوڊ سان سيڪشن جي اندر System.out.println() طريقي کي ڪال ڪريو ٿا، توهان نتيجن کي Tomcat ڪنسول ۾ ڏسندا، ۽ صفحي تي نه، جيئن توهان چاهيو ٿا :) توهان jsp اندر موجود ٻيون شيون ڳولي سگهو ٿا. هتي . درخواست واري اعتراض کي استعمال ڪندي اسان نالن جي لسٽ حاصل ڪري سگھون ٿا جيڪي servlet مان گذري ويا هئا (اسان هن اعتراض سان لاڳاپيل وصف ڳنڍيو)، ۽ آئوٽ اعتراض کي استعمال ڪندي اسين انهن نالن کي ظاهر ڪري سگهون ٿا. اچو ته اهو ڪريون هن وقت لاءِ صرف هڪ html لسٽ جي صورت ۾: جيڪڏهن اسان چاهيون ٿا ته لسٽ صرف تڏهن ڏيکاريون جڏهن صارف موجود هجن، ۽ ٻي صورت ۾ هڪ ڊيڄاريندڙ ڏيکاري ته اڃا تائين ڪو به استعمال ڪندڙ نه آهن، اسان هن حصي کي ٿورڙي ٻيهر لکي سگهون ٿا: هاڻي ته اسان ڄاڻو ته ڊيٽا ڪيئن منتقل ڪجي servlets کان ڏيک ۾ - اسان پنهنجي AddServlet کي ٿورو بهتر ڪري سگهون ٿا ته جيئن صارف جي ڪامياب اضافو بابت نوٽيفڪيشن ڏيکاري وڃي. ائين ڪرڻ لاءِ، doPost() طريقي ۾، ماڊل ۾ نئين يوزر کي شامل ڪرڻ کان پوءِ، اسان req اعتراض جي خاصيتن ۾ ھن صارف جو نالو شامل ڪري سگھون ٿا ۽ ڪنٽرول واپس add.jsp ڏيک ڏانھن منتقل ڪري سگھون ٿا. ۽ ان ۾ اڳ ۾ ئي جاوا ڪوڊ سان ھڪڙو سيڪشن ٺاھيو، جتي توھان چيڪ ڪري سگھوٿا ته ڇا اھڙي صفت درخواست ۾ آھي، ۽ جيڪڏھن آھي، ته پوء ھڪڙو پيغام ڏيکاريو جيڪو صارف ڪاميابيء سان شامل ڪيو ويو آھي. انهن تبديلين کان پوء، AddServlet servlet جو مڪمل ڪوڊ ڪجهه هن طرح نظر ايندو: هتي، doPost() طريقي جي آخر ۾، اسان ماڊل ۾ شامل ڪيل صارف جي نالي سان هڪ وصف مقرر ڪيو، ۽ پوء ڪال ڪريو doGet( ) طريقو، جنهن تي اسان موجوده درخواست ۽ جواب کي منظور ڪريون ٿا. ۽ doGet() طريقو اڳ ۾ ئي ڪنٽرول کي ڏسڻ ڏانهن منتقل ڪري ٿو، جتي اهو شامل ڪيل صارف جي نالي سان هڪ وصف جي طور تي ڳنڍيل هڪ درخواست اعتراض موڪلي ٿو. اهو add.jsp پاڻ کي درست ڪرڻ لاءِ رهي ٿو ته جيئن اها اهڙي نوٽيفڪيشن ڏيکاري جيڪڏهن اهڙي خاصيت موجود آهي. فائنل add.jsp
    <% List names = (List ) request.getAttribute("userNames"); if (names != null && !names.isEmpty()) { for (String s : names) { out.println("
  • " + s + "
  • "); } } %>
<% List names = (List ) request.getAttribute("userNames"); if (names != null && !names.isEmpty()) { out.println(" "); for (String s : names) { out.println("
  • " + s + "
  • "); } out.println("
    "); } else out.println("

    There are no users yet!

    "); %>
    package app.servlets; import app.entities.User; import app.model.Model; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; public class AddServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { RequestDispatcher requestDispatcher = req.getRequestDispatcher("views/add.jsp"); requestDispatcher.forward(req, resp); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String name = req.getParameter("name"); String password = req.getParameter("pass"); User user = new User(name, password); Model model = Model.getInstance(); model.add(user); req.setAttribute("userName", name); doGet(req, resp); } } <%@ page contentType="text/html;charset=UTF-8" language="java" %> Add new user

    Super app!

    <% if (request.getAttribute("userName") != null) { out.println("

    User '" + request.getAttribute("userName") + "' added!

    "); } %>

    Add user

    پيج جي باڊي ۾ هيڊر سان گڏ هڪ div هوندو آهي، جنهن کان پوءِ مواد لاءِ هڪ div ڪنٽينر هوندو آهي، جنهن ۾ اهو چيڪ ڪندو آهي ته يوزر جي نالي سان ڪا خاصيت موجود آهي، پوءِ استعمال ڪندڙن کي شامل ڪرڻ لاءِ فارم سان هڪ div، ۽ آخر ۾ هڪ فوٽر هڪ بٽڻ سان مکيه صفحي ڏانهن موٽڻ لاء. اهو لڳي سگھي ٿو ته اتي تمام گھڻا divs آھن، پر اسين انھن کي بعد ۾ استعمال ڪنداسين جڏھن اسين اسٽائل شامل ڪندا آھيون :) خير، آخري ورجن آھي list.jsp. اھڙيءَ طرح ، اسان وٽ ھڪڙي مڪمل طور تي ڪم ڪندڙ ويب ايپليڪيشن آھي جيڪا استعمال ڪندڙن کي ذخيرو ۽ شامل ڪري سگھي ٿي. جيئن انهن جي نالن جي فهرست ڏيکاري. باقي اهو آهي ته ان کي سينگاريو ... :) <%@ page import="java.util.List" %> <%@ page contentType="text/html;charset=UTF-8" language="java" %> Users

    Super app!

    Users

    <% List names = (List ) request.getAttribute("userNames"); if (names != null && !names.isEmpty()) { out.println(" "); for (String s : names) { out.println("
  • " + s + "
  • "); } out.println("
    "); } else out.println("

    There are no users yet!

    "); %>
    انداز شامل ڪرڻ. اسان W3.CSS فريم ورڪ استعمال ڪندا آهيون.
    هن وقت، اسان جي ايپليڪيشن ڪم ڪري رهي آهي، پر بلڪل چريو :) اسان کي پس منظر شامل ڪرڻ جي ضرورت آهي، متن ۽ بٽڻ لاء رنگ، لسٽن کي ترتيب ڏيڻ، ترتيب ڏيڻ، انگن اکرن کي شامل ڪرڻ، عام طور تي تمام گهڻيون شيون. جيڪڏهن توهان هٿرادو انداز لکندا آهيو، اهو تمام گهڻو وقت ۽ اعصاب وٺي سگھي ٿو. تنهن ڪري، مان CSS فريم ورڪ W3.CSS استعمال ڪرڻ جي صلاح ڏيان ٿو . ان ۾ اڳ ۾ ئي تيار ڪيل ڪلاسز آهن اسٽائلز سان؛ باقي اهو آهي ته صحيح جڳهن تي سي ايس ايس جا ڪلاس رکيا وڃن جيڪي اسان انهن هنڌن تي لاڳو ڪرڻ چاهيون ٿا. انھن کي اسان جي صفحن ۾ شامل ڪرڻ لاءِ، پھريائين اسان کي ھڪڙي فائل کي شامل ڪرڻ جي ضرورت آھي اسلوب سان. اهو ٻن طريقن سان ٿي سگهي ٿو: 1. اسان جي صفحن تي وڃو ۽ هيڊ سيڪشن ۾ فائل جي سڌي لنڪ داخل ڪريو اسٽائل سان، هي اختيار مناسب آهي جيڪڏهن توهان وٽ مسلسل انٽرنيٽ ڪنيڪشن آهي. پوء، جڏهن توهان مقامي سرور تي پنهنجا صفحا کوليو ٿا، انداز انٽرنيٽ تان کڄي ويندا. 2. جيڪڏهن توهان چاهيو ٿا ته سڀئي اسٽائل مقامي طور تي هجن ۽ انٽرنيٽ ڪنيڪشن تي منحصر نه هجن، توهان آساني سان فائل کي اسٽائلز سان ڊائون لوڊ ڪري سگهو ٿا ۽ ان کي ويب فولڊر جي اندر ڪٿي رکي سگهو ٿا (مثال طور web/styles/w3.css)، ۽ پوءِ اسان جي سڀني صفحن تي وڃو (index.html, add.jsp, list.jsp) ۽ هيڊ سيڪشن ۾ اسٽائلن سان هن فائل جي لنڪ داخل ڪريو، ان کان پوء، صرف ٽيگ ذريعي وڃو ۽ انهن کي ٽيگ ڪريو جيڪي توهان پسند ڪندا آهيو. . مان ان تي تفصيل سان نه ڳالهائيندس، پر فوري طور تي منهنجي ٽن فائلن جا تيار ڪيل ورجن ترتيب ڏنل انداز جي ڪلاسن سان ڏيندس. index.html add.jsp list.jsp اھو ئي آھي :) جيڪڏھن توھان اڃا تائين ڪي سوال آھن يا ڪي رايا آھن، يا ان جي برعڪس، ڪجھ ڪم نٿو ڪري - ھڪڙو تبصرو ڇڏي ڏيو. خير، مان ڪجھ اسڪرين شاٽ ڳنڍيندس جيڪي ان مان نڪرندا آھن. ۽ آخر ۾. جيڪڏهن توهان هن منصوبي سان مشق ڪرڻ چاهيو ٿا، توهان ڪوشش ڪري سگهو ٿا: Super app!

    Super app!

    <%@ page contentType="text/html;charset=UTF-8" language="java" %> Add new user

    Super app!

    <% if (request.getAttribute("userName") != null) { out.println("
    \n" + " ×\n" + "
    User '" + request.getAttribute("userName") + "' added!
    \n" + "
    "); } %>

    Add user

    <%@ page import="java.util.List" %> <%@ page contentType="text/html;charset=UTF-8" language="java" %> Users list

    Super app!

    Users

    <% List names = (List ) request.getAttribute("userNames"); if (names != null && !names.isEmpty()) { out.println("
      "); for (String s : names) { out.println("
    • " + s + "
    • "); } out.println("
    "); } else out.println("
    \n" + " ×\n" + "
    There are no users yet!
    \n" + "
    "); %>
    ايپليڪيشن جو گهر صفحو استعمال ڪندڙ ونڊو شامل ڪريو استعمال ڪندڙن جي هڪ فهرست
    • هڪ صارف کي حذف ڪرڻ لاءِ servlet ۽ jsp ٺاهيو ۽ موجوده صارف کي تبديل ڪرڻ/ايڊٽ ڪرڻ لاءِ ڪجهه وڌيڪ. توھان حاصل ڪندا ھڪ حقيقي CrUD ويب ايپليڪيشن :) servlets تي))
    • متبادل فهرست (List ) ڊيٽابيس سان ڪم ڪرڻ لاءِ ته جيئن شامل ڪيل صارف سرور جي ٻيهر شروع ٿيڻ کان پوءِ غائب نه ٿين :)
    سدا خوشقسمت رهو!
    تبصرا
    TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
    GO TO FULL VERSION