1. ไคลเอนต์เริ่มต้นคำขอไปยังคอนเทนเนอร์ servlet (Tomcat);
2. คำขอนี้ผ่านชุดของตัวกรองแล้วเรียกว่า FilterDispatcher;
3. FilterDispatcher ขอให้ ActionMapper ตัดสินใจว่าคำขอต้องการเรียกการกระทำที่แน่นอนหรือไม่
4. หาก ActionMapper ตัดสินใจเรียกการกระทำ FilterDispatcher ส่งคำขอการประมวลผลไปยัง ActionProxy ActionPro ถามไฟล์การกำหนดค่าเฟรมเวิร์กตาม configurationManager และค้นหาคลาสแอ็คชั่นที่ต้องเรียกโดยทั่วไปการอ่าน struts.xml;
5. ActionProxy สร้างอินสแตนซ์ของ ActionInvocation อินสแตนซ์ ActionInvocation เรียกใช้โดยใช้รูปแบบที่มีชื่อ ก่อนและหลังกระบวนการเรียกการเรียกร้องการเรียกของ interceptor ที่เกี่ยวข้องนั้นเกี่ยวข้อง
6. เมื่อการดำเนินการถูกดำเนินการแล้ว ActionInvocation จะพบผลลัพธ์ผลตอบแทนที่สอดคล้องกันตามการกำหนดค่าใน struts.xml
ตัวอย่างเช่นรหัส:
หลังจาก struts2 ได้รับคำขอ. การกระทำมันจะตัดสินใจว่าองค์ประกอบตรรกะทางธุรกิจใดที่จะโทรตามบางส่วน;
การกระทำทั้งหมดในแอปพลิเคชัน struts2 ถูกกำหนดใน struts.xml;
อินสแตนซ์การดำเนินการที่ใช้โดย Struts2 เพื่อจัดการคำขอของผู้ใช้ไม่ใช่ตัวควบคุมธุรกิจที่ผู้ใช้ดำเนินการ แต่เป็นพร็อกซีแอ็คชั่นเนื่องจากคอนโทรลเลอร์บริการที่ใช้งานโดยผู้ใช้ไม่ได้เชื่อมต่อกับ Servletapi และเห็นได้ชัดว่าไม่สามารถจัดการคำขอของผู้ใช้ได้
<html> <head> <title> ความสำเร็จ </title> </head> <body> <form action = "hello.action" method = "post"> ชื่อผู้ใช้: <อินพุต type = "text" name = "name"> </br> รหัสผ่าน: <อินพุตประเภท = "รหัสผ่าน" ชื่อ = "ส่งผ่าน"> </br> <
ตัวอย่างเช่น hello.action ของแบบฟอร์มด้านบนคุณสมบัติการดำเนินการนี้ไม่ใช่ servlet ธรรมดาหรือหน้า JSP แบบไดนามิก เมื่อแบบฟอร์มถูกส่งไปยัง Hello.Action ตัวกรอง FilterDispatcher ของ Struts2 จะทำงานและส่งต่อคำขอของผู้ใช้ไปยังการกระทำที่เกี่ยวข้อง
โปรดทราบว่า struts2 การกระทำสกัดกั้นคำขอทั้งหมดด้วยคำต่อท้าย. การกระทำโดยค่าเริ่มต้น หากเราต้องการส่งแบบฟอร์มเพื่อดำเนินการเพื่อการประมวลผลคุณลักษณะการกระทำของฟอร์มควรตั้งค่าเป็นรูปแบบของการกระทำ
คลาสคอนโทรลเลอร์
คลาสสาธารณะ helloaction {ชื่อสตริงส่วนตัว; Private String Pass; โมฆะสาธารณะ setName (ชื่อสตริง) {this.name = name;} โมฆะสาธารณะ setpass (พาสสตริง) {this.pass = pass;} สตริงสาธารณะดำเนินการ () {ถ้า ("yang" .equals (ชื่อ) && "1234"หลังจากการดำเนินการก่อนหน้านี้เสร็จสิ้นการส่งต่อหน้าจะดำเนินการเท่านั้นและสถานะของผู้ใช้จะไม่ถูกติดตาม เมื่อผู้ใช้เข้าสู่ระบบเราจำเป็นต้องเพิ่มชื่อผู้ใช้ของผู้ใช้เป็นข้อมูลสถานะของ httpsession
ในการเข้าถึงอินสแตนซ์ HTTPSESSION, struts2 ให้คลาส ActionContext ซึ่งให้วิธีการ getSession () แต่ค่าการส่งคืนของวิธีนี้ไม่ใช่ httpsession () แต่ MAP () แต่การสกัดกั้นของ struts2 จะรับผิดชอบการสลับระหว่างเซสชัน () และ httpsession ()
เพื่อตรวจสอบว่าแอตทริบิวต์เซสชันที่เราตั้งไว้นั้นสำเร็จหรือไม่เราสามารถตั้งค่าอินเตอร์เฟสหลังจากความสำเร็จ
<html> <head> <base href = "<%= basepath%>" rel = "external nofollow"> <title> ความสำเร็จ </title> </head> <body> ยินดีต้อนรับ $ {SessionsCope.user}ใช้ไวยากรณ์นิพจน์ JSP2.0 เพื่อส่งออกแอตทริบิวต์ผู้ใช้ในเซสชัน HTTP
Action Tool Class Integration Actionsupport
คลาส ActionSupport เป็นคลาสเครื่องมือและได้ใช้งานอินเตอร์เฟสการกระทำ นอกจากนี้ยังใช้อินเทอร์เฟซ ValidateableZ โดยให้ฟังก์ชั่นการตรวจสอบข้อมูล
เพื่อเพิ่มฟังก์ชั่นการตรวจสอบของข้อมูลอินพุตให้เพิ่มวิธีการตรวจสอบความถูกต้องของการเขียนซ้ำในการดำเนินการ
Void Public Varidate () {ถ้า (getName () == null || getName (). trim (). equals (")) {addFielderror (" ชื่อ ", getText (" name.Required "));} ถ้า (getPass () == null || getPass () getText ("pass.Required"));}}วิธีการตรวจสอบความถูกต้องที่เขียนใหม่ที่เพิ่มขึ้นด้านบนจะถูกดำเนินการก่อนที่วิธีการของระบบจะดำเนินการ () หาก Fielderror ของคลาส Action มีข้อผิดพลาดในการตรวจสอบข้อมูลหลังจากดำเนินการวิธีการนี้คำขอจะถูกส่งต่อไปยังมุมมองเชิงตรรกะอินพุตดังนั้นคุณต้องเพิ่มชื่อมุมมองเชิงตรรกะอินพุตใน struts.xml เพื่อให้มันข้ามไปยังหน้าเข้าสู่ระบบ
ข้อเสียของวิธีการตรวจสอบนี้คือต้องใช้วิธีการตรวจสอบใหม่จำนวนมากดังนั้นคุณสามารถใช้กรอบการตรวจสอบของ struts2
<? XML เวอร์ชัน = "1.0" การเข้ารหัส = "UTF-8"?> <! Doctype Validators สาธารณะ "-// openSymphony Group // Xwork Validator 1.0.3 // en" "http://www.opensymphony.com/xwork/xwork NAME = "NAME"> <FIELD-VALIDATOR TYPE = "จำเป็นต้องใช้"> <message key = "name.Required"/> </field-validator> </field> <!-ตรวจสอบรูปแบบผ่าน-> <field name = "pass"> <field-validator type =
สรุป
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้เกี่ยวกับกระบวนการของ Struts2 และชุดของการวิเคราะห์รหัสความรู้ที่เกี่ยวข้อง ฉันหวังว่ามันจะเป็นประโยชน์กับทุกคน เพื่อนที่สนใจสามารถอ้างถึงหัวข้ออื่น ๆ ที่เกี่ยวข้องในเว็บไซต์นี้ต่อไป หากมีข้อบกพร่องใด ๆ โปรดฝากข้อความไว้เพื่อชี้ให้เห็น ขอบคุณเพื่อนที่ให้การสนับสนุนเว็บไซต์นี้!