คำนำ
การตรวจสอบข้อมูลเป็นงานที่เกือบทุกแอปพลิเคชันต้องทำ ข้อมูลที่ป้อนโดยผู้ใช้จะถูกส่งไปยังเซิร์ฟเวอร์ พระเจ้ารู้ว่าข้อมูลที่ผู้ใช้ป้อนนั้นถูกกฎหมายและไม่ว่าจะเป็นอันตรายหรือไม่ ดังนั้นระบบแอปพลิเคชันที่มีประสิทธิภาพจะต้องตรวจสอบอินพุตของผู้ใช้บล็อกอินพุตที่ผิดกฎหมายนอกแอปพลิเคชันและป้องกันไม่ให้อินพุตที่ผิดกฎหมายเหล่านี้เข้าสู่ระบบเพื่อให้มั่นใจถึงความเสถียรและความปลอดภัยของระบบ
เราทุกคนรู้ว่าเพื่อประสบการณ์การใช้งานที่ดีขึ้นและประสิทธิภาพที่สูงขึ้นเว็บแอปพลิเคชันปัจจุบันมีการตรวจสอบข้อมูลสองรายการต่อไปนี้:
การตรวจสอบข้อมูลไคลเอนต์ส่วนใหญ่ทำผ่านรหัส JavaScript; การตรวจสอบข้อมูลฝั่งเซิร์ฟเวอร์เป็นบรรทัดสุดท้ายของการป้องกันสำหรับแอปพลิเคชันทั้งหมดเพื่อบล็อกข้อมูลที่ผิดกฎหมายและส่วนใหญ่จะถูกนำไปใช้ผ่านการเขียนโปรแกรมในแอปพลิเคชัน
เพื่อลดภาระงานของนักพัฒนาและปรับปรุงประสิทธิภาพการทำงานกรอบ Struts2 ได้ใช้ความพยายามอย่างมากในการตรวจสอบข้อมูล ดังนั้น Struts2 จะทำการตรวจสอบข้อมูลให้เสร็จสมบูรณ์ได้อย่างไร (เนื่องจากความสามารถในการตรวจสอบลูกค้าของเฟรมเวิร์ก Struts2 นั้นอ่อนแอจึงไม่ได้รับการสรุปบทความนี้ส่วนใหญ่สรุปฟังก์ชั่นการตรวจสอบข้อมูลฝั่งเซิร์ฟเวอร์ของเฟรมเวิร์ก Struts2)
เขียนไฟล์กฎการยืนยัน
เราทุกคนรู้ว่าการตรวจสอบข้อมูลเป็นรหัสที่ยุ่งยากทั้งหมด เพื่อให้ได้จากรหัสที่ยุ่งยากเหล่านี้เฟรมเวิร์ก Struts2 ให้การตรวจสอบข้อมูลตามไฟล์การกำหนดค่า ต้องมีการเขียนไฟล์กฎการตรวจสอบเท่านั้น ไฟล์กฎการตรวจสอบระบุว่ากฎใดที่ควรจะพบกับแต่ละฟอร์ม
มาพูดคุยเกี่ยวกับการตรวจสอบอินพุตของกรอบ Struts2 ผ่านตัวอย่างการสาธิต
หน้าแผนกต้อนรับ:
<body> <form action = "เข้าสู่ระบบ" method = "post"> ชื่อผู้ใช้: <อินพุต type = "text" name = "name" /> <s: fielderror fieldName = "name" /> <br> รหัสผ่าน: <input type = "password" name = "Password" /> <s: fielderRor FieldName = "Age" /> <br> วันเกิด: <อินพุต type = "text" name = "วันเกิด" /> <s: fielderror fieldName = "วันเกิด" /> <br> <อินพุตประเภท = "ส่ง" value = "ส่ง" /> </form> </body>
รหัสการประมวลผลการดำเนินการพื้นหลัง:
การเข้าสู่ระบบระดับสาธารณะขยายการกระทำที่มีชื่อ {ชื่อสตริงส่วนตัว; รหัสผ่านสตริงส่วนตัว อายุ int ส่วนตัว; วันเกิดส่วนตัววันเกิด; เคล็ดลับสตริงส่วนตัว; โมฆะสาธารณะ setName (ชื่อสตริง) {this.name = name; } สตริงสาธารณะ getName () {ชื่อคืน; } โมฆะสาธารณะ setPassword (รหัสผ่านสตริง) {this.password = รหัสผ่าน; } สตริงสาธารณะ getPassword () {ส่งคืนรหัสผ่าน; } การตั้งค่าโมฆะสาธารณะ (อายุ int) {this.age = อายุ; } public int getage () {return Age; } โมฆะสาธารณะ setBirthday (วันเกิดวันที่) {this.birthday = วันเกิด; } วันที่สาธารณะ getBirthday () {ส่งคืนวันเกิด; } โมฆะสาธารณะ settip (ปลายสตริง) {this.tip = tip; } สตริงสาธารณะ getTip () {tip return; } String สาธารณะ execute () พ่นข้อยกเว้น {// การดำเนินการง่ายขึ้นที่นี่ กลับมาประสบความสำเร็จ -ผ่านรหัสการดำเนินการด้านบนเราจะเห็นว่าฉันไม่ได้เพิ่มรหัสการตรวจสอบฟิลด์ใด ๆ แต่เราต้องเขียนไฟล์การยืนยันดังต่อไปนี้:
<? XML เวอร์ชัน = "1.0" การเข้ารหัส = "UTF-8"?> <!-ระบุข้อมูล DTD ของไฟล์การกำหนดค่าการตรวจสอบ-> <! Doctype Validators สาธารณะ "-// apache struts // xwork validator 1.0.2 // en" "http://struts.apache.org/dt ตรวจสอบองค์ประกอบรูทของไฟล์การตรวจสอบ-> <feridators> <!-ตรวจสอบแอตทริบิวต์ชื่อของไฟล์การกำหนดค่าการตรวจสอบ-> <ชื่อฟิลด์ = "ชื่อ"> <!-ระบุแอตทริบิวต์ชื่อจะต้องตรงตามกฎที่ต้องการ-> ต้องตรงกับนิพจน์ทั่วไป-> <field-validator type = "regex"> <param name = "regexexpression"> <! [cdata [(/w {4,25})]]> </param> <ข้อความ> ชื่อผู้ใช้คุณสามารถป้อนตัวอักษรและตัวเลขและความยาว <field name = "รหัสผ่าน"> <field-validator type = "จำเป็นต้องใช้"> <param name = "trim"> true </param> <sessions> ต้องป้อนรหัสผ่าน </message> </field-validator> <field-validator type = "regex"> <param name = "regexexpression" ชื่อผู้ใช้ที่คุณป้อนสามารถเป็นตัวอักษรและตัวเลขเท่านั้นและความยาวจะต้องอยู่ระหว่าง 4 ถึง 25 </session> </field-validator> </field> <!-ตรวจสอบแอตทริบิวต์อายุของการกระทำ-> <field name = "อายุ"> <field-validator type = "int"> <param name = "min"> 1 </param> </field-validator> </field> <!-ตรวจสอบคุณสมบัติวันเกิดของการกระทำ-> <field name = "วันเกิด"> <field-validator type = "วันที่"> <param name = "min"> 1900-01-01 </param> <param = "Max"> 2050-02-21 </field-validator> </field> </dalidators>กฎการตรวจสอบไฟล์ของ struts2 นั้นแตกต่างจากวิธีการออกแบบไฟล์การตรวจสอบของ struts1 การกระทำแต่ละครั้งใน struts2 มีไฟล์การตรวจสอบดังนั้นชื่อไฟล์ของไฟล์การตรวจสอบควรปฏิบัติตามกฎต่อไปนี้:
<ชื่อการกระทำ> -validation.xml
ชื่อการกระทำก่อนหน้านี้สามารถเปลี่ยนแปลงได้ส่วนที่ตามมา -validation.xml ได้รับการแก้ไขเสมอและควรบันทึกไฟล์การตรวจสอบในเส้นทางเดียวกันกับไฟล์คลาสการกระทำ
คล้ายกับความล้มเหลวในการแปลงประเภทเมื่อการตรวจสอบอินพุตล้มเหลว struts2 จะส่งคืนผลลัพธ์ที่ชื่อว่า "อินพุต" โดยอัตโนมัติดังนั้นจึงจำเป็นต้องกำหนดค่าผลลัพธ์ที่ชื่อว่า "อินพุต" ในไฟล์ struts.xml
ข้อมูลแจ้งความเป็นสากล
ในกรณีที่การตรวจสอบความล้มเหลวผู้ใช้จะต้องได้รับแจ้งสำหรับข้อความแสดงข้อผิดพลาด ตอนนี้ปัญหาเกิดขึ้น ในสภาพแวดล้อมหลายภาษาวิธีการแจ้งข้อมูลพร้อมท์ภาษาที่สอดคล้องกันอย่างถูกต้อง? เป็นไปไม่ได้ที่จะเขียนโดยตรงในไฟล์การตรวจสอบดังกล่าวข้างต้น สำหรับข้อมูลพรอมต์สากลระบุแอตทริบิวต์คีย์สำหรับองค์ประกอบข้อความซึ่งระบุคีย์ที่สอดคล้องกับข้อมูลพรอมต์สากล
ตัวอย่างเช่นไฟล์การตรวจสอบข้างต้นสามารถเขียนได้อย่างคร่าวๆเช่นนี้:
<!-ตรวจสอบแอตทริบิวต์ชื่อของการกระทำ-> <field name = "ชื่อ"> <!-แอตทริบิวต์ชื่อที่ระบุจะต้องตรงตามกฎที่ต้องการ-> <field-validator type = "requiredString"> <param name = "trim"> true </param> <message = "name. type = "regex"> <param name = "regexexpression"> <! [cdata [(/w {4,25})]]> </param> <message key = "name.regex"/> </field-validator> </field>หมากรุกในตัว
ในไฟล์การยืนยันด้านบนคุณสามารถเห็นคำสั่งดังกล่าว:
<field-validator type = "Eledentrystring"> <field-validator type = "regex"> ...
ค่าแอตทริบิวต์ประเภทที่นี่คือตัวตรวจสอบ มีอุปกรณ์ตรวจสอบในตัวจำนวนมากที่ให้ไว้ในกรอบ Struts2 อุปกรณ์ตรวจสอบในตัวเหล่านี้สามารถตอบสนองความต้องการการตรวจสอบของแอปพลิเคชันส่วนใหญ่ เราจำเป็นต้องใช้อุปกรณ์ตรวจสอบเหล่านี้เท่านั้น
เราสามารถใช้เครื่องมือการบีบอัดเพื่อเปิดไฟล์ xwork-core-2.3.24.1.jar ภายใต้ XWORK-CORE-2.3.24.1.JAR/COM/OPENSYMPHONY/XWORK2/VARIDATOR/VARIDATORS เราสามารถค้นหาไฟล์ default.xml ได้ ไฟล์นี้เป็นไฟล์ลงทะเบียนอุปกรณ์ตรวจสอบเริ่มต้นสำหรับ struts2 และเนื้อหามีดังนี้:
<? XML เวอร์ชัน = "1.0" การเข้ารหัส = "UTF-8"?> <! Doctype การตรวจสอบความถูกต้องสาธารณะ "-// apache struts // xwork การตรวจสอบความถูกต้องคำจำกัดความ 1.0 // en" "http://struts.apache.org/dtds/xwork-validator-definition-1.0.0.dtd <!-ตัวตรวจสอบที่จำเป็น-> <jalidator name = "ต้องการ"/> <validator name = "ต้องการ"/> <!-ตัวตรวจสอบจำนวนเต็ม-> <validator name = "int"/> <! name = "double"/> <!-date verifier-> <jalidator name = "วันที่"/> <!-ตัวตรวจสอบนิพจน์-> <validator name = "นิพจน์"/> <! name = "ผู้เยี่ยมชม"/> <validator name = "ผู้เยี่ยมชม"/> <validator name = "การแปลง"/> <quidator name = "การแปลง"/> <quidator name = "stringLength"/> <validator name = "regex"/>
เกี่ยวกับการใช้งานเฉพาะของอุปกรณ์ตรวจสอบเหล่านี้ฉันจะไม่ให้ตัวอย่างที่นี่
สรุป
บทความนี้สรุปอุปกรณ์ตรวจสอบในกรอบ Struts2 โดยย่อ พื้นฐานสำหรับอุปกรณ์ตรวจสอบที่กล่าวถึงที่นี่คือวิธีการใช้งาน สิ่งที่สำคัญที่สุดคือการควบคุมความคิดของอุปกรณ์ตรวจสอบ Struts2 และทำให้เสร็จสมบูรณ์ผ่านการกำหนดค่า วิธีนี้คุ้มค่าที่จะเรียนรู้จาก ในการเรียนรู้กรอบอื่น ๆ เราจะพบวิธีนี้ด้วย ศึกษาความเจ็บปวดและความสุข
โอเคข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่าเนื้อหาของบทความนี้จะมีค่าอ้างอิงบางอย่างสำหรับการศึกษาหรือที่ทำงานของทุกคน หากคุณมีคำถามใด ๆ คุณสามารถฝากข้อความไว้เพื่อสื่อสาร ขอบคุณสำหรับการสนับสนุน Wulin.com