องค์ประกอบหลักของ SpringMVC
dispatcherservlet -> คอนโทรลเลอร์, คำขอรายการ
Handermapping-> Controller, ขอแจกจ่าย
คอนโทรลเลอร์ ――> คอนโทรลเลอร์กระบวนการประมวลผลคำขอ
ModelAndView ---> Model, ห่อหุ้มผลการประมวลผลทางธุรกิจและมุมมอง
ViewResolver ---> ดูดูตัวประมวลผลการแสดงผล
กระบวนการประมวลผล
เบราว์เซอร์ออกคำขอให้ spting และส่งคำขอไปยังคอนโทรลเลอร์ front-end dispatcherservlet สำหรับการประมวลผล
คอนโทรลเลอร์ค้นหาส่วนประกอบคอนโทรลเลอร์ที่สอดคล้องกันเพื่อจัดการกับคำขอผ่าน Handermapping
ดำเนินการวิธีการที่ตกลงกันโดยส่วนประกอบคอนโทรลเลอร์เพื่อประมวลผลคำขอและเรียกใช้ส่วนประกอบโมเดลเพื่อดำเนินการประมวลผลทางธุรกิจในวิธีการประชุม วิธีการประชุมสามารถส่งคืนวัตถุ ModelandView ซึ่งห่อหุ้มข้อมูลผลลัพธ์การประมวลผลทางธุรกิจและข้อมูลชื่อมุมมอง
หลังจากคอนโทรลเลอร์ได้รับ ModelandView จะเรียกองค์ประกอบ ViewResolver ให้ค้นหามุมมอง (JSP) และส่งผ่านข้อมูลเพื่อสร้างผลลัพธ์อินเตอร์เฟสการตอบสนอง
การกำหนดค่าความคิดเห็นมีข้อได้เปรียบมากมายมากกว่าการกำหนดค่า XML:
มันสามารถใช้ประโยชน์จากกลไกการสะท้อนกลับของ Java อย่างเต็มที่เพื่อรับข้อมูลโครงสร้างคลาสซึ่งสามารถลดการกำหนดค่าได้อย่างมีประสิทธิภาพ หากคุณใช้คำอธิบายประกอบ JPA เพื่อกำหนดค่าการแมป ORM เราไม่จำเป็นต้องระบุชื่อแอตทริบิวต์พิมพ์และข้อมูลอื่น ๆ ของ PO หากฟิลด์ตารางความสัมพันธ์และชื่อและประเภทแอตทริบิวต์ PO เหมือนกันคุณไม่จำเป็นต้องเขียนข้อมูลการแมปแอตทริบิวต์งาน - เนื่องจากข้อมูลนี้สามารถรับได้ผ่านกลไกการสะท้อน Java
ความคิดเห็นและรหัส Java อยู่ในไฟล์เดียวกันในขณะที่การกำหนดค่า XML ใช้ไฟล์การกำหนดค่าอิสระ ข้อมูลการกำหนดค่าส่วนใหญ่จะไม่ถูกปรับหลังจากพัฒนาโปรแกรม หากข้อมูลการกำหนดค่าและรหัส Java ถูกนำมารวมกันจะช่วยเพิ่มการทำงานร่วมกันของโปรแกรม การใช้ไฟล์การกำหนดค่า XML อิสระโปรแกรมเมอร์มักจะต้องสลับระหว่างไฟล์โปรแกรมและไฟล์การกำหนดค่าเมื่อเขียนฟังก์ชั่น ความไม่สอดคล้องกันในการคิดนี้จะช่วยลดประสิทธิภาพการพัฒนา
ส่วนประกอบคอนโทรลเลอร์
ส่วนประกอบคอนโทรลเลอร์มีหน้าที่ในการดำเนินการประมวลผลทางธุรกิจที่เฉพาะเจาะจงและจำเป็นต้องใช้อินเทอร์เฟซคอนโทรลเลอร์และวิธีการที่ตกลงกันระหว่างการเขียน
ส่วนประกอบ ModelAndView
ส่วนประกอบการประชุมคอนโทรลเลอร์จะส่งคืนวัตถุ ModelAndView ซึ่งห่อหุ้มข้อมูลผลลัพธ์การประมวลผลทางธุรกิจและข้อมูลการดู
ตัวสร้าง ModelandView มีดังนี้:
-ModelandView (StringViewName)
-ModelandView (StringViewName, MapModel)
โดยที่ ViewName เป็นชื่อของหน้า JSP และข้อมูลของโมเดลจะถูกเก็บไว้ในแอตทริบิวต์คำขอ
ส่วนประกอบ Handermapping
ผ่านส่วนประกอบ handermapping คอนโทรลเลอร์ DispatchERServlet สามารถแมปคำขอ HTTP กับส่วนประกอบคอนโทรลเลอร์
-SimpleUserHandLerMapping รักษาความสัมพันธ์ HTTP และความสัมพันธ์การแมปคอนโทรลเลอร์ (MAP) เพื่อโทรตัวควบคุมตามความสัมพันธ์ในการติดต่อทางจดหมาย
simpleuserhandlermapping
<bean> <property name = "การแมป"> <props> <prop key = "/login.form"> loginController </prop> <props> </prop key = "/hello.form"> hellocontroller </prop>
hellocontroller ในแท็ก SimpleuserHandlermapping ด้านบนสอดคล้องกับส่วนประกอบที่ ID คือ Hellocontroller ในแท็กถั่วด้านล่าง
requestmappinghandlermapping
resquestmappinghandleradapter
ใช้คำอธิบายประกอบ @ResQuestMapping บนคลาสคอนโทรลเลอร์และวิธีการเพื่อระบุคำขอ HTTP ไคลเอ็นต์ที่เกี่ยวข้อง
ส่วนประกอบ ViewResolver
ส่วนประกอบคอนโทรลเลอร์ทั้งหมดส่งคืนอินสแตนซ์ ModelandView, ห่อหุ้มชื่อมุมมอง, มุมมองในฤดูใบไม้ผลิถูกระบุด้วยชื่อและมุมมอง Viewver ViewResolver แก้ไขมุมมองผ่านชื่อ
InternalResourceViewResolver Wraps Servlets และ JSPS โดยใช้ตัวอย่าง:
<bean id = "jspviewResolver"> <property name = "prefix" value = "/web-inf/jsp/"/> <property name = "suffix" value = ". jsp"/> </ebean>
ตัวอย่างเช่น: ชื่อมุมมอง Hello สามารถแมปกับ /web-inf/hello.jsp ผ่านการกำหนดค่าข้างต้น
คำอธิบายประกอบคอนโทรลเลอร์
โดยทั่วไปเราใช้คำอธิบายประกอบ @Controller เพื่อประกาศส่วนประกอบคอนโทรลเลอร์ซึ่งทำให้มีความยืดหยุ่นมากขึ้นและคุณไม่จำเป็นต้องใช้อินเทอร์เฟซคอนโทรลเลอร์เหมือนก่อน
@ControllerPublic คลาส HelloController {สตริงสาธารณะ execute () {return "hello"; -มีข้อกำหนดเบื้องต้นสำหรับการใช้คำอธิบายประกอบข้างต้นซึ่งคือการเปิดใช้งานการสแกนคำอธิบายประกอบ:
<บริบท: Component-Scan base-package = "org.test.controller">
แพคเกจฐานเขียนแพ็คเกจที่ส่วนประกอบคอนโทรลเลอร์ตั้งอยู่
การเพิ่มคำอธิบายประกอบใหม่
ResquestMapping ระบุว่าการร้องขอคลาสหรือวิธีนี้สอดคล้องกับ
@controller @resquestmapping ("/test1") ชั้นเรียนสาธารณะ hellocontroller {@ResQuestMapping ("/hello.form") สตริงสาธารณะ helloexecute () {return "hello"; -หากคุณต้องการใช้ requestmapping คุณจะต้องกำหนดส่วนประกอบถั่วสองชิ้นในไฟล์การกำหนดค่า Spring XML File RequestMappingHandLermapping (ก่อนคำจำกัดความของคลาส) และ RequestMappingAdapter (ก่อนนิยามวิธีการ) ตัวอย่างเช่น (จำเป็นต้องกำหนดไว้ในสปริงเวอร์ชัน 3.1):
<ถั่ว/> <ถั่ว/>
ไม่จำเป็นต้องกำหนดเวอร์ชันสปริง 3.2
<MVC: คำอธิบายประกอบที่ขับเคลื่อนด้วย/>
สรุป
ข้างต้นเป็นการแนะนำสั้น ๆ ของหมายเหตุเกี่ยวกับฤดูใบไม้ผลิในบทความนี้และฉันหวังว่ามันจะเป็นประโยชน์กับทุกคน เพื่อนที่สนใจสามารถอ้างถึงหัวข้ออื่น ๆ ที่เกี่ยวข้องในเว็บไซต์นี้ต่อไป หากมีข้อบกพร่องใด ๆ โปรดฝากข้อความไว้เพื่อชี้ให้เห็น ขอบคุณเพื่อนที่ให้การสนับสนุนเว็บไซต์นี้!