1. مقدمة
1.1. ما هو التحقق من المدخلات؟ لماذا أحتاج لدخول التحقق؟
في المقالة السابقة ، تعلمنا تحويل نوع البيانات. ذكرنا طريقتين لمعالجة بيانات طبقة العرض التقديمي. ذكرنا أيضًا أن بيانات إدخال المستخدم يجب أن تكون نوع التحويل للحصول على البيانات التي نريدها. لذا ، كيف نحدد أن البيانات بعد تحويل النوع هي البيانات التي نريدها؟ إنه اجتياز قليلاً هنا. يمكنك التفكير في الأمر على هذا النحو: يبلغ عمر الرجل البالغ 18 عامًا ، وتريد الحصول على بيانات 18 الآن ، ولكن يقوم المستخدم بإدخال 32 ، ومن الصحيح أيضًا تحويله عبر النوع ، لكن البيانات ليست ما تريد. ماذا يجب أن نفعل في هذا الوقت؟ لذلك التحقق من الإدخال مفيد هنا.
العلاقة بين تحويل النوع والتحقق من الإدخال هي: تحويل النوع هو الشرط المسبق للتحقق من الإدخال. إذا كانت كلا التحويلات نوعًا ما خاطئة ، فلا داعي لإجراء التحقق من الإدخال. ولكن في كثير من الأحيان يتم التحويل والتحقق من الإدخال في نفس الوقت.
هناك نوعان من التحقق من المدخلات:
1. التحقق من العميل ؛
2. التحقق من جانب الخادم. ما نقوم به بشكل أساسي هنا هو التحقق من جانب الخادم (إعادة كتابة طريقة Validatexxx والتحقق من ملف تكوين XML)
1.2. عملية التحقق من إعادة كتابة طريقة validatexxx
1. محول النوع مسؤول عن تحويل نوع معلمات الطلب للسلسلة وتعيين هذه القيم على قيم خاصية الإجراء.
2. قد يحدث استثناء أثناء تنفيذ تحويل النوع. في حالة حدوث استثناء ، سيتم حفظ معلومات الاستثناء تلقائيًا في ActionContext. إن اعتراض ConversionError مسؤول عن تغليفه في Fielderror.
3. استدعاء طريقة Validatexxx () من خلال الانعكاس ، حيث XXX هو اسم الطريقة المقابل لمنطق المعالجة الذي سيعالج طلب المستخدم.
4. اتصل على فئة التحقق من صحة الفئة
5. إذا لم تُظهر الخطوات المذكورة أعلاه إلى Fielderror ، فسيتم استدعاء طريقة المعالجة لمعالجة طلبات المستخدمين في الإجراء. إذا ظهر Fielderror ، فسيتم نقل النظام إلى العرض المحدد في العرض المنطقي للإدخال.
2. التحقق من المدخلات
2.1. هناك طريقتان لدخول التحقق هنا:
1. أعد كتابة طريقة التحقق من صحة أو تخصيص طريقة Validatexxx (حيث XXX هو الاسم الذي تحدده ، وسيتم تنفيذ الطريقة أولاً ، وسيتم تنفيذ طريقة التحقق من الصحة)
2. قم بإنشاء XML جديد للتحقق
2.2. أعد كتابة طريقة التحقق من صحة
في إطار عمل MVC ، يتم توفير جزء التحقق من البيانات الموحدة. يوفر Struts2 طريقة التحقق من صحة هنا. يمكننا إعادة كتابة طريقة التحقق من صحة لإجراء التحقق من الإدخال. ومع ذلك ، هناك نقطتان للتعرف على إعادة كتابة طريقة التحقق من صحة: 1. سيتم تنفيذ طريقة التحقق من صحة قبل طريقة التنفيذ ؛ 2. ستنفذ طريقة التحقق من صحة قواعد التحقق لجميع الإجراءات. من أجل التمييز بين إجراء معين ، يمكننا استخدام طريقة validatexxx.
ملاحظة: الأمثلة التالية هي أمثلة على تحويل النوع المحلي والتحقق من صحة الإدخال.
مثال التحقق من التسجيل البسيط:
قم بإنشاء مستخدم فئة كيان جديد:
مستخدم
إنشاء عرض جديد: register.jsp
<٪@ page language = "java" contentType = "text/html ؛ charset = utf-8" pageencoding = "utf-8" ٪> <٪@ taglib uri = "/struts-tags" prefix = "s" ٪> <! "http://www.w3. Action = "register_test"> المستخدم: <input type = "text" name = "user"> <ber/> كلمة المرور: <إدخال type = "password" name = "user"
قم بإنشاء فئة جديدة للتسجيل لروث الإجراءات Upport
package com.validatexxx ؛ import com.opensymphony.xwork2.Actionsupport ؛ // rewrite validate () و validatexxx أساليب محددة للتحقق/ * * في struts.xml ، ستُطلق على طريقة actionsuptort actionsuptort etualdort ets et et ets etwr structured. المستخدم العام getUser () {return user ؛ } public void setUser (user user) {this.user = user ؛ } // 2 Override public void void () {system.out.println ("طريقة إعادة صحة إعادة صحة") ؛ if (null == user.getPassword () || "" .equals (user.getPassword ()) || null == user.getRepassword () || ". يعود؛ } if (! user.getPassword (). equals (user.getRepassword ())) {// عند وجود البيانات في fielderror ، سيقفز الخادم تلقائيًا إلى العرض المنطقي للإدخال this.addfielderror ("repassword" ، "يجب أن تكون كلمة المرور نفس كلمة المرور") ؛ }} // 1 public void applateTest () {system.out.println ("طريقة التحقق المخصصة: ValityAteSt") ؛ } // 3 string public test () {system.out.println ("test: method") ؛ العودة النجاح }}ملاحظة: الخاصية هنا هي مستخدم ، لذلك يجب كتابة اسم معلمة صفحة JSP الخاصة بك كاسم لمستخدم المثيل ، ثم تحتاج أيضًا إلى إنشاء محول نوع لإرجاع فئة مملوءة بالبيانات
قم بإنشاء struts.xml جديد وتخزينه في ويب/فئات/struts.xml
ملاحظة: يجب تعريف الطريقة هنا بعد طريقة Valudatexxx (). ها هو الاختبار. إذا كنت تستخدم *، فيجب على structs2 أيضًا تكوين تحديد المركز الصارم = "false". يقال أنه نظرًا لأن الإصدار مرتفع للغاية ، فقد تمت زيادة أمنه ، ويجب إضافة كل شيء للاستخدام *
قم بإنشاء فئة جديدة usertypeconverter لروث StrutStypeConverter (إنشاء محول نوع)
package com.validatexxx ؛ import java.util.map ؛ import org.apache.struts2.Util.StrutStypEconverter ؛ // class of type classe class public usertypeconverter strutstypeConverter {override public complictring (map arg0 ، strup اكتب التحويل! ") ؛ مستخدم المستخدم = مستخدم جديد () ؛ user.setUserName (Arg1 [0]) ؛ user.setPassword (Arg1 [1]) ؛ user.setRepassword (arg1 [2]) ؛ إرجاع المستخدم ؛ } Override public string convertToString (map arg0 ، object arg1) {user u = (user) arg1 ؛ إرجاع U.GetUserName ()+"!" ؛ }}ملاحظة: بعد إنشاء المحول من هذا النوع ، تحتاج إلى إنشاء تحويل جديد.
محتويات هذا الملف هي:
الأول هو اسم الخاصية التي تكون في سجلها ، تليها المسار المحدد لمحول النوع.
إنشاء عرض نجاح جديد: Success.jsp
النجاح
إنشاء عرض خطأ جديد: input.jsp
input.jsp
تأثير تنفيذ التعليمات البرمجية الناجحة على النحو التالي:
register.jsp صفحة
الصفحة التي قفزت بنجاح هي: Success.jsp
نتائج اختبار وحدة التحكم هي:
تقفز البيانات إلى UserTyPeconverter لتحويل النوع ، ثم تقفز إلى تسجيل المعالجة ، وتنفيذ طريقة ValidAteSt () ، والتحقق من صحة ، ثم إعادة النجاح ، ثم تنفيذ عرض النتيجة.
دعونا نلقي نظرة على الترتيب الذي يفشل فيه الرمز:
register.jsp صفحة
input.jsp صفحة
تأثير اختبار وحدة التحكم:
في طريقة التحقق من صحة ، رمز المؤلف هو: this.addfielderror (). كما ذكرنا سابقًا ، إذا تمت إضافة خطأ ، فسيساعدنا الخادم تلقائيًا على القفز إلى الواجهة الخاطئة. سيتم إرجاع الإدخال ، ويتم تكوين الإدخال في Struts.xml وسيعود إلى واجهة input.jsp.
2.3. إنشاء XML جديد للتحقق من الإدخال
قم بإنشاء واجهة عرض جديدة: test.jsp
<٪@ page language = "java" contentType = "text/html ؛ charset = utf-8" pageencoding = "utf-8" ٪> <٪@ taglib uri = "/struts-tags" prefix = "s" ٪> <! "http://www.w3. <s: textfield name = "name" label = "name" size = "20" /> <s: textfield name = "Age" label = "Age" size = "20" /> <s: pridt
قم بإنشاء فئة جديدة للموظف لترفيه ACTORISUSUPORT
تستخدم هذه الفئة طريقة التحقق من صحة التجاوز وتكوين XML ، يمكننا اختيار واحد منها للتحقق
package com.validatexxx ؛ استيراد com.opensymphony.xwork2.actionsupport ؛ // استخدم طريقة التحقق () للتحقق ، وهذا هو التحقق من جانب الخادم! موظف الطبقة العامة يمتد الإجراءات Upport {اسم السلسلة الخاصة ؛ عصر INT الخاص ؛ السلسلة العامة getName () {return name ؛ } public void setName (اسم السلسلة) {this.name = name ؛ } public int getage () {return Age ؛ } public void setage (int age) {this.age = age ؛ }. العودة النجاح }/* التحقق باستخدام جانب الخادم: أعد كتابة طريقة التحقق () ؛ . void public void vioud () {system.out.println ( if (name == null || name.trim (). يساوي ("")) {// عند إضافة البيانات إلى هذه الطريقة ، سيقوم الخادم بإرجاع الإدخال ثم القفز إلى صفحة input.jsp. addFielderror ("الاسم" ، "الاسم مطلوب") ؛ } if (العمر <28 || العمر> 65) {addFielderror ("العمر" ، "يجب أن يكون العمر بين 28 و 65") ؛ }}*/}تكوين في Struts.xml:
The Success.jsp و Quot.jsp هنا لا يزال يستخدم ما سبق.
بعد ذلك ، نحتاج إلى إنشاء التحقق من موظف جديد. ملاحظة: -validation.xml ثابتة وغير متغيرة.
المحتويات:
<؟ <message> الاسم مطلوب. </message> </field-validator> </field> <field name = "age"> <field-validator type = "int"> <param name = "min"> 29 </param> <param name = "max"> 64 </param> يجب أن يكون العمر بين 28 و 65 </message>
النقطة الرئيسية: يجب أن يكون الحد الأقصى DTD لهذا الملف ، وإلا فإن خطأ الإرجاع:
خطأ DefaultDispatcherRorHandler حدث أثناء طلب المعالجة: [توقيت الاتصال: Connect - [موقع غير معروف] ، خالية]
بعد ذلك ، نستخدم http: // localhost: 8080/learstruts2/validatejsp/test.jsp للوصول.
تم اختباره بنجاح:
واجهة test.jsp:
النجاح
مثال فشل الاختبار:
واجهة input.jsp:
مثال التوضيح صحيح.
في الواقع ، هناك العديد من المدققين المدمجين في Struts2: مطلوب التحقق من المدقق ، مصلحة السلسلة المطلوبة ، مدقق عدد صحيح ، مدقق التاريخ ، مدقق التعبير ، التحقق من طول الحرف ، التحقق من التعبير العادي ، وما إلى ذلك ، إذا لزم الأمر ، سيشرح المؤلف هذا واحد تلو الآخر.
ما ورد أعلاه هو شرح مفصل للبرنامج التعليمي للتحقق من إدخال بيانات Struts2 الذي قدمه لك المحرر. آمل أن يكون ذلك مفيدًا لك. إذا كان لديك أي أسئلة ، فيرجى ترك رسالة لي وسوف يرد المحرر إليك في الوقت المناسب. شكرا جزيلا لدعمكم لموقع wulin.com!