الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

الدرس الأول + الثاني في Jstl

مغلق
بدأه zizo.h في 18 نوفمبر 2008 · 12 رد · 7,304 مشاهدة · في JavaEE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بســم الله الـرحمــن الرحيــم

صرلي زمان ما حطيت شي مفيد بس الان سوف اكتب عن Tag library

و كمثال سوف نرىJSTL وعلى غرارها في كتير مكتبات ظريفة و في منهن FrameWork مثل JSF(javaServerFaces)

هذه المكتبات بالمختصر المفيد تضيف عدة وسوم tag مثل html

بس طبعا بكون Dynamic اكتر وفي بعضهم جمل شرطية ولهن عدة استخدامات

وبموقع Apache tomcat حاطين مكتبات من شغلهن رابط مكتبات الوسوم

لنبدأ تركيب المكتبة:Installing library

1-أول شي منضيف ال jar تبعها-هلآ عم ناخد JSTL كمثال-و في IDE متل Netbeans بتكون جاهزة بتضيفها ببساطة

هلآ لح ناخد مثال على elcipse -انا عم استخدم MyEclipse لا فرق في هذه الحالة-

من properites تبع المشروع --> java Build Path ثم

Libraries

المكتبات الازمة وكل شي بدك يل لل JavaServerPages standard tag library (JSTL) موجودة بموقع apache بنفس الرابط القديم JSTL تحميل

1.jpg

2-منضيف المكتبة داخل صفحة ال jsp الكود:

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

هذا المود يضاف في رأس الصفحة و prefix هون قيمته c يعني كل وسم داخلها لح يبدأ ب <c: من الأفضل ان تبقى هكذا

و uri فينا نقول شي ثابت وهاد العنوان مو حقيقي يعني لا حدا يفكر انو لازم يكون على الانترنت ,هاد بدل عليها بال jar . هيك بنكون خلصنا تنزيلها؟لالالالالا

هكذا تعمل بس مو التمام يوجد بعض الأشياء لا تعمل هكذا

2-لا زم نكمل في داخل الملف المضغوط الذي حملناه بوجد مجلد اسمه tld

في داخله يوجد ملفات لاحقتها .tld لازم تنضاف في داخل المجلد ب web-inf نسخ بشكل عادي

3-بدنا نضيف بعض الأسطر على web.xml ميشان نوصف الملفات الي ضفناها

الكود يفضل نسخه على المفكرة لأجل القراءة

<?xml version="1.0" encoding="ISO-8859-1"?>

	   <!DOCTYPE web-app
	 PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
	 "http://java.sun.com/dtd/web-app_2_3.dtd">

	   <web-app>
	 <taglib>
	 <taglib-uri>http://jakarta.apache.org/taglibs/
	 core</taglib-uri>
	 <taglib-location>/WEB-INF/c.tld</taglib-location>
	 </taglib>

	   <taglib>
	 <taglib-uri>http://jakarta.apache.org/taglibs/sql</taglib-uri>
	 <taglib-location>/WEB-INF/sql.tld</taglib-location>
	 </taglib>

	   <taglib>
	 <taglib-uri>http://jakarta.apache.org/taglibs/fmt</taglib-uri>
	 <taglib-location>/WEB-INF/fmt.tld</taglib-location>
	 </taglib>

	   <taglib>
	 <taglib-uri>http://jakarta.apache.org/taglibs/xml</taglib-uri>
	 <taglib-location>/WEB-INF/x.tld</taglib-location>
	 </taglib>

	   </web-app>

طبعا في ناس بتكون مغير بل web.xml في داخل web-inf

مثلا ضايفينservlet او شي تاني

المهم انا لح كمل إن شاء الله بهل الشي حسب مابعرف ,هلآ ماكتبت كل شي لأنو مشغول بالدراسة في مذاكرات و المقالة الجاية بشرح شي جديد وهلآ لح حط مثال للتجربة ضعه في ملف jsp

وإن شاء الله بيمشي الحال وإذا في غلط بكلامي نبهوني وسامحوني على الأخطاء الغوية

