1. Persiapan
Sebelum Anda mulai, silakan merujuk ke artikel sebelumnya:
Struts2.3.24 + spring4.1.6 + hibernate4.3.11 + mysql5.5.25 Konstruksi lingkungan pengembangan dan penjelasan terkait adalah sama, tetapi struts2 diganti dengan MVC musim semi
2. Tempat yang berbeda
Paket Direktori Proyek dan JAR:
Ubah Paket Tindakan ke Controller;
Hapus paket jar struts2 dan tambahkan paket MVC Spring (jika sudah ada, Anda tidak perlu menambahkannya);
Konfigurasi web.xml:
Perbedaan dari sebelumnya adalah bahwa filter struts2 diganti dengan servlet, tujuan utamanya adalah untuk merutekan URL dan menyerahkannya ke Spring MVC untuk diproses;
<? Xml Version = "1.0" encoding = "utf-8"?> <web-app xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xmlns = "http://java.sun.com/xmlns =" http://java.com/xmlns = "http://java.com/xmlns = XSI: schemalocation = "http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/we-pappe." "" "" "" "" "" "" "" "" "" <play-name> ssh </play-name> <Context-param> <param-name> ContextConfigLocation </param-name> <param-value> classpath: applicationContext.xml </param-value> </context-param> <listener> <listener-class> org. <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <servlet> <servlet-name>springmvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value> classpath: springmvc-servlet.xml </param-value> </it-param> <Boad-on-startup> 1 </load-on-startup> </servlet> <servlet-Mapping> <servlet-name> springmvc </servlet-name> <rerl-pattern>*.
ApplicationContext.xml Configuration:
Perbedaannya terutama ketika mengkonfigurasi pemindaian otomatis, komponen @Controller harus dikecualikan. Kacang ini dihasilkan oleh Spring MVC;
Konfigurasi lain sama dengan pada artikel sebelumnya;
<? Xml Version = "1.0" encoding = "UTF-8"?> <beans xmlns = "http://www.springframework.org/schema/beans" xmlns: p = "http://www.spramework.org/schema/spema/spema" xmlns: context = "http://www.springframework.org/schema/context" xmlns: tx = "http://www.springframework.org/schema/tx" xmlns: xsi = "http:--plns.plns. xmlns: aop = "http://www.springframework.org/schema/aop" xmlns: jdbc = "http://www.springframework.org/schema/jdbc" xsi: schemalocation = "http:schema/jdbc" xsi: schemalocation = "http:schaMaMaMaMaMer http://www.springframework.org/schema/beans http://www.springframework.org/schema/aop http://www.spramework.org/schema/aop http://www.spramework.org.orgaMema.aop http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.1.xsd http://www.springframework.org/schema/jdb http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/springfringframework.org.14.xsd http://wwww.springframework.org.orger <!-Memindai ClassPath untuk komponen beranotasi (termasuk @Repostory dan @Service yang akan terdaftar secara otomatis sebagai kacang-kacangan-> <Context: Component-Scan Base-Package = "SSH"> <!-Kecualikan Komponen @Controller, yang dipindai oleh SpringMVC file konfigurasi-> <Konteks: Konteks: "Konteks PRIPOLTER =" PRINGSEMVC KONFIGURASI-> <Konteks: Konteks Konteks = " Ekspresi = "org.springframework.steretype.controller" /> < /context: component-scan> <!-pemilihan sumber data-> <bean name = "DataSource" dashar-metod = "tutup"> <nama properti = "driverclass" value = "com.mysql.jdbc.driver" /< /driverclass "value =" com.mysql.jdbc.driver " /< /name class =" com.mysql.jdbc.driver " /< /name =" value = "jdbc: mysql: // localhost: 3306/demo"/> <name properti = "user" value = "root"/> <properti nama = "kata sandi" value = "root"/> <name properti = "AcquireIncrement" value = "1"> </properties name = "initialpoolSize" value = "80"> </"80>" Properti = "Properti =" Properti </Properties> <Properti = "InitialPoolsize" value = "80"> "80"> Properti = "Properti =" Properti = "Properti =" Properti = "80" <nama properti = "maxpoolSize" value = "80"> </property> <properti name = "minpoolSize" value = "50"> </property> <properti name = "AcquireretryDelay" value = "1000"> </properties name = "breakeretrepts" value = "60"> </properti </Properties = "IFeAreFeActempt Terlalu banyak koneksi yang muncul, perhatikan untuk memodifikasi file konfigurasi my.ini dari mysql untuk meningkatkan jumlah maksimum item konfigurasi koneksi (lihat perintah koneksi saat ini: tunjukkan daftar proses) -> < /bean> <bean id = "sessionfactory"> <name properti = "datasource" ref = "dataSource" / /<nama properti = "hibern =" hibne. " key = "hibernate.dialect"> org.hibernate.dialect.mysqldialect </prop> <prop key = "hibernate.show_sql"> true </prop> <prop key = "hibernate.hbm2dl.Auto"> update </prop> <prop Key = "hibernate. key = "connection.pool_size"> 10 </prop> <prop key = "current_session_context_class"> thread </prop> <prop key = "hibernate.cache.use_second_level_cache"> true </prop> <prop> key = "hibernate.cache.region.factory_class"> org.hibernate.cache.ehcache.ehcacheregionfactory </por> <prop key = "hibernate.cache.use_query_cache"> true </prop> <prop> KEY = "hibernate.cache.provider_configuration_file_resource_path"> ehcache.xml </prop> </props> </prop Property> <Properti Nama = "MappingLocations"> <ter list> <value> classpath: ssh/model/user.hbm.xml </value> <"nicePath = SSH/model/user.hbm.xml </value> <list> <value> ssh.model.user </ value> </list> </propt>-> </t bean> <!-Mengkonfigurasi Transaction Manager-> <bean id = "TransactionManager"> <nama properti = "sesiFactory" Ref = "sessionFactory"/</bean> <!-Karakteristik Propagasi-Propagasi Session-> </bean> </tx: Tx: Tx: TX: TX: TX: TX: TX: TX: TX: TX: TX: TX: TX: TX: TX: TX: TX: TX LEAN "TX: TX: TX: TX: TX: TX: TX: TX: TX: TX: TX: TX: TX: TX: TX: TX: TX transaction-manager="transactionManager"> <tx:attributes> <tx:method name="add*" propagation="REQUIRED" read-only="false" rollback-for="java.lang.Exception"/> <tx:method name="delete*" propagation="REQUIRED" read-only="false" rollback-for="java.lang.Exception"/> <tx:method name = "hapus*" propagation = "wajib" hanya-baca = "false" rollback-for = "java.lang.exception"/> <tx: Metode name = "update*" propagation = "wajib" read-only = "false" rollback-for = "java. rollback-for = "java.lang.exception"/> </tx: atribut> </tx: nasihat> <aop: config> <aop: pointcut id = "pcmethod" ekspresi = "eksekusi (*ssh.service ..*.*. <!-Uji pemrosesan AOP khusus-> <bean id = "aoptest"> </ bean> <bean id = "myaop"> </bean> <aop: konfigurasi proxy-target-class = "true"> <aop: aspek ref = "myaop"> <aop: pointcut id = "pcmethodest" expression = "myaop"> <aop: pointcut id = "pcmethodest" ssh.aop.aoptest.test*(..)) "/> <aop: sebelum pointcut-ref =" pcmethodtest "method =" sebelum "/> <aop: setelah pointcut-ref =" pcmethodtest "method =" after "/> </aop: aspek> </aop: config> </beans>
Konfigurasi springmvc-servlet.xml:
Konfigurasikan pemindaian otomatis @Controller di bawah paket SSH.Controller. Di sini Anda perlu mengembalikan Filter yang dikonfigurasi di ApplicationContext.xml;
Konfigurasikan tampilan parser, ada banyak parser, di sini kami mengambil internalResourCeviewResolver sebagai contoh;
<? Xml Version = "1.0" encoding = "UTF-8"?> <beans xmlns = "http://www.springframework.org/schema/beans" xmlns: context = "http://www.springframework.org/scema/www.spramework.org/scema/contpema/www.spramework.org/orgaMema/contpa/context" xmlns: mvc = "http://www.springframework.org/schema/mvc" xmlns: p = "http://www.springframework.org/schema/p" xmlns: xsi = "http:--plns.plns. xmlns: tx = "http://www.springframework.org/schema/tx" xsi: schemalocation = "http://www.springframework.org/schema/beans http://wwww.springframework http://www.springframework.org/schema/context http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.1.1.1.1 http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.1.xsd "> <!-Mulai pemindaian otomatis dari semua kacang di bawah paket ini (misalnya @konkon)-" sconton-sconon (misalnya @konon (misalnya @konon (misalnya @kon. " > <!-Pulihkan yang dikecualikan yang ditetapkan oleh wadah induk, perhatikan jalur pemindaian paket ssh.controller-> <konteks: sertakan filter type = "annotation" ekspresi = "org.springframework.steretype.controller" /< /contaction: component-scan> <!-define view parser-controller " /< /context: component-scan> <!-define view parser-controller" /< /context: "component-scan> <! <value>/web-inf/jsp/</value> </property> <properti name = "suffix"> <value> .jsp </ value> </property> </tobe>
Write Controller:
Karena Spring MVC digunakan untuk menggantikan Struts2, tidak ada paket tindakan. Hapus dan buat paket pengontrol baru. Buat kelas UserController baru di bawah paket;
@RequestMapping: URL peta;
@ResponseBody: Konten dikembalikan secara langsung sebagai tubuh;
Usercontroller.java
Paket ssh.controller; impor java.io.printwriter; import java.util.list; import javax.annotation.resource; import javax.servlet.http.httpservletrequest; impor javax.servlet.http.httpservletePons; org.springframework.stereotype.controller; impor org.springframework.web.bind.annotation.requestmapping; impor org.springframework.web.bind.annotation.ResponseBody; import ssh.aop.aoptest; impor ssh.model.model; com.google.gson.gson;@controller@requestMapping ("/user") kelas publik userController {logger logger = logger.getLogger (usercontroller.class); @Resource Private UserServerService UserService; @Resource private aoptest aoptest; @RequestMapping (value = "/addUser") @ResponseBody public void addUser (permintaan httpservletRequest, respons httpservletResponse) {printwriter out = null; coba {response.setContentType ("text/html; charset = utf-8"); String Account = request.getParameter ("akun"); Name string = request.getParameter ("name"); Alamat String = request.getParameter ("Alamat"); Pengguna pengguna = pengguna baru (); user.setAccount (akun); user.setAddress (alamat); user.setname (name); Userservice.add (pengguna); out = response.getWriter (); out.write (GSON baru (). TOJSON ("Success")); } catch (Exception e) {E.PrintStackTrace (); logger.error (e.getMessage ()); if (out! = null) out.write (GSON baru (). TOJSON ("FAIL")); } akhirnya {out.flush (); out.close (); }} @RequestMapping (value = "/queryUser") @ResponseBody public void queryAllUser (permintaan httpservletRequest, respons httpservletResponse) {printwriter out = null; aoptest.test1 (); aoptest.test2 (); coba {response.setContentType ("text/html; charset = utf-8"); GSON GSON = GSON baru (); Daftar <User> userList = UserserVice.QueryAllUser (); String gsonstr = gson.toJson (userList); out = response.getWriter (); out.write (gsonstr); } catch (Exception e) {E.PrintStackTrace (); logger.error (e.getMessage ()); if (out! = null) out.write (GSON baru (). TOJSON ("FAIL")); } akhirnya {out.flush (); out.close (); }}} 3. Jalankan program
Jalankan program, tambahkan pengguna dan pengguna permintaan. Fungsinya normal;
Selain itu, cache sekunder juga berfungsi secara normal, dan database tidak lagi dioperasikan dalam kueri kedua;
@Author Coder seperti angin
Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.