Inilah contoh paling sederhana
1. Buat proyek Javaweb standar baru
2. Impor beberapa paket stoples dasar yang diperlukan untuk musim semi
3. Konfigurasikan file web.xml
<? Xml Version = "1.0" encoding = "UTF-8"?> <Web-app Versi = "2.5" xmlns = "http://java.sun.com/xml/ns/javaee" xmlns: xsi = "http:/www.w3.org/2001 =" http:/www.w3.org/200 XSI: schemalocation = "http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/we-papparp_2.sun.sun.xml/xml/ns/javaee/weee/weB-apparp_2 <param-name> ContextConfigLocation </param-name> <param-value> classpath*: ApplicationContext*.xml, </param-value> </context-param> <!-Konteks Spring Louding Listener-> <listener> <listener-class> org.springframework.web.context.context.context <listener> org.springframework.web.context.context <listener> <listener> org.springframework.web.context.context> <listener> org. <creendak-file-list> <creendak-file> index.jsp </celcome-file> </celcome-file-list> </web-app>
4. Tambahkan ApplicationContext File Konfigurasi Musim Semi
5. Buat konfigurasi termudah dari file ApplicationContext.xml
<? XML Versi = "1.0" encoding = "utf-8"?> <beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http://www.w3.org/2001/xmls XSI: schemalocation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans- 3.0.xsd" default--lazy-init--lica-init = "false" autowire = "" "" "" "" "" "" "" "name" name = "name" name "name" name "aUmoROWARE" " value = "zhang san"/> </t bean> </tac>
Kacang-The Root Node dari file XML.
xmlns - adalah singkatan dari Xmlnamespace. Karena nama tag file XML disesuaikan, tag yang ditulis sendiri dan ditentukan oleh orang lain cenderung digandakan, tetapi fungsinya berbeda, sehingga namespace perlu ditambahkan untuk membedakan file XML ini dari file XML lainnya, mirip dengan paket di Java.
XMLNS: XSI - Mengacu pada file XML sesuai dengan spesifikasi XML. Nama lengkap XSI: XMLSCHEMAINSTANCE mengacu pada spesifikasi yang secara ketat diikuti oleh elemen yang ditentukan dalam file sumber daya skema yang digunakan. Artinya, standar apa yang ditentukan elemen dalam file /spring-beans-2.0.xsd yang dipatuhi?
XSI: Skema - mengacu pada spesifikasi yang sesuai dengan elemen XML dalam dokumen ini. Properti skema digunakan untuk referensi (skema) dokumen skema. Parser dapat menggunakan dokumen ini untuk memverifikasi dokumen instance XML jika diperlukan. Nilainya (URI) muncul berpasangan, nilai pertama mewakili namespace, dan nilai kedua mewakili lokasi spesifik dari dokumen pola yang menggambarkan namespace, dipisahkan oleh spasi.
6. Buat pengguna kelas entitas baru.java
paket com.po; pengguna kelas publik {nama string privat; usia string pribadi; public string getName () {return name; } public void setName (name string) {this.name = name; } getage string publik () {return usia; } public void setage (String Age) {this.age = usia; }}7. Tes
public static void main (string [] args) {// TODO Metode yang dihasilkan otomatis Stub ApplicationContext ac = new FilesyStemXMLapPlicationContext ("config/applicationcontext.xml"); Pengguna pengguna = (pengguna) ac.getBean ("pengguna"); System.out.println (user.getName ()); }Keluaran
Ini memungkinkan pembangunan kerangka kerja musim semi dasar untuk proyek web. Selanjutnya, kami akan melakukan beberapa ekstensi yang akan digunakan dalam proyek nyata. Anda dapat mengonfigurasi beberapa fungsi atau pengaturan lain untuk integrasi kerangka kerja Spring di web.xml.
<!-- Character encoding filters must be placed at the top of the filter --> <filter> <filter-name>encodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>forceEncoding</param-name> <param-value>true</param-value> </init-param> <init-param> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!-- Use OpenSessionInView--> <filter> <filter-name>openSessionInViewFilter</filter-name> <filter-class> org.springframework.orm.hibernate3.support.OpenSessionInViewFilter </filter-class> <init-param> <param-name>singleSession</param-name> <param-value>true</param-value> </init-param> <init-param> <param-name> sessionFactoryBeanName </param-name> <!-Tentukan sessionfactory mana dalam konfigurasi pegas untuk menggunakan opensessionView-> <param-value> sessionFactory </param-value> </it-param> </filter> <filter-name> <filtername> OpenssionInterfilter </filtererat> <filter-name> <filtername> OpenssiessionSessionFilter </filtererat> <filter-name> <filter-name> OpensessionSessionFilter </Filter PERNOOTER PERTINGKA </filter-Mapping> <!-Filter keamanan musim semi org.springframework.web.filter.delegatingfilterproxy (delegasi filter proxy)-> <!-filter ini akan digunakan menggunakan springsecurity atau apache shiro,-> <nilter> <filter-name> SpringSecurityFilterchain </filter-name> <nilter-class> org.springframework.web.filter.delegatingfilterproxy </tilter-class> </tiler> <nilter-Mapping> <nilter-name> SpringsecurityFilterChain </tilter-name> <rill-pattern>/*</ruRl-pattern> </filter-pemetam> <pertionation> </url-pola> </filter-pemetping> <!-Declaration Spring> </RURL-PATER> </Filter-Mapping> <! <servlet-name> springDispatcher </servlet-name> <servlet-class> org.springframework.web.servlet.dispatcherServlet </servlet-class> <Ilin-param> <param-name> ContextConfigLocation </param-name> <param-value> classpath*: spring-mvc.am <Boad-on-startup> 1 </boid-on-startup> </servlet> <!-Peta semua permintaan untuk/* ke dispatcher servlet-> <servlet-Mapping> <servlet-name> SpringDispatcher </servlet-name> <rerl-pola>/</url-pola> </servlet-metping> <!-Konfigurasi Konfigurasi-Konfigurasi ... <cocion> errorPage/404.jsp </location> </error-page> <!-401 error-> <RESTREST-page> <RESOR-CODE> 401 </ERROR-CODE> <Ocation> /Errorpage/401.html </cocion> </error-page> <!-perkenalkan taglib.jspf dan file lain untuk setiap halaman JSP-</error-page> <! <Aklib-uri> /web-inf/runqianreport4.tld </taglib-uri> <aglib-location> /web-inf/runqianreport4.tld </taglib-location> </taglib> <jsp-property-group> <rerl-pattern>*. <include-prelude> /tag/taglib.jspf </cerstert-prelude> <!-<trim-directive-whitespaces> true </trim-directive-whitespaces>-> </jsp-properti-group> </jsp-config>
Di antara mereka, JSPF adalah membuat beberapa pernyataan global
<%@ page language = "java" contentType = "text/html; charset = utf-8" <span style = "white-space: pre"> </span> pageenCoding = "utf-8"%> <%@ taglib prefix = "c" uri = "http://java.sun.com/jspix =" c "uri =" http:/java.sun.com/jspix = "uri =" http:/java.sun.com/jspix/"c" uri = "http:/java.sun.com/jspix/pule/uri =" http:/java.sun.com/jspix/jspix/jor/@@@%" uri = "http://java.sun.com/jsp/jstl/functions"%> <%@ taglib prefix = "fmt" uri = "http://java.sun.com/jsp/jstl/fmt"%> <%@ taglib prefix = "fmt" uri = "http://java.sun.com/jsp/jstl/fmt"%> <%@ taglib prefix = "fmt" uri = "http://java.sun.com/jsp/jstl/fmt"%> <%@ taglib prefix = "fmt" uri = "http://java.sun.com/jsp/jstl/fmt"%> <%@ taglib prefix = "fmt" uri = "http://java.sun.com/jsp/jstl/fmt"%> <%@ taglib prefix = "fmt" uri = "http://java.sun.com/jsp/jstl/fmt"%> <%@ taglib prefix = "fmt" uri = "http://java.sun.com/jsp/jstl/fmt"%> <%@ taglib prefix = "fmt" URI = "http://java.sun.com/jsp/jstl/fmt"%> <%@ taglib prefix = "fmt" uri = "h taglib prefix =" fnc "uri ="/web-inf/tlds/fnc.tld "%> <%@ taglib tagdir =" tagdir/tlds/fnc.tld "%> <%@ taglib tagdir =" tagdir/"fnc.tld"%> <%@ taglib tagdir = "tagdir/" fnc.tld "%> <%@ taglib tagdir =" "" tag "tag/fnc. var = "ctx" scope = "session" <span style = "white-space: pre"> </span> value = "$ {pagecontext.Request.contextPath}" />Lebih banyak fungsi dapat dikonfigurasi di ApplicationContext.xml
<!-lebih banyak pernyataan dapat ditambahkan ke kacang-> <beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http://www.w3.org/2001/xmlschema-insance" xmlns: jee = "http://www.springframework.org/schema/jee" xmlns: tx = "http://www.springframework.org/schema/tx" xmlns: aop = "http:/schema.tx" xmlns: context = "http://www.springframework.org/schema/context" xmlns: mvc = "http://www.springframework.org/schema/mvc" xsi: schemalocation = "http:BaMaM.MFC" xsi: schemalocation = "http:B http://www.springframework.org/schema/beans/spring-weans-3.0.xsd http://www.springframework.org/schema/jee http://www.spramework.org/schema/jee/www.spramework.org/schema/schema/jee.jee http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd "default-lazy-init =" false "default-autowire =" byname "> <! <AOP: AspectJ-autoproxy /> <mvc: anotasi-driven /> <!-Komentar menggantikan konfigurasi, secara otomatis memindai paket dasar. Paket pemindaian dan semua kelas di bawah semua subpackage perlu dihapus dari controller, jika tidak, ia akan mempengaruhi manajemen transaksi-> <konteks: komponen-scan-package = "com.schoolnet"> <konteks: tidak termasuk filter type = "annotation" ekspresi = org.springframework.steretype.steretype.controller " /< /<pups-org.springframework.steretype.steretype.controller" /< /<puppext "org. id = "PropertyConfigurer"> <Property Name = "FileEncoding" value = "UTF-8"/> <name properti = "Lokasi"> <cist> <value> classpath: jdbc.properties </value> </list> </preate> </bean> <!-Konfigurasi Sumber Data-<Bean ID = "DATASOURCE =" DEVERASS = "DEVERSIass =" DEBRIRS = "DEVERSIAS =" DATERPAS = "DATAASS =" DEVURSE = "DATAAS" DATAASPLECE = "DATASURCE =" DATASURCE = "DATAS" DATASOR "DATASURCE =" value = "$ {jdbc.DriverClassName}" /> <properti name = "jdbcurl" value = "$ {jdbc.url}" /> <name properti = "user" value = "$ {jdbc.username}" /> <nama properti = "kata sandi" value = "$ {jdbc." pitors = "JDBC =" JDB <value> 1 </value> </propt> <name properti = "maxPoolSize" value = "100" /> <name properti = "initialpoolSize" value = "3" /> <!-waktu idle maksimum, jika koneksi tidak digunakan dalam 60 detik, koneksi akan dibuang. Jika 0, itu tidak akan pernah dibuang. Default: 0-> <name properti = "maxidletime" value = "60" /> <!-Jumlah koneksi yang diperoleh oleh C3P0 pada waktu yang sama pada satu waktu ketika koneksi di kumpulan koneksi habis. Default: 3-> <name properti = "AcquireIncrement" value = "5" /> <name properti = "maxstatements" value = "0" /> <!-Periksa koneksi idle di semua kumpulan koneksi setiap 60 detik. Default: 0-> <nama properti = "IDLECONNECTIONTESTERPERIOD" Value = "60" /> <!-Menentukan jumlah upaya yang diulang setelah koneksi baru gagal diambil dari database. Default: 30-> <name properti = "AcquireretryAttempts" value = "30" /> <!-Gagal mendapatkan koneksi akan menyebabkan semua utas menunggu kumpulan koneksi untuk mendapatkan koneksi untuk melempar pengecualian. Namun, sumber data masih valid dan terus mencoba mendapatkan koneksi saat berikutnya Anda menelepon getConnection (). Jika diatur ke True, sumber data akan menyatakan bahwa itu telah terputus dan ditutup secara permanen setelah upaya gagal untuk mendapatkan koneksi. Default: false-> <name properti = "breakafteracquirefailure" value = "false" /> <!-Harap hanya menggunakannya saat diperlukan karena konsumsi kinerja tinggi. Jika diatur ke True, validitasnya akan diverifikasi pada setiap pengajuan koneksi. Disarankan untuk menggunakan IdLeconnectionTestPeriod atau Automaticttable untuk meningkatkan kinerja pengujian koneksi. Default: false-> <name properti = "testConnectionOnCheckout" value = "false" /> </ bean> <!-Definisi Transaction Manager (Transaksi Deklaratif)-> <!-Dukungan @Transactional Tags-> <!-Way One: DataSourcetransactionManager-> <bean id iD = "transactionagager"> <"DATACOCE =" "DATOCE =" "DATOCE =" "DATE" "DATOE" "DATOE" "DATE"> "DATOCE =" <TX: Anotasi-Didorong Transaksi-Manager = "TransactionManager"/> <!-Way Two: HibernatetransactionManager-> <bean id = "hibernatetransactionManager"> <nama properti = "sessionfactory"> <ref local = "sessionfactory"/</properti </bean> <! <! <property name="dataSource" ref="dataSource" /> <property name="lobHandler" ref="lobHandler"/> <property name="mappingLocations"> <list> <value>classpath*:/com/schoolnet/**/*.hbm.xml</value> </list> </property> <property name="hibernateProperties"> <props> <!-- Solve that Hibernate tidak secara otomatis menghasilkan tabel ketika beberapa tablespace sama di Oracle. -> <prop key = "hibernate.default_schema"> $ {jdbc.userName} </prop> <prop key = "hibernate.dialect"> org.hibernate.dialect.oracle10gdialect </prop> <prop = "hibernate.show_sql"> solve </prop> <prop = "hibernate.show_sql"> true </prop> <prop = "hibernate.show_sql"> true </prop> <prop = "hibernate.show_sql"> trues.> true </prop> <prop = "hibernate.show_sql"> true </prop> <prop = "hibernate.show.sql"> trues.> tru </prop> <prop = "hibernate.show_sql"> true </vor key="hibernate.generate_statistics">false</prop> <prop key="hibernate.generate_statistics">false</prop> <prop key="hibernate.connection.release_mode"> auto </prop> <prop key="hibernate.autoReconnect">true</prop> <prop key="hibernate.cache.provider_class"> org.hibernate.cache.ehcacheProvider </prop> <!-Memecahkan masalah kebocoran memori-> <prop key = "hibernate.cache.use_query_cache"> false </prop> <prop key = "use_second_level_cache"> false </prop> <prop kunci = "hibernate.hbm2 KEY = "current_session_context_class"> thread </prop> </props> </prop Property> <name properti = "EventListeners"> <peta> <entri key = "gabungan"> <bean/> </entry> </peta> </port> </bean> <!-2. Kontrol TRANSACTICS HIBERNATE-> </bean = "TX TRIPRICE ID =" TX ID = "TX ID =" TX ID = "TX: TX: TX TROXICERE- TROXICERE </ENTERS> <! transaksi-manager = "hibernatetransactionManager"> <tx: atribut> <tx: metode nama = "save*" propagation = "wajib" rollback-for = "pengecualian" /> <tx: nama metode = "add*" propagation = "diperlukan" rollback-for = "pengecualian" /<tx: metode "updoat" "oB UPotifed*" name = "ubah*" propagasi = "diperlukan" rollback-for = "pengecualian" /> <tx: metode nama = "del*" propagation = "wajib" rollback-for = "pengecualian" /> <tx: nama metode = "start*" propagasi = "rollack-for =" Exception " /<tx: Metode name =" stop*"tx:" tx: "tx:" tx: "tx:" tx: "tx:" tx: "tx:" tx: "tx:" tx: "tx:" tx: "tx:" tx: "tx:" tx: "tx:" tx: "tx:" tx: "tx:" tx: "tx:" tx: "tx:" tx: "tx:" tx: "tx:" tx: "tx:" tx: "tx:" tx: "stop*" name = "tetapkan*" propagation = "wajib" rollback-for = "exception" /> <tx: Metode name = "clear*" propagation = "wajib" rollback-for = "exception" /> <tx: Metode name = "clear*" propagation = "wajib" rollback-for = "Exception" /> <tx: Metode name = "<" tx: "tx:" tx: "tx:" tx: "execute" execute = "execute" execute = "Executon =" Excute "wajib" /> <tx: Metode name = " /tax:" tx: "tx:" tx: "tx:" tx: "tx:" tx: "tx:" tx: "tx:" tx: "tx:" tx: "execute" execute = "tx:" tx: "execute" name="insert*" propagation="REQUIRED" rollback-for="Exception" /> <tx:method name="do*" propagation="REQUIRED" rollback-for="Exception" /> <tx:method name="set*" propagation="REQUIRED" rollback-for="Exception" /> <tx:method name="*N" propagation="NEVER" /> <tx:method name="*" read-only = "true"/> </tx: atribut> </tx: nasihat> <!-Konfigurasikan metode kelas-kelas tersebut untuk manajemen transaksi-> <aop: config> <aop: advisor pointcut = "eksekusi (*com.eshine ..*. Layanan.*.*.Konfigurasi File Spring-MVC.XML
<? XML Versi = "1.0" encoding = "utf-8"?> <beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http://www.w3.org/2001/xmls xmlns: jee = "http://www.springframework.org/schema/jee" xmlns: tx = "http://www.springframework.org/schema/tx" xmlns: aop = "http:/schema.tx" xmlns: context = "http://www.springframework.org/schema/context" xmlns: mvc = "http://www.springframework.org/schema/mvc" xsi: schemalocation = "http:BaMaM.MFC" xsi: schemalocation = "http:B http://www.springframework.org/schema/beans http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/mvc http://www.springframewework.org/schema/schema/schema/schema/schema/schema/schema/schema/schema/schema <context:component-scan base-package="com.schoolnet" use-default-filters="false"> <context:include-filter type="annotation" expression="org.springframework.steretype.Controller" /> </context:component-scan> <mvc:annotation-driven /> <mvc:default-servlet-handler /> <!-- jsp view parser--> <bean id="jspViewResolver"> <property name="prefix" value="/" /> <property name="suffix" value=".jsp" /> <property name="order" value="0" /> <property name="contentType" value="text/html;charset=UTF-8" /> </bean> <!--Multi-text upload, limit 1G files--> <bean id = "multipartresolver"> <name properti = "maxuploadsize" value = "1073741824"/> </bean> </bean>
Meringkaskan
Di atas adalah semua konten artikel ini tentang berbagi kode lengkap Proyek Web Spring Framework. Saya harap ini akan membantu semua orang. Teman yang tertarik dapat terus merujuk ke situs ini:
Contoh Pendahuluan Gaya Restmvc dan Kode Implementasi
SpringMVC Interceptor mengimplementasikan masuk tunggal
Sampel kode rinci redis terintegrasi
Jika ada kekurangan, silakan tinggalkan pesan untuk menunjukkannya. Terima kasih teman atas dukungan Anda untuk situs ini!