الكود:

<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>
	 <html>
	 <head>
	 <title>JSTL Tutorial</title>
	 </head>

	   <body>

	   <c:set var="idx" value="name" />
	 <%-- السطر التالي لطبع قيمة parameter
	 من request او شي تاني

	   --%>
	 <c:out value="${param.name}" />

	   param[name] =
	 <c:out value="${param[idx]}" />

	   <br />
	 </c:if>

	   <br />

	   <form method="post">Please enter your name?
	 <input type="text" name="name" />

	   <input type="Submit" />

	   <br />
	 </form>
	 <a href="http://adnanonline.wordpress.com" target="_blank">Adnan Blog</a>
	 </body>
	 </html>

هذا الموضوع مأخوذ من مدونتي رابطها بالتوقيع وإذا عندي أخطاء قلولي الذي يوجد لديه أي سؤال يسأل وإن شاء الله بقد جاوب :lol:

تم تعديل هذه المشاركة بواسطة zizo.h في 19 نوفمبر 2008 في 20:33

#2

السلام عليكم

درس جميل جداً

لكني أعيب عليك شيء وحيد

الكتابة بالعامية ترهقني جداً

على كل حال أحب أن أضيف شيئين

1- JSTL هي اختصار JSP Standard Tag Library

مهمتها في الحياة هي تسهيل البرمجة بـ jsp

وجعل وظائف كانت لا بد أن تكتب بلغة الجافا مثل for ,if

تكتب بواسطة xml

نستطيع القول بأنها محاولة لجعل jsp تتوافق مع xhtml

2- هذه المكتبة تتعارض مع jsf

أحياناً تعمل بعض خواصها

لكنها غير متوافقة كلية معها

والعمل بها مع jsf أحياناً يعطي نتائج غير مأمونة

أتمنى من صاحب الموضوع الإكمال

سأقوم بالتثبيت كتشجيع

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#3

نكمل بســم الله الـرحمــن الرحيــم

1-في هذا الدرس سنتعرف على Scope وكيفية التعامل معها

2-الوسوم: <c:if>,<c:out>

نبدأ بال Scope :

فينا ندعوه بمنظار الرؤية حسب رأية لأنه بحدد مجال وجود السمة Attribute

و متغيرات ال JSTL يمكن تستخدم بال JSP مثل المثال القادم وتعين بالوسم أو الأمر <c:set>

ويوجد للوسم القيم name,value,scope

Name=Variable Name,Value=Variable Value,Scope = Variable scope

Variable Scopes

post-135549-1227116166_thumb.jpg

مثال بسيط:

 <%--
  Coded by zizo.h
  MyBlog:http://adnanonline.wordpess.com
  E-mail:a-homssi@scs-net.org
  zizo.h@hotmail.com
   --%>
  <%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %><html>
	<head>
	  <title>JSTL Tutorial by zizo.h</title>
	</head>

  <body>10 divided by 0 is
	  <%--An simple Expression --%>
	<c:out value="${10/2}"></c:out>


	<c:set var="name" value="zizo.h" scope="request"/>
	<c:set var="name" value="adnan" scope="page"/>
	From requestScope
   <c:out value="${requestScope.name}"></c:out>


   Without Scope
	<c:out value="${name}"></c:out>

	Using JSP Code
	<%
	out.println(request.getAttribute("name"));
	 %>
  </body></html>

بين لنا المثال الفرق وطبعا بيمشي الحالعل كل شي بس انا اخد هل السكوبات

2- الوسم <c:out>

بياخد السمة value وبتكون فيمتها

إما Expression أو شي جملة و التعابير بتكون معروفية لدى مببرمجي jsp و بالمثال جمعنا رقمين و فينا نعمل كتير شغلات

منرجع لل scope إذا لاحظتوا بالسمة value

 <c:out value="${requestScope.name}"></c:out>

كتبت requestScope.name يعني حددت ال attribute من request

وإذا بدنا ياها من session منكتب sessionScope

