بريمج:
بالطبع، في servlets، تحدث القفزات بشكل عام في doGet وdoPost وطرق أخرى.
1) طريقة إعادة التوجيه
Response.sendRedirect("/a.jsp");
المسار إلى الصفحة هو مسار نسبي. يمكن لـ sendRedirect الانتقال إلى أي صفحة، ولا يقتصر بالضرورة على تطبيق الويب هذا، مثل:
Response.sendRedirect("//www.VeVB.COM");
يتغير شريط عنوان المتصفح بعد القفزة.
إذا كنت تريد تمرير القيمة بهذه الطريقة، فيمكنك فقط إحضار المعلمة في عنوان URL أو وضعها في الجلسة. ولا يمكنك استخدام request.setAttribute لتمريرها.
2) طريقة الأمام
RequestDispatcher المرسل = request.getRequestDispatcher("/a.jsp");
المرسل .forward(طلب، استجابة)؛
المسار إلى الصفحة هو مسار نسبي. لا يمكن للطريقة الأمامية الانتقال إلا إلى الصفحات الموجودة في تطبيق الويب هذا.
لن يتغير شريط عنوان المتصفح بعد القفزة.
باستخدام هذه الطريقة للانتقال، يمكنك استخدام ثلاث طرق لتمرير القيم: المعلمة، الجلسة، request.setAttribute في عنوان URL
جسب:
1) استجابة.sendRedirect();
نفس طريقة استجابة servlet.sendRedirect().
Out.flush() غير مسموح به قبل هذا البيان، إذا كان موجودًا، فسيحدث استثناء:
java.lang.IllegalStateException: لا يمكن إرسالRedirect() بعد إرسال البيانات إلى العميل.
في com.caucho.server.connection.AbstractHttpResponse.sendRedirect(AbstractHttpResponse.java:558)
...
يتغير شريط عنوان المتصفح بعد القفزة
إذا كنت ترغب في الانتقال إلى مضيف مختلف، بعد القفزة، سيستمر تنفيذ العبارات التالية لهذا البيان، كما لو تم فتح موضوع جديد، ولكن عملية الاستجابة لا معنى لها؛
إذا كنت تريد الانتقال إلى نفس المضيف، فلن يحدث الانتقال حتى يتم تنفيذ العبارات التالية لهذا البيان؛
2) Response.setHeader("الموقع"،"");
Out.flush() غير مسموح به قبل هذا البيان، إذا كان موجودًا، فلن تقفز الصفحة.
يتغير شريط عنوان المتصفح بعد القفزة
لن تحدث القفزة حتى يتم تنفيذ العبارات التالية لهذا البيان.