English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
عندما نتصفح صفحات الويب، نحتاج عادة إلى تقديم معلومات إلى الخادم، وتشغيل برامج الخلفية. يمكن استخدام طرق GET وPOST في متصفح الويب لتقديم بيانات إلى الخادم.
طريقة GET تضيف معلومات الترميز في نهاية عنوان الموقع، ويتم تقسيم عنوان الموقع ومعلومات الترميز باستخدام "?". مثل ما يلي:
http://ar.oldtoolbag.com/hello?key1=value1&key2=value2
طريقة GET هي الطريقة الافتراضية التي يستخدمها متصفح لمرور المعلمات، وننصح بعدم استخدام طريقة GET لبيانات حساسة مثل كلمات المرور.
عند استخدام get، يكون هناك حد لكمية البيانات التي يمكن نقلها (ليس عدد المعلمات)، ويكون الحد الأقصى 1024 بيت.
نحن يمكننا استخدام طريقة POST لنقل معلومات حساسة مثل كلمات المرور، حيث تكون البيانات المقدمة باستخدام طريقة POST غير مرئية.
البيانات المقدمة باستخدام طريقة POST غير مرئية، أما طريقة GET فهي تقوم بمرور البيانات عبر URL (يمكنك النظر إلى شريط العناوين في متصفحك).
يستخدم JSP getParameter() للحصول على المعلمات المرسلة، ويستخدم getInputStream() لمعالجة طلب تدفق البيانات الثنائية من العميل.
getParameter(): استخدام طريقة request.getParameter() للحصول على قيمة معلمات النموذج.
getParameterValues(): الحصول على بيانات مثل checkbox (الأسماء متطابقة ولكن القيم متعددة). استقبال متغيرات قائمة، مثل نوع checkbox
getParameterNames():يمكن لهذه الطريقة الحصول على أسماء جميع المتغيرات، ويعود بـ Enumeration.
getInputStream():استدعاء هذه الطريقة لقراءة تدفق البيانات الثنائية من العميل.
إليك URL بسيط، يستخدم طريقة GET لنقل المعلمات الموجودة في URL:
http://localhost:8080/testjsp/main.jsp?name=基础教程网&url=http://ww.oldtoolbag.com
testjsp هو عنوان المشاريع.
إليك برنامج JSP في ملف main.jsp، يستخدم لمعالجة بيانات النموذج المقدمة من العميل، نستخدم طريقة getParameter() للحصول على البيانات المقدمة:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"% <%@ page import="java.io.*,java.util.*" %> !DOCTYPE html <html> <head> <meta charset="utf-8"> <title>موقع تعليميات الأساسيات (oldtoolbag.com)</title> </head> <body> <h1>استخدام طريقة GET لقراءة البيانات</h1> <ul> <li><p><b>اسم الموقع:</b> <%= request.getParameter("name")%> </p></li> <li><p><b>عنوان الموقع:</b> <%= request.getParameter("url") %> </p></li> </ul> </body> </html>
الآن سنعبر عن طريق متصفح إلى http://localhost:8080/testjsp/main.jsp?name=JSP教程&url=http://ww.oldtoolbag.com لنرى النتيجة التالية:
إليك مثال بسيط على نموذج HTML، يتم من خلاله تقديم بيانات العميل باستخدام طريقة GET إلى main.jsp في الملف:
!DOCTYPE html <html> <head> <meta charset="utf-8"> <title>موقع تعليميات الأساسيات (oldtoolbag.com)</title> </head> <body> <form action="main.jsp" method="GET"> اسم الموقع: <input type="text" name="name"> <br /> عنوان الموقع: <input type="text" name="url" /> <input type="submit" value="إرسال" /> </form> </body> </html>
حفظ الكود HTML أعلاه في ملف test.htm. ضع هذا الملف في مجلد WebContent للمشروع jsp الحالي (في نفس الدليل مع ملف main.jsp).
من خلال زيارة http://localhost:8080/testjsp/test.html إرسال بيانات النموذج إلى ملف main.jsp، كما يظهر في الصورة التالية:
أدخل معلومات "اسم الموقع" و "عنوان الموقع" في نموذجين "اسم الموقع" و "عنوان الموقع"، وأضغط على زر "إرسال"، فإنه سيقوم بإخراج النتائج.
دعونا الآن نستخدم طريقة POST لتحويل بيانات النموذج، وعدل كود ملفي main.jsp وHello.htm كما يلي:
كود ملف main.jsp:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"% <%@ page import="java.io.*,java.util.*" %> !DOCTYPE html <html> <head> <meta charset="utf-8"> <title>موقع تعليميات الأساسيات (oldtoolbag.com)</title> </head> <body> <h1>قراءة البيانات باستخدام طريقة POST</h1> <ul> <li><p><b>اسم الموقع:</b> <% // لحل مشكلة تلوث النصوص الصينية String name = new String((request.getParameter("name")).getBytes("ISO-8859-1"),"UTF-8"); %> <%= name %> </p></li> <li><p><b>عنوان الموقع:</b> <%= request.getParameter("url") %> </p></li> </ul> </body> </html>
نحن نستخدم في الكود new String((request.getParameter("name")).getBytes("ISO-8859-1"),"UTF-8")لتحويل الترميز، منع حدوث تلوث النصوص الصينية.
هذا هو الكود المعدل لـ test.htm:
!DOCTYPE html <html> <head> <meta charset="utf-8"> <title>موقع تعليميات الأساسيات (oldtoolbag.com)</title> </head> <body> <form action="main.jsp" method="POST"> اسم الموقع: <input type="text" name="name"> <br /> عنوان الموقع: <input type="text" name="url" /> <input type="submit" value="إرسال" /> </form> </body> </html>
من خلال زيارة http://localhost:8080/testjsp/test.html إرسال بيانات النموذج إلى ملف main.jsp كما يلي:
يمكن لمربعات الاختيار checkbox نقل بيانات واحدة أو أكثر.
هذا كود HTML بسيط، ويتم حفظه في ملف test.htm:
!DOCTYPE html <html> <head> <meta charset="utf-8"> <title>موقع تعليميات الأساسيات (oldtoolbag.com)</title> </head> <body> <form action="main.jsp" method="POST" target="_blank"> <input type="checkbox" name="google" checked="checked" /> Google <input type="checkbox" name="w3codebox" /> موقع تعليميات الأساسيات <input type="checkbox" name="taobao" checked="checked" /> طواحين <input type="submit" value="اختيار الموقع" /> </form> </body> </html>
كود أعلاه في متصفح يظهر كالتالي:
هذا الكود في ملف main.jsp用于 معالجة بيانات مربعات الاختيار:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"% <%@ page import="java.io.*,java.util.*" %> !DOCTYPE html <html> <head> <meta charset="utf-8"> <title>موقع تعليميات الأساسيات (oldtoolbag.com)</title> </head> <body> <h1>من قراءة البيانات من مربعات الاختيار</h1> <ul> <li><p><b>هل تم اختيار Google؟:</b> <%= request.getParameter("google")%> </p></li> <li><p><b>هل تم اختيار موقع دروس الأساس؟:</b> <%= request.getParameter("w3codebox")%> </p></li> <li><p><b>هل تم اختيار Taobao؟:</b> <%= request.getParameter("taobao")%> </p></li> </ul> </body> </html>
من خلال زيارة http://localhost:8080/testjsp/test.html إرسال بيانات النموذج إلى ملف main.jsp كما يلي:
بعد النقر على "اختيار الموقع":
سنستخدم الآن HttpServletRequest من getParameterNames() لقراءة جميع المعاملات النموذج، يمكن لهذه الطريقة الحصول على أسماء جميع المتغيرات، وتعطي ترتيباً.
بمجرد أن لدينا Enumeration (الترتيب)، يمكننا استدعاء hasMoreElements() لتحديد ما إذا كان هناك عناصر أخرى، واستخدام nextElement() للحصول على اسم كل معامل.
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"% <%@ page import="java.io.*,java.util.*" %> !DOCTYPE html <html> <head> <meta charset="utf-8"> <title>موقع تعليميات الأساسيات (oldtoolbag.com)</title> </head> <body> <h1>قراءة جميع المعاملات النموذج</h1> <table width="100%" border="1" align="center"> <tr bgcolor="#949494"> <th>اسم المعامل</th><th>قيمة المعامل</th> </tr> <% Enumeration paramNames = request.getParameterNames(); while(paramNames.hasMoreElements()) { String paramName = (String)paramNames.nextElement(); out.print("<tr><td>" + paramName + "</td>\n"); String paramValue = request.getParameter(paramName); out.println("<td> " + paramValue + "</td></tr>\n"); } %> </table> </body> </html>
هذا هو محتوى ملف test.htm:
!DOCTYPE html <html> <head> <meta charset="utf-8"> <title>موقع تعليميات الأساسيات (oldtoolbag.com)</title> </head> <body> <form action="main.jsp" method="POST" target="_blank"> <input type="checkbox" name="google" checked="checked" /> Google <input type="checkbox" name="w3codebox" /> موقع تعليميات الأساسيات <input type="checkbox" name="taobao" checked="checked" /> Taobao <input type="submit" value="اختيار الموقع" /> </form> </body> </html>
الآن دعونا نزور ملف test.htm لطرح البيانات ونرى النتيجة كما يلي:
من خلال زيارة http://localhost:8080/testjsp/test.html إرسال بيانات النموذج إلى ملف main.jsp كما يلي:
بعد النقر على "اختيار الموقع":
يمكنك محاولة استخدام الشيفرة في JSP أعلاه لقراءة أشياء أخرى مثل مربعات النص، أزرار التحديد أو قوائم التراجيح وما إلى ذلك من أنواع البيانات المختلفة.