بظنها مفهومة و سهلة

3- الوسم <c:if>

هاد مهم و هو متل غيرو بيفحص الشرط وإذا كان صح بنفد العبارات ضمنه يعني ضمن <c:if></c:if>

صيغتها الأساسية هيك كمثال

<c:if test=""></c:if>

وبين الوسمين يوجد ماتريد ان يحدث إذا كان الشرط صحيح

وقيمة test="" بتكون expresion يبدأ ب ${}

مثلا

<c:if test="${'adnan'=='adnan'}">True</c:if>

بهل الحالة لح يطبع true أكيد

أما إذا كان الشرط غلط فأنا لا أعرف شي عن هذه الحالة بس بعرف أنه لن ينفذ الذين بين الوسمين

سوف أعطيك مثال متوسط الحجم بيمشل كل شي اخدنا اليوم

هو مشروع ب MyEclipse سوف اعطيكن يا لوحده بلا workspace

90% سوف لا يعمل انتو شوفوا السورسات وزبطوها إذا حبيتوا و أنا سوف أضع الكود هنا

: لح=سوف عفوا على الكتابة باللهجة الشامية مفردات

أنا عامل شغلة حلوة حبيت فرجيكم ياها وهي RequestDispatcher

ححتلاظوها من خلال ال Servlet .

أول شي في index.jsp يوجد في داخله form يعبأ ثم يرسل إللى servlet ثم تضم بداخله صفحة jsp تمرر لها ال request & response

index.jsp:

<%--
 Coded by zizo.h
 MyBlog:http://adnanonline.wordpess.com
 E-mail:a-homssi@scs-net.org
 zizo.h@hotmail.com
  --%>
 <%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>
 <html>
   <head>
	 <title>JSTL Tutorial</title>
   </head>

   <body>
		 <form method="post" action="servlet/resender">Please enter your name and e-mail<br>
	Name: <input type="text" name="name" /><br>
	E-mail: <input type="text" name="email"/><br>
 <br><input type="checkbox" name="box">Are you ......? 
	 <input type="Submit" />

	 <br />
	 </form>
	 <a href="http://adnanonline.wordpress.com">Adnan Blog</a>
   </body>
 </html>

ثم ال servlet لي لح يكون العنوان URL Pattern تبعها الذي في داخل ملف التوصيف web.xml :

/servlet/resender اسمها test.java

/*
 Coded by zizo.h
 MyBlog:http://adnanonline.wordpess.com
 E-mail:a-homssi@scs-net.org
 zizo.h@hotmail.com
  */
 import java.io.*;
 import java.util.*;

 import javax.servlet.*;
 import javax.servlet.http.*;


 public class test extends HttpServlet {
 HttpServletRequest sender;
	 /**
	  * Constructor of the object.
	  */
	 public test() {
		 super();
	 }

	 /**
	  * Destruction of the servlet. <br>
	  */
	 public void destroy() {
		 super.destroy(); // Just puts "destroy" string in log
		 // Put your code here
	 }

	 /**
	  * The doGet method of the servlet. <br>
	  *
	  * This method is called when a form has its tag value method equals to get.
	  * 
	  * @param request the request send by the client to the server
	  * @param response the response send by the server to the client
	  * @throws ServletException if an error occurred
	  * @throws IOException if an error occurred
	  */

	 public void doPost(HttpServletRequest request, HttpServletResponse response)
			 throws ServletException, IOException {




		 RequestDispatcher dispatcher = 
			   getServletContext().getRequestDispatcher("/reciver.jsp");
			 dispatcher.forward(request, response);
	 }

	 /**
	  * Initialization of the servlet. <br>
	  *
	  * @throws ServletException if an error occurs
	  */
	 public void init() throws ServletException {
		 // Put your code here
	 }

 }

الصفحة النهائية اسمها reciver.jsp

