การแนะนำสั้น ๆ เกี่ยวกับเจ็ดโมดูลหลักของกรอบฤดูใบไม้ผลิ
คำอธิบายโดยละเอียดของรหัสโมดูล MVC ในฤดูใบไม้ผลิ
เว็บโมดูลของฤดูใบไม้ผลิใช้เพื่อรวมเฟรมเวิร์กเว็บเช่น struts1, struts2, jsf ฯลฯ
รวม struts1
วิธีการสืบทอด
Framework Spring ให้คลาส ActionsUpport เพื่อสนับสนุนการกระทำของ Struts1 หลังจากสืบทอดการกระทำที่ให้บริการคุณสามารถได้รับ beanfactory ของฤดูใบไม้ผลิซึ่งจะได้รับทรัพยากรต่าง ๆ ในภาชนะฤดูใบไม้ผลิต่างๆ
นำเข้า org.springframework.web.struts.actionsupport; การจับคู่คลาสสาธารณะขยายการกระทำ {สาธารณะ iCatservice getCarservice () {return (iCatservice) getWebapplicationContext (). getBean ("catservice"); } Public ActionForward Execute (ActionMappingMapping, Form ActionForm, คำขอ httpservletRequest, httpservletResponsesponse) {catform catform = (catform) แบบฟอร์ม; if ("list" .equals (catform.getAction ())) {returnthis.list (การแมป, แบบฟอร์ม, การร้องขอ, การตอบสนอง); }} รายการแอ็คชั่นสาธารณะ (ActionMappingMapping, แบบฟอร์ม ActionForm, คำขอ httpservletRequest, httpservletResponsesponse) {catform catform = (catform) แบบฟอร์ม; iCatservice catservice = getCatservice (); รายการ <at> catlist = catservice.listcats (); request.setAttribute ("carlist", catlist); return mapping.find ("list"); -การกำหนดค่าสปริงใน web.xml
<context-param> <!-ตำแหน่งของไฟล์การกำหนดค่าสปริง-> <param-name> contextconfiglocation </param-name> <param-value> /web-inf/classes/applicationContext.xml </param-value> </context-param> org.springframework.web.context.contextloaderlistener </listener-class> </listener> <filter> <!-การใช้ตัวกรองอักขระของสปริง-> <filter-name> ตัวอักษรที่เป็นตัวอักษร </filter-name> <param-name> การเข้ารหัส </param-name> <param-value> UTF-8 </param-value> </init-param> <init-Param> <init-Param> <param-Name> ForceEncoding </param-name> <param-value> <Stilter-Name> ตัวละคร actialEncodingFilter </filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
หากใช้ร่วมกับ Hibernate คุณจะต้องเพิ่มตัวกรอง OpenSessionInViewFilter ใน web.xml เพื่อขยายขอบเขตเซสชันไปยังเลเยอร์ JSP เพื่อป้องกันการโหลดที่ล่าช้าจากการถูกโยนทิ้ง
<silter> <filter-name> hibernateFilter </filter-name> <stilter-class> org.springframework.orm.hibernate3.support OpenSessionInviewFilter </tilter-class> </tilter> <filter-mapping> <silter-name> hibernateFilter </filter-name> <url-pattern>*. ทำ </url-pattern> <!-เปิดใช้งานการกระทำสำหรับ struts 1-> <
วิธีตัวแทน
การรวมวิธีการสืบทอดเข้าสู่ฤดูใบไม้ผลินั้นง่ายมาก แต่ข้อเสียคือรหัสนั้นประกอบกับฤดูใบไม้ผลิและการกระทำไม่ได้ส่งมอบให้กับฤดูใบไม้ผลิเพื่อการจัดการดังนั้นคุณสมบัติ AOP และ IOC ของฤดูใบไม้ผลิจึงไม่สามารถใช้ได้ การใช้วิธีพร็อกซีสามารถหลีกเลี่ยงข้อบกพร่องเหล่านี้ได้
การจับคู่คลาสสาธารณะขยายการกระทำ {// การกระทำส่วนตัว ICATSERVICE CATSERVICE ที่สืบทอดมาที่นี่คือ CatService; // setter และ getter public public Actionforward เล็กน้อย (ActionMappingMapping, Form ActionForm, คำขอ httpservletRequest, httpservletResponsponse) {catform catform = (catform) แบบฟอร์ม; if ("list" .equals (catform.getAction ())) {returnthis.list (การแมป, แบบฟอร์ม, การร้องขอ, การตอบสนอง); }} รายการแอ็คชั่นสาธารณะ (ActionMappingMapping, แบบฟอร์ม ActionForm, คำขอ httpservletRequest, httpservletResponsponse) {catform catform = (catform) แบบฟอร์ม; iCatservice catservice = getCatservice (); รายการ <at> catlist = catservice.listcats (); request.setAttribute ("carlist", catlist); return mapping.find ("list"); -การกระทำนี้ไม่ได้เชื่อมโยงกับฤดูใบไม้ผลิ แต่เพียงกำหนดคุณสมบัติ iCatservice ซึ่งจะถูกฉีดโดยฤดูใบไม้ผลิ
การกำหนดค่า struts-congfig.xml
<ฟอร์ม-Beans> <form-bean name = "catform" type = "com.clf.spring.catform"> </form-beans> <action-mappings> <action name = "catform" path = "/cat" type = "com.clf.spring.cataction" การกำหนดค่าซึ่งส่งการกระทำของ struts ไปยังสปริงเอเจนต์-> <คอนโทรลเลอร์โปรเซสเซอร์ class = "org.springframework.web.struts.delegatingRequestProcessor" /> <!-หลังจากการกำหนดค่าคอนโทรลเลอร์มีผล Struts จะไม่ใช้คลาสที่ระบุโดยคุณสมบัติประเภทเพื่อสร้างการจับคู่ แต่ค้นหาในการกำหนดค่าสปริง ดังนั้นการจับคู่จะต้องกำหนดค่าในฤดูใบไม้ผลิ-> <!-การกระทำในฤดูใบไม้ผลิใช้คุณสมบัติชื่อแทน ID ฤดูใบไม้ผลิจะสกัดกั้นคำขอ "/cat.do", ฉีด catservice ลงในการจับคู่ผ่านวิธีการตั้งค่าและเรียกวิธีการดำเนินการ () -> <bean name = "/cat"> <name property = "catservice" ref = "catservice"/> </epean>
การกำหนดค่าของ web.xml เหมือนกับวิธีการสืบทอดด้านบน
การใช้การดำเนินการพร็อกซีวิธีการสามารถกำหนดค่าคุณสมบัติสปริงเช่น interceptors เช่นการกำหนดค่าการจับคู่ก่อนและหลังการดักจับหลังจากวิธีการ
<bean id = "catbeforeinterceptor"> <property name = "คำแนะนำ"> <bean/> </property> <property name = "mappedName" value = "*"> </property> </ebean> <bean id = "catafterinterceptor"> name = "/cat"> <property name = "interceptornames"> <list> <dalue> catbeforeinterceptor </value> <dent> catafterinterceptor </value> </list> </คุณสมบัติ> <property name = "target"> <Bean> <property name = "catservice" ref = "catservice"
รวม Struts 2
Spring Integrates struts 2 ต้องการ struts2-spring-2.011.jar แพ็คเกจ
การจับคู่ระดับสาธารณะ {ส่วนตัว ICATSERVICE CATSERVICE; แมวแมวส่วนตัว; // setter และ getter รายการสตริงสาธารณะ () {catservice.listcats (); กลับ "รายการ"; } สตริงสาธารณะเพิ่ม () {catservice.createCat (CAT); รายการ return (); -การกำหนดค่า struts.xml
นอกเหนือจากการกำหนดค่าปกติคุณต้องเพิ่ม struts.objectFactory คงที่และตั้งค่าเป็นสปริงเพื่อระบุว่าการกระทำนั้นเกิดขึ้นจากฤดูใบไม้ผลิ จากนั้นเปลี่ยนแอตทริบิวต์คลาสของ <แอ็คชั่น/> เป็นการจับคู่ Struts2 จะค้นหาถั่วที่มีชื่อว่าการจับคู่ในฤดูใบไม้ผลิ
<constant name = "struts.objectFactory" value = "spring"/> <packagenamepackagename = "cat" ขยาย = "struts-default"> <action name = "*_ cat" method = "{1}"> <param name = "การกระทำ"> {1} </pack>การกำหนดค่าสปริง
<bean id = "cataction" scope = "prototype"> <property name = "catservice" ref = "catservice"> </porement> </ebean>
การกำหนดค่า web.xml
<context-param> <!-ตำแหน่งของไฟล์การกำหนดค่าสปริง-> <param-name> contextconfiglocation </param-name> <param-value> /web-inf/classes/applicationContext.xml </param-value> </context-param> org.springframework.web.context.contextloaderlistener </listener-class> </listener> <filter> <filter-name> struts2 </filter-name> struts2 </filter-name> <url-pattern>/*</url-pattern> </mapping-mapping>
สรุป
ข้างต้นเป็นคำอธิบายโดยละเอียดทั้งหมดของการกำหนดค่าโมดูลเว็บของฤดูใบไม้ผลิฉันหวังว่ามันจะเป็นประโยชน์กับทุกคน เพื่อนที่สนใจสามารถอ้างถึงหัวข้ออื่น ๆ ที่เกี่ยวข้องในเว็บไซต์นี้ต่อไป หากมีข้อบกพร่องใด ๆ โปรดฝากข้อความไว้เพื่อชี้ให้เห็น
อ้างถึง:
การอภิปรายสั้น ๆ เกี่ยวกับปัญหาการกระโดดหน้าใน SpringMVC
Spring AOP บทนำการแบ่งปันสาธิตการแบ่งปัน
Spring Framework Web Project การแบ่งปันรหัสปฏิบัติ