كيف تحصل على معلمة نموذج في servlet؟ request.getAttribute لا يعمل
-
21-09-2019 - |
سؤال
هل من الممكن أن يكون لديك نفس التحقق من صحة أداء Servlet؟ يبدو أنه قد يتعين على المرء استخدام نوع من العودية هنا ، ولكن عندما أكتب شيء في مربع البريد الإلكتروني والنقر فوق إرسال معلمة البريد الإلكتروني لا يزال فارغًا. بعد النقر فوق إرسال ، يتغير عنوان URL إلى: http://localhost/servlet/EmailServlet?Email=test
تظهر الصفحة Email: null
ومربع النص ، لكنني كنت أتوقع أن يمر بوظيفة التحقق من الصحة (أي لا تكون فارغة). هل من الممكن تحقيق هذا النوع من السلوك العودية؟
public class EmailServlet extends HttpServlet {
public void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException
{
response.setContentType("text/html");
PrintWriter out = response.getWriter();
String theForm =
"<FORM METHOD=\"GET\" ACTION=\"EmailServlet\">\n<INPUT TYPE=\"TEXT\" NAME=\"Email\"><P>\n"
+ "<INPUT TYPE=\"SUBMIT\">\n</FORM>";
String email = (String) request.getAttribute("Email");
// Bogus email validation...
if( email == null )
{
out.println("Email: " + email + "\n" + theForm);
}
else if(emailAddressNotBogous(email))
{
out.println("Thank you!");
}
else
{
out.println("“Invalid input. Please try again:\n" + theForm);
}
out.flush();
}
}
تحديث: كما أشار الإجابة المقبولة ، كان هناك خطأ في الكود. تغيير getAttribute إلى getParameter يعمل على إصلاح "المشكلة" :).
سلسلة البريد الإلكتروني = (سلسلة) طلب.getAttributegetParameter ("البريد الإلكتروني") ؛
المحلول
للحصول على معلمة نموذج في servlet تستخدمها:
request.getParameter("Email");
ونعم يمكنك استخدام نفس servlet ولكن سيكون من الأسهل استخدام اثنين من servlets للقيام بذلك.
نصائح أخرى
يمكن أن يكون لديك طريقة النموذج للنشر ثم تنفيذ طريقة dopost () في servlet الخاص بك. سيتم استدعاء DOGET () لعرض النموذج وسيتم استدعاء DOPOST () لمعالجة تقديم النموذج.
بدلاً من ذلك ، يمكن أن يكون لديك اختبار طريقة DOGET () لوجود أي معلمات. إذا لم يكن هناك أي ، فما عليك سوى عرض النموذج. إذا كان هناك ثم قم بمعالجة التقديم ...