تتم معظم التحقق من بيانات طلب HTTP في نظام B/S على جانب العميل ، وهو أيضًا لاعتبارات البساطة وتجربة المستخدم ، ولكن التحقق من جانب الخادم لا غنى عنه في بعض الأنظمة ذات متطلبات الأمان العالية.
Spring3 يدعم إطار التحقق من JSR-303. JSR-303 عبارة عن مجموعة فرعية في Java EE 6 تسمى BeanValidation. التنفيذ المرجعي الرسمي هو صحة السبات (لا علاقة له بـ Hibernate ORM). يستخدم JSR 303 للتحقق من قيم الحقول في حبوب جافا.
يتحقق المدقق بشكل أساسي من عقلانية البيانات المقدمة من المستخدم ، مثل ما إذا كان فارغًا ، وما إذا كان طول كلمة المرور أكبر من 6 أرقام ، سواء كانت رقمية بحتة ، وما إلى ذلك. فكيف يمكنك استخدام إطار التحقق القوي في SPRING Boot؟
جنبا إلى جنب مع التحقق من الصحة و springboot
1. أضف علامات إلى الفول
جزء من الكود:
يجب إضافة العلامة إلى السمة ، notblank يتم شرح معنى العلامة في نهاية المقالة
مستخدم الفئة العامة {private integer id ؛ notblank (message = "{user.name.notblank}") اسم السلسلة الخاص ؛ اسم المستخدم الخاص بالسلسلة الخاصة ؛2. قم بتشغيل التحقق في وحدة التحكم
أضف العلامة المعتمدة إلى معلمة الطلب في وحدة التحكم لتمكين التحقق
requestMapping (method = requestMethod.post) Create (requestbody validated user user) {return userservice.create (user) ؛ }3. قم بإنشاء ملف تكوين رسالة خطأ جديد ضمن المورد
قم بإنشاء ملف تكوين رسالة جديدة
ملاحظة: يجب أن يكون الاسم "ValidayMessages.Properties" لأن Springboot يقرأ تلقائيًا رسالة الخطأ في ValidentSmessages.Properties في ClassPath.
يتم تشفير ملف التحقق من الصحة. نوع البيانات هو القيمة الرئيسية. مفتاح "user.name.notblank" هو قيمة الرسالة المقابلة في أقواس الحبة الأولى.
القيمة هي رسالة سريعة ، لكنها ASCII. (المحتوى هو "لا يمكن أن يكون الاسم فارغًا")
4. تخصيص معالج الاستثناء للقبض على رسائل الخطأ
عندما يفشل التحقق ، سيتم طرح استثناء. رسالة الاستثناء هي المعلومات المطالبة التي تم تكوينها في التحقق من الصحة. يتم تعريف معالج الاستثناء هنا. التقاط معلومات استثناء (لأنه قد يكون هناك عناصر متعددة تفشل في تمرير التحقق ، يتم التقاطها ومعالجتها بشكل موحد) ورميها على الواجهة الأمامية. (هذا هو المرسل المنفصل بين الأمام والخلفي)
public void methodArgumentNotvalidexception (استثناء EX ، طلب httpservletrequest ، httpservletresponse) {logger.error (":" + commonutil.gethttpclientinfo (request) ، ex) ؛ methodArgumentNotValidexception c = (methodArgumentNotValidexception) ex ؛ قائمة <ObjectError> errors = c.getBindingResult (). getAllerRors () ؛ StringBuffer errormSg = new StringBuffer () ؛ errors.stream (). pouplateExceptionResponse (استجابة ، httpstatus.internal_server_error ، errormsg.toString ()) ؛ } Private void pouplateExceptionResponse (httpservletresponse response ، httpstatus errorcode ، errormessage) {try {response.senderror (errorcode.value () ، errormessage) ؛ } catch (ioException e) {logger.error ("فشل في ملء خطأ الاستجابة" ، e) ؛ }}5. إرفاق بعض معاني العلامات
| حد | يوضح |
|---|---|
| @باطل | الحد فقط من لاغية |
| notnull | يجب ألا يكون الحد فارغًا |
| ASTERTFALSE | يجب أن يكون الحد كاذب |
| ASTERTTRUE | يجب أن يكون الحد صحيح |
| decimalmax (القيمة) | يجب أن يكون الحد رقمًا لا يزيد عن القيمة المحددة. |
| decimalmin (القيمة) | يجب أن يكون الحد هو رقم لا يقل عن القيمة المحددة |
| digits (عدد صحيح ، جزء) | يجب أن يكون الحد عشريًا ، ولا يمكن أن يتجاوز عدد الأرقام في جزء عدد صحيح عدد صحيح ، ولا يمكن أن يتجاوز عدد الأرقام في جزء الكسر الكسر |
| @مستقبل | يجب أن يكون الحد موعدًا مستقبليًا |
| max (القيمة) | يجب أن يكون الحد رقمًا لا يزيد عن القيمة المحددة. |
| min (القيمة) | يجب أن يكون الحد هو رقم لا يقل عن القيمة المحددة |
| @ماضي | يجب أن يكون الحد موعدًا سابقًا |
| pattern (القيمة) | يجب أن يتوافق التقييد للتعبير العادي المحدد |
| size (ماكس ، مين) | يجب أن يكون طول الحرف الحد بين Min و Max |
| @ماضي | تحقق من أن قيمة العنصر (نوع التاريخ) للشرح في وقت مبكر من الوقت الحالي |
| notempty | تحقق من أن قيمة عنصر توضيح التحقق ليست فارغة وليست فارغة (طول السلسلة ليس 0 ، حجم المجموعة ليس 0) |
| notblank | تحقق من أن قيمة عنصر التعليق التوضيحي ليست فارغة (وليس فارغة ، والطول هو 0 بعد إزالة المساحة الأولى). على عكس notempty ، يتم تطبيق notblank فقط على السلاسل وسيقوم بإزالة مسافات السلسلة عند المقارنة. |
| @بريد إلكتروني | تحقق من أن قيمة العنصر للشرح هي البريد الإلكتروني ، ويمكنك أيضًا تحديد تنسيق بريد إلكتروني مخصص من خلال التعبيرات والأعلام العادية. |
مثال
pattern (regexp = "^[a-za-z0-9]+$" ، message = "{account.username.space}") size (min = 3 ، max = 20 ، message = "{account.username.size}")مثال 2
هنا نستخدم التعليقات التوضيحية بشكل رئيسي للتعلم. دعنا نتحدث عن احتياجاتنا أولاً:
لدينا demo.html ، على الصفحة ، هناك مربعان لإدخال اسم العنصر ، ومكتبة إدخال كلمة المرور ، وزر إرسال.
بعد الخضوع للخلفية ، استخدم المدقق للتحقق ، ثم إعادة التوجيه إلى Demo.html إذا كان هناك خطأ ،
نكتب أولاً فئة كيان لتلقي مدخلات المستخدم واستخدام توضيح المدقق للتحقق:
حزمة com.kfit.demo ؛ استيراد org.hibernate.validator.constraints.length ؛ استيراد org.hibernate.validator.constraints.notempty ؛ Demo Class Public {Private Long ID ؛ notempty (message = "لا يمكن أن يكون الاسم فارغًا") اسم السلسلة الخاصة ؛ notempty (message = "لا يمكن أن تكون كلمة المرور فارغة") length (min = 6 ، message = "طول كلمة المرور لا يمكن أن يكون أقل من 6 أرقام") كلمة مرور السلسلة الخاصة ؛ publiclong getid () {return id ؛ } publicvoid setId (longid) {this.id = id ؛ } السلسلة العامة getName () {return name ؛ } public void setName (اسم السلسلة) {this.name = name ؛ } السلسلة العامة getPassword () {return password ؛ } public void setPassword (سلسلة كلمة مرور) {this.password = password ؛ } Override public string toString () {return "demo [id =" + id + "، name =" + name + "، password =" + password + "]" ؛ }}ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.