นี่คือตัวอย่างที่ง่ายที่สุด
1. สร้างโครงการ Javaweb มาตรฐานใหม่
2. นำเข้าแพ็คเกจโถพื้นฐานที่จำเป็นสำหรับฤดูใบไม้ผลิ
3. กำหนดค่าไฟล์ web.xml
<? xml version = "1.0" การเข้ารหัส = "utf-8"?> <web-app version = "2.5" xmlns = "http://java.sun.com/xml/ns/javaee" xmlns: xsi = "http://ww.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/web-app_2_2_2_2_5 <param-Name> contextConfigLocation </param-name> <param-value> classpath*: ApplicationContext*.xml, </param-value> </context-param> <! <welcome-file> index.jsp </welcome-file> </welcome-file-list> </eb-app>
4. เพิ่มไฟล์การกำหนดค่าสปริงแอปพลิเคชันแอปพลิเคชัน
5. สร้างการกำหนดค่าที่ง่ายที่สุดของไฟล์ ApplicationContext.xml
<? xml version = "1.0" การเข้ารหัส = "utf-8"?> <beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http://ww.w3.org/2001/xml XSI: schemalocation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.XSD value = "Zhang San"/> </ebean> </ebeans>
ถั่ว-โหนดรูทของไฟล์ XML
XMLNS - เป็นตัวย่อของ XMLNAMESPACE เนื่องจากชื่อแท็กของไฟล์ XML ได้รับการปรับแต่งแท็กที่เขียนด้วยตัวเองและกำหนดโดยผู้อื่นมีแนวโน้มที่จะทำซ้ำ แต่ฟังก์ชั่นแตกต่างกันดังนั้นจึงจำเป็นต้องเพิ่มเนมสเปซเพื่อแยกแยะไฟล์ XML นี้จากไฟล์ XML อื่น ๆ คล้ายกับแพ็คเกจใน Java
XMLNS: XSI - หมายถึงไฟล์ XML เป็นไปตามข้อกำหนดของ XML ชื่อเต็มของ XSI: XMLSchemainstance หมายถึงข้อกำหนดที่ตามมาอย่างเคร่งครัดด้วยองค์ประกอบที่กำหนดไว้ในไฟล์ทรัพยากรสคีมาที่ใช้ นั่นคือองค์ประกอบที่กำหนดไว้ในไฟล์ /spring-beans-2.0.xsd เป็นไปตามมาตรฐานใด
XSI: Schemalocation - หมายถึงข้อกำหนดที่องค์ประกอบ XML ในเอกสารนี้เป็นไปตาม คุณสมบัติ schemalocation ใช้เพื่ออ้างอิง (schema) เอกสารสคีมา ตัวแยกวิเคราะห์สามารถใช้เอกสารนี้เพื่อตรวจสอบเอกสารอินสแตนซ์ XML หากจำเป็น ค่าของมัน (URI) ปรากฏเป็นคู่ค่าแรกแสดงถึงเนมสเปซและค่าที่สองแสดงถึงตำแหน่งเฉพาะของเอกสารรูปแบบที่อธิบายเนมสเปซซึ่งคั่นด้วยช่องว่าง
6. สร้างผู้ใช้คลาสเอนทิตีใหม่ Java
แพ็คเกจ com.po; ผู้ใช้ระดับสาธารณะ {ชื่อสตริงส่วนตัว; อายุสตริงส่วนตัว สตริงสาธารณะ getName () {ชื่อคืน; } โมฆะสาธารณะ setName (ชื่อสตริง) {this.name = name; } public String getage () {return age; } การตั้งค่าโมฆะสาธารณะ (อายุสตริง) {this.age = อายุ; -7. ทดสอบ
โมฆะคงที่สาธารณะหลัก (สตริง [] args) {// todo วิธีการที่สร้างอัตโนมัติ stub applicationcontext ac = new filesystemplapplicationContext ("config/applicationcontext.xml"); ผู้ใช้ผู้ใช้ = (ผู้ใช้) ac.getBean ("ผู้ใช้"); System.out.println (user.getName ()); -เอาท์พุท
สิ่งนี้ช่วยให้การสร้างกรอบสปริงพื้นฐานสำหรับโครงการเว็บ ต่อไปเราจะทำส่วนขยายที่จะใช้ในโครงการจริง คุณสามารถกำหนดค่าฟังก์ชั่นบางอย่างหรือการตั้งค่าอื่น ๆ สำหรับการรวมกรอบฤดูใบไม้ผลิใน web.xml
<!-ตัวกรองการเข้ารหัสอักขระจะต้องวางไว้ที่ด้านบนของตัวกรอง-> <filter> <scod-name> encodingFilter </filter-name> <filter-class> org.springframework.web.filter.characterencodfilter </filter-class> <param-value> True </param-value> </init-param> <init-Param> <init-Param> <param-Name> การเข้ารหัส </param-name> <param-value> UTF-8 </param-value> </init-param> </filter> <url-pattern>/*</url-pattern> </ตัวกรอง-แมป> <!-ใช้ OpenSessionInview-> <Filter> <filter-Name> OpenSessionInViewFilter </filter-name> <param-name> singlesession </param-name> <param-value> True </param-value> </itrin-Param> <init-Param> <param-Name> SessionFactoryBeanName </param-name> <! <Stilter-Mapping> <silter-Name> OpenSessionInViewFilter </filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!-ตัวกรองความปลอดภัยสปริง org.springframework.web.filter.delegatingfilterproxy shiro,-> <filter> <filter-name> SpringsecurityFilterChain </filter-name> <silter-class> org.springframework.web.filter.delegatingFilterproxy </filter-class> <url-pattern>/*</url-pattern> </ตัวกรอง-แมป> <!-ประกาศสปริง MVC dispatcherservlet-> <servlet> <servlet-name> SpringDispatcher </servlet-name> <servlet-class> <param-Name> contextConfigLocation </param-name> <param-value> classpath*: spring-mvc.xml </param-value> </init-param> <load-on-startup> 1 </load-on-startup> </servlet> <! <url-pattern>/</url-pattern> </servlet-mapping> <!-หน้าข้อผิดพลาดการกำหนดค่า-> <srors-page> <srors-code> 404 </ข้อผิดพลาด-รหัส> <location> errorspage/404.jsp </location> <location>/errorpage/401.html </location> </error-page> <!-แนะนำ taglib.jspf และไฟล์อื่น ๆ สำหรับแต่ละหน้า jsp-> <jsp-config> <taglib> <Taglib-Location> /web-inf/runqianreport4.tld </taglib-location> </gatlib> <jsp-property-Group> <url-pattern>*. jsp </url-pattern> <!-<trim-directive-whitespaces> true </trim-directive-whitespaces>-> </jsp-property-Group> </jsp-config>
ในหมู่พวกเขา JSPF คือการสร้างงบทั่วโลก
<%@ page language = "java" contentType = "ข้อความ/html; charset = utf-8" <span style = "space สีขาว: pre"> </span> pageencoding = "utf-8"%> <%@ taglib prefix = "c" uri = "http://java.sun.com/j prefix = "fn" uri = "http://java.sun.com/jsp/jstl/functions"%> <%@ taglib คำนำหน้า = "fmt" uri = "http://java.sun.com/jsp/jstl/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 คำนำหน้า = "fmt" uri = "h taglib คำนำหน้า =" fnc "uri ="/web-inf/tlds/fnc.tld " <C: SET VAR = "CTX" spope = "Session" <span style = "White-space: pre"> </span> value = "$ {pageContext.request.context.context}" />>สามารถกำหนดค่าฟังก์ชั่นเพิ่มเติมได้ใน ApplicationContext.xml
<!-สามารถเพิ่มข้อความเพิ่มเติมลงในถั่ว-> <ถั่ว xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http://www.w3.org/2001/xmlschema xmlns: jee = "http://www.springframework.org/schema/jee" xmlns: tx = "http://www.springframework.org/schema/tx" xmlns: aop = "http:/ xmlns: context = "http://www.springframework.org/schema/context" xmlns: mvc = "http://www.springframework.org/schema/MVC http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/jee http://ww.springframework.org.org/schema http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/tx/spring-tx-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/mvc http://www.springframework.org/schema/MVC/SPRING-MVC-3.0.XSD <AOP: APASITJ-AUTOPROXY /> <MVC: คำอธิบายประกอบที่ขับเคลื่อนด้วย /> <!-ความคิดเห็นแทนที่การกำหนดค่า, สแกนแพ็คเกจพื้นฐานโดยอัตโนมัติ แพ็คเกจสแกนและคลาสทั้งหมดภายใต้แพ็คเกจย่อยทั้งหมดจะต้องถูกลบออกจากคอนโทรลเลอร์มิฉะนั้นมันจะส่งผลกระทบต่อการจัดการธุรกรรม-> <บริบท: ส่วนประกอบ-สแกนฐานแพคเกจ = "com.schoolnet"> <บริบท: exclude-filter type = "Annotation" Expression = " ไฟล์-> <bean id = "PropertyConfigurer"> <property name = "fileencoding" value = "utf-8"/> <property name = "locations"> <list> <ales> classpath: jdbc.properties </value> </list> </property> value = "$ {jdbc.DriverClassName}" /> <property name = "jdbcurl" value = "$ {jdbc.url}" /> <property name = "user" value = "$ {jdbc.username}" <value> 1 < /value> < /คุณสมบัติ> <property name = "maxPoolSize" value = "100" /> <property name = "InitialPoolSize" value = "3" /> <!-เวลาว่างสูงสุดหากการเชื่อมต่อไม่ได้ใช้ภายใน 60 วินาทีการเชื่อมต่อจะถูกยกเลิก ถ้าเป็น 0 มันจะไม่ถูกทิ้ง ค่าเริ่มต้น: 0-> <property name = "MaxidLetime" value = "60" /> <!-จำนวนการเชื่อมต่อที่ได้รับจาก C3P0 ในเวลาเดียวกันในครั้งเดียวเมื่อการเชื่อมต่อในพูลเชื่อมต่อหมด ค่าเริ่มต้น: 3-> <property name = "AcquireIncrement" value = "5" /> <property name = "MaxStatements" value = "0" /> <!-ตรวจสอบการเชื่อมต่อที่ไม่ได้ใช้งานในพูลการเชื่อมต่อทั้งหมดทุก 60 วินาที ค่าเริ่มต้น: 0-> <property name = "IdleConnectionTestPeriod" value = "60" /> <!-กำหนดจำนวนความพยายามซ้ำ ๆ หลังจากการเชื่อมต่อใหม่ไม่สามารถเรียกคืนได้จากฐานข้อมูล ค่าเริ่มต้น: 30-> <property name = "acquireerettempts" value = "30" /> <!-ล้มเหลวในการรับการเชื่อมต่อจะทำให้เธรดทั้งหมดรอพูลเชื่อมต่อเพื่อรับการเชื่อมต่อเพื่อโยนข้อยกเว้น อย่างไรก็ตามแหล่งข้อมูลยังคงใช้ได้และพยายามเชื่อมต่อในครั้งต่อไปที่คุณเรียก getConnection () หากตั้งค่าเป็นจริงแหล่งข้อมูลจะประกาศว่ามันถูกตัดการเชื่อมต่อและปิดอย่างถาวรหลังจากความพยายามที่ล้มเหลวในการรับการเชื่อมต่อ ค่าเริ่มต้น: false-> <property name = "breakafteracquirefailure" value = "false" /> <!-โปรดใช้เฉพาะเมื่อจำเป็นเนื่องจากการใช้ประสิทธิภาพสูง หากตั้งค่าเป็นจริงความถูกต้องของมันจะได้รับการตรวจสอบในการส่งการเชื่อมต่อแต่ละครั้ง ขอแนะนำให้ใช้ IdleConnectionTestPeriod หรือ AutomatictestTable เพื่อปรับปรุงประสิทธิภาพของการทดสอบการเชื่อมต่อ ค่าเริ่มต้น: false-> <property name = "TestConnectionOnCheckout" value = "false" /> </ebean> <!-คำจำกัดความของตัวจัดการธุรกรรม (การทำธุรกรรมประกาศ)-> <!-สนับสนุน @Transactional tags-> <! <TX: Transaction-Driven Transaction-Manager = "TransactionManager"/> <!-วิธีที่สอง: HibernatetransactionManager-> <bean id = "hibernatetransactionManager"> <property name = "SessionFactory"> <ref local = "SessionFactory"/> name = "dataSource" ref = "dataSource"/> <property name = "lobhandler" ref = "lobhandler"/> <property name = "mapinglocations"> <list> <value> classpath*/com/Schoolnet/**/*. hbm.xml Hibernate ไม่ได้สร้างตารางโดยอัตโนมัติเมื่อหลายพื้นที่ตารางจะเหมือนกันใน Oracle -> <prop key = "hibernate.default_schema"> $ {jdbc.username} </prop> <prop key = "hibernate.dialect"> org.hibernate.dialect.oracle10gdialect </prop> <prop key = "hibernate.show_sql" key = "hibernate.generate_statistics"> false </prop> <prop key = "hibernate.generate_statistics"> false </prop> <prop key = "hibernate.connection.rElease_Mode"> auto </prop> org.hibernate.cache.ehcacheprovider </prop> <!-แก้ปัญหาการรั่วไหลของหน่วยความจำ-> <prop key = "hibernate.cache.use_query_cache"> false </prop> <prop key = "use_second_level_cache" key = "current_session_context_class"> เธรด </prop> </props> </คุณสมบัติ> <property name = "EventListeners"> <prop> <entry key = "Merge"> <bean/> </entry> </map> Transaction-manager = "hibernatetransactionManager"> <tx: attributes> <tx: method name = "save*" การแพร่กระจาย = "จำเป็น" Rollback-for = "Exception" /> <tx: method name = "Add*" การเผยแพร่ = "ต้องการ" name = "modify*" การแพร่กระจาย = "จำเป็น" RollBack-for = "Exception" /> <tx: method name = "del*" การแพร่กระจาย = "ต้องการ" Rollback-for = "Exception" /> <tx: method name = "start*" propagation = "ต้องการ" name = "กำหนด*" การแพร่กระจาย = "ต้องการ" ย้อนกลับ-สำหรับ = "ข้อยกเว้น" /> <tx: method name = "Clear*" การแพร่กระจาย = "ต้องการ" Rollback-for = "Exception" /> <tx: method name = "Clear*" การเผยแพร่ = "ต้องการ" name = "แทรก*" การแพร่กระจาย = "ต้องการ" ย้อนกลับ-สำหรับ = "ข้อยกเว้น" /> <tx: method name = "do*" การแพร่กระจาย = "จำเป็น" Rollback-for = "Exception" /> <tx: method name = "set*" propagation = "จำเป็น" rest-only = "true"/> </tx: แอตทริบิวต์> </tx: คำแนะนำ> <!-กำหนดค่าวิธีการของคลาสเหล่านั้นสำหรับการจัดการธุรกรรม-> <aop: config> <aop: ที่ปรึกษา pointcut = "การดำเนินการ (com.eshine ..*. บริการ*.*(.. ))การกำหนดค่าไฟล์ Spring-MVC.XML
<? xml version = "1.0" การเข้ารหัส = "utf-8"?> <beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http://ww.w3.org/2001/xml xmlns: jee = "http://www.springframework.org/schema/jee" xmlns: tx = "http://www.springframework.org/schema/tx" xmlns: aop = "http:/ xmlns: context = "http://www.springframework.org/schema/context" xmlns: mvc = "http://www.springframework.org/schema/MVC http://www.springframework.org/schema/beans http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee. http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd 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.springframework <บริบท: Component-Scan base-package = "com.schoolnet" use-default-filters = "false"> <บริบท: รวมประเภทตัวกรอง = "คำอธิบายประกอบ" นิพจน์ = "org.springframework.steretype.controller" /> < /บริบท parser-> <bean id = "jspviewResolver"> <property name = "คำนำหน้า" value = " /" /> <ชื่อคุณสมบัติ = "คำต่อท้าย" value = ". jsp" /> <property name = "order" value = "0" /> <property name = "contentType <bean id = "multipartresolver"> <property name = "MaxUploadSize" value = "1073741824"/> </ebean> </ebeans>
สรุป
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้เกี่ยวกับการแบ่งปันรหัสเต็มของโครงการ Web Framework Spring ฉันหวังว่ามันจะเป็นประโยชน์กับทุกคน เพื่อนที่สนใจสามารถอ้างถึงเว็บไซต์นี้ต่อไปได้:
การแนะนำสไตล์ REST SpringMVC และรหัสการใช้งาน
SpringMVC Interceptor ใช้การลงชื่อเข้าใช้ครั้งเดียว
ตัวอย่างรหัสรายละเอียดของสปริงในสปริง
หากมีข้อบกพร่องใด ๆ โปรดฝากข้อความไว้เพื่อชี้ให้เห็น ขอบคุณเพื่อนที่ให้การสนับสนุนเว็บไซต์นี้!