<%--
 Coded by zizo.h
 MyBlog:http://adnanonline.wordpess.com
 E-mail:a-homssi@scs-net.org
 zizo.h@hotmail.com
  --%>
 <%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>
 <html>
 <head><title>JSTL Tutorial</title></head>
   <body>
   A few tests
   <c:out value="${10*5-3/3}"></c:out><%--Result is 49.0--%>
   <br>

   Name:<c:out value="${param.name}"></c:out><br>
   E-mail:<c:out value="${param.email}"></c:out><br>
	 <c:if test="${param.box=='on'}">
	 <input type="checkbox" checked="checked">
	 </c:if>
	 <c:if test="${param.box!='on'}">
	 <input type="checkbox"> 
	 </c:if>
   </body>
 </html>

بالمرفقات يوجد المشروع فيه كل شي و أنا استخدمت MyEclipse

ٍإذا وجدت تشجيع و إقبال عليه يمكن كمل

بوكرا عندي مذاكرة و أنا عم اكتب هل الموضوع ادعولي بالتوفيق

سلام.

JSTL.rar

تم تعديل هذه المشاركة بواسطة zizo.h في 19 نوفمبر 2008 في 20:36

#4

كل التشجيع لك يا زيزو.اتش

اكمل فكلنا بحاجة لدروسك

Theory is when you know something, but it doesn't work. Practice is when something works, but you don't know why. Programmers combine theory and practice: Nothing works and they don't know why

#5

كيف يمكنني الحصول على نسخة MyEclipse

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#6

علاء الصالحي:

MyEclipse هي plugin لل Eclipse بس كبيرة بتغير كل شي و بتساوي كتير شغلات automatic و بتريح و بيجي معها tomcat مضمن داخلي + متصفح

و كم سFrameWroks جاهز, لقيت رابط على rapidshare بس بدك Premium Account

رابط الصفحة

انا عندي ياها بس مابقدر ارفعها بسبب الانترنت بيخلص ال Bandwidth

إذا قدرت بحطوا

سلام.

#7

أظن MyEclipse توزيعة

بمعنى أنها عبارة عن Eclipse مضاف إليه بعض الأشياء

ألف شكر على الوصلة

وننتظر جديدك

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#8

MyEclipse بتنزل فوق eclipse وإذا جبت MyEclipse لتنزلها لوحدها فإنها لم تعمل ويطلب ووجود Eclipse ميشان هيك أنا عبرت عنا كأنها plugin

بس بيعتبروها MyEclipse IDE

#9

حياكم الله جميعاً ..

في الحقيقة انا حملت MyEclipse و Eclipse

الذي وجدته ان الاول يتم تحميله install و الثاني يتم فقط نسخ ملفاته الي اي مسار في النظام

برأي هما مختلفان ... و لهما plugins مختلف ... لا ادري ...

لا اله الا الله .. محمد رسول الله

(* ربِ اجعلني مقيم الصلاة و من ذريتي ، ربنا و تقبل دعـاء *)

يا حيّ يا قيـوم ... برحمتك استغيث ... اصلح لي شأني كله و لا تكلني الى نفسي طرفة عين

#10

انا انصحكم باستخدام ال Net Beans IDE 6 اقوى بكتير من ال اي كليبس و مستقرة اكتر و بيجي فيا

Glass fish Application Server شي خيالي بس اتقل شوي بس فيك تكتب فيا

C++,Ruby,PHP,JAVA, and more شكرا لصاحب الموضوع :)

#11

أقوى لا أظن

مستقرة أكثر لا أظن

أكليبس سابقة في موضوع الأكثر من لغة على فكرة

هل استخدمت اكليبس من قبل؟ لا أظن

ربما الموضوع وجهة نظر أكثر من أي شيء آخر

تحياتي

حزمة المحرك الإصدارة 0.8

أي أحد يجد أني ظلمته فليراسلني

وبإذن الله لو كان له حق سيأخذه

728x90.png

#12

جزاكم الله كل خير

#13

للعلم العضو zizoadn انتقل إلى العضو adnanonline الذي هو أنا -> Adnanonline=zizoadn

هذا الموضوع مغلق.

مواضيع مشابهة