Pengantar Singkat untuk Tujuh Modul Utama Kerangka Musim Semi
Penjelasan terperinci tentang kode modul MVC di musim semi
Modul web Spring digunakan untuk mengintegrasikan kerangka kerja web, seperti Struts1, Struts2, JSF, dll.
Mengintegrasikan struts1
Metode warisan
The Spring Framework menyediakan kelas dukungan aksi untuk mendukung tindakan Struts1. Setelah mewarisi tindakan mendukung, Anda dapat memperoleh beanfactory musim semi, dengan demikian mendapatkan berbagai sumber daya di berbagai kontainer musim semi.
impor org.springframework.web.struts.actionsupport; Kataksi kelas publik memperluas ActionSupport {public icatservice getCarService () {return (icatservice) getWebApplicationContext (). getBean ("CatService"); } Public ActionForward Execute (ActionMappingMapping, Formulir ActionForm, permintaan httpservletRequest, httpservletResponseSponse) {catform catform = (catform) form; if ("list" .equals (catform.getAction ())) {returnThis.list (pemetaan, formulir, permintaan, respons); }} Daftar ActionForward publik (ActionMappingMapping, Formulir ActionForm, permintaan httpservletRequest, httpservletResponseSponse) {catform catform = (catform) form; Icatservice catservice = getCatService (); Daftar <GAT> CatList = CatService.ListCats (); request.setAttribute ("Carlist", CatList); return mapping.find ("list"); }}Konfigurasi pegas di web.xml
<context-param> <!-Lokasi file konfigurasi pegas-> <param-name> ContextConfigLocation </param-name> <param-value> /web-inf/classes/applicationContext.xml </param-value> </context-param> <listener> <!-memuat file konfigurasi musim semi menggunakan pendengar-> </context-param> <listener> <! org.springframework.web.context.contextLoaderListener </engeaner-class> </engeaner> <nilter> <!-Menggunakan filter karakter Spring sendiri-> <filter-name> karakterEnencodingFilter </filter-name> <nilter-class> org.springframework.web.filter.characters <param-name> encoding </param-name> <param-value> UTF-8 </param-value> </init-param> <Ilin-param> <Ilin-param> <param-name> ForceEncoding </param-name> <param-value> True </param-value> </itin-Param> </filterter> FILTERENT> TRUETENT </param-value> </init-param> </filterter> FILTERENT> TRUE </param-value> </init-Param> </filterter> <rerl-pola>/*</url-pola> </filter-mapping>
Jika digunakan bersama dengan Hibernate, Anda perlu menambahkan filter OpenSessionInviewFilter di Web.xml untuk memperluas ruang lingkup sesi ke lapisan JSP untuk mencegah pengecualian pemuatan yang tertunda agar tidak dilemparkan
<filter> <nilter-name> hibernateFilter </tilter-name> <nilter-class> org.springframework.orm.hibernate3.support. OpenSessionInviewFilter </filter-class> </tilter> <nilter-Mapping> <nilter-name> hibernateFilter </tiler-name> <ratl-pola>*. Do </rerl-pola> <!-Aktifkan tindakan untuk struts 1-> </filter-mapping>
Metode agen
Mengintegrasikan metode warisan ke dalam musim semi sangat sederhana, tetapi kerugiannya adalah bahwa kode tersebut digabungkan dengan pegas, dan aksinya tidak diserahkan kepada pegas untuk manajemen, sehingga fitur AOP dan IOC Spring tidak dapat digunakan. Menggunakan metode proxy dapat menghindari cacat ini.
Kataksi kelas publik memperluas aksi {// aksi private icatservice catservice yang diwarisi di sini adalah catservice; // Setter dan Getter Sedikit Aksi Publik untuk mengeksekusi (ActionMappingMapping, ActionForm Form, permintaan httpservletRequest, formulir httpservletResponsponse) {catform catform = (catform); if ("list" .equals (catform.getAction ())) {returnThis.list (pemetaan, formulir, permintaan, respons); }} Daftar ActionForward publik (ActionMappingMapping, Formulir ActionForm, permintaan httpservletRequest, httpservletResponsponse) {catform catform = (catform) form; Icatservice catservice = getCatService (); Daftar <GAT> CatList = CatService.ListCats (); request.setAttribute ("Carlist", CatList); return mapping.find ("list"); }}Tindakan ini tidak digabungkan dengan pegas, tetapi hanya mendefinisikan properti iCatService, yang kemudian disuntikkan oleh pegas
Konfigurasi Struts-Congfig.xml
<Form-beans> <Form-bean name = "Catform" type = "com.clf.spring.catform"> </form-beans> <action-papping> <action name = "catform" path = "/cat" type = "com.clf.spring.caturaction"> <forward name = "list" Path = "/jsp/listcat.spring.cataction"> <Forward name = "list" Path = "/jsp/listcat.spring" Konfigurasi, yang menyerahkan tindakan struts ke agen pegas-> <controller processorclass = "org.springframework.web.struts.delegatingRequestProcessor" /> <!-Setelah konfigurasi pengontrol berlaku, jenis properti dari tindakan digunakan. Struts tidak akan menggunakan kelas yang ditentukan oleh properti Type untuk membuat CATACTION, tetapi mencari di konfigurasi pegas. Oleh karena itu, Cataction harus dikonfigurasi di Spring-> <!-Tindakan di Spring menggunakan properti nama alih-alih ID. Musim semi akan mencegat permintaan "/cat.do", menyuntikkan CatService ke dalam kata -kata melalui metode setter, dan panggil metode eksekusi () -> <bean name = "/cat"> <name properti = "CatService" Ref = "CatService"/> </bean>
Konfigurasi web.xml sama dengan metode warisan di atas.
Menggunakan Metode Proxy Tindakan dapat mengonfigurasi fitur pegas seperti pencegat, seperti mengkonfigurasi CATACTION sebelum dan sesudah pencegat setelah metode
<bean id = "catbeforeinterceptor"> <name properti = "nasihat"> <bean/> </property> <name properti = "mappedname" value = "*"> </property> </tact> <bean id = "catafterintercepor"> <Properti name = "nasihat"> <bean/</</property name/name </a name = "</a name =" </a name " name = "/cat"> <properti name = "intercepToNTames"> <cist> <value> catbeforeInterceptor </ value> <value> CataFterInterceptor </ value> </list> </property> <Properti Nama = "Target"> </Properti Properti = "CatService" Ref = "CatService"> </Property> </Bean> </Bean </Bean </Bean </Bean = "CatService"> </Property> </bean> </bean </bean </bean/catservice "> </property> </bean> </bean </bean </bean/catservice"> </property> </bean> </bean </bean </bean/catservice
Mengintegrasikan struts 2
Spring Integrates Struts 2 membutuhkan paket Struts2-Spring-2.011.jar
Cataction kelas publik {private icatservice catservice; kucing kucing pribadi; // setter dan getter public string list () {catservice.listcats (); mengembalikan "daftar"; } public string add () {catservice.createCat (cat); daftar pengembalian (); }}Konfigurasi Struts.xml
Selain konfigurasi normal, Anda juga perlu menambahkan struts.ObjectFactory yang konstan dan mengatur nilainya ke pegas untuk menunjukkan bahwa tindakan dihasilkan oleh pegas. Kemudian ubah atribut kelas <Action/> ke Cataction, Struts2 akan mencari kacang bernama Cataction di Spring.
<name konstan = "struts.ObjectFactory" value = "spring"/> <packagenamepackagename = "cat" extends = "struts-default"> <action name = "*_ cat" Method = "{1}"> <param name = "action"> {1} </param> </list.jsp.jsp.jsp </name = "list =" list = "list/list/list =" list/list/list/list/list/list/list/{1} </param> </list. </chere> </packer>Konfigurasi Musim Semi
<bean id = "Cataction" scope = "prototipe"> <properti name = "catservice" ref = "catservice"> </property> </ bean>
Konfigurasi Web.xml
<context-param> <!-Lokasi file konfigurasi pegas-> <param-name> ContextConfigLocation </param-name> <param-value> /web-inf/classes/applicationContext.xml </param-value> </context-param> <listener> <!-memuat file konfigurasi musim semi menggunakan pendengar-> </context-param> <listener> <! org.springframework.web.context.contextLoaderListener </listener-class> </engeaner> <nilter> <nilter-name> struts2 </filter-name> <nilter-class> org.apache.struts2.dispatcher.filterdispatcher </filter-class> <apache--chping.dispatcher.filterdispatcher </filter-class> <nilter> filter> filter2-n-n-n-nodu </filter> <filter> <filter> <filter> <filter> <filter> <filter-n-n-nodus </filter> <rerl-pola>/*</url-pola> </filter-mapping>
Meringkaskan
Di atas adalah semua penjelasan terperinci tentang konfigurasi modul web Spring, saya harap ini akan membantu semua orang. Teman yang tertarik dapat terus merujuk ke topik terkait lainnya di situs ini. Jika ada kekurangan, silakan tinggalkan pesan untuk menunjukkannya.
Lihat:
Diskusi singkat tentang masalah lompatan halaman di springmvc
Pembagian demo Pendahuluan AOP Musim Semi
Spring Framework Berbagi Kode Praktis Web