هنا مثال أبسط
1. إنشاء مشروع Javawebs قياسي جديد
2. استيراد بعض حزم الجرة الأساسية المطلوبة لفصل الربيع
3. تكوين ملف web.xml
<؟ XSI: schemalocation = "http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web- <context-param> <Param-name> contextConfigLocation </param-name> <param-value> classpath*: applicationContext*.xml ، </param-value> </suctext-param> <! </stanker> <-list-file-lister> <lispile> index.jsp </isplip-file> </siff-file-list> </bil-app>
4. أضف Application Configuration Application Configuration
5. قم بعمل أسهل تكوين لملف ApplicationContext.xml
<؟ XSI: schemalocation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd name = "name" value = "Zhang San"/> </bean> </bans>
الفاصوليا-العقدة الجذر لملف XML.
Xmlns - هو اختصار من XmlNamesPace. نظرًا لأن أسماء علامات ملفات XML مخصصة ، فمن المحتمل أن يتم تكرار العلامات المكتوبة من قبل الآخرين والتي يتم تعريفها من قبل الآخرين ، ولكن الوظائف مختلفة ، لذلك يجب إضافة مساحة الاسم لتمييز ملف XML هذا عن ملفات XML الأخرى ، على غرار الحزمة في Java.
XMLNS: يشير XSI - إلى ملف XML يتوافق مع مواصفات XML. يشير الاسم الكامل لـ XSI: XMLSChemainstance إلى المواصفات التي تليها بدقة العناصر المحددة في ملف مورد المخطط المستخدم. وهذا هو ، ما هي المعايير التي تتوافق معها العناصر في ملف /spring-beans-2.0.xsd؟
XSI: Schemalocation - يشير إلى المواصفات التي يتوافق مع عنصر XML في هذا المستند. يتم استخدام خاصية Schemalocation للمرجع (المخطط) وثيقة المخطط. يمكن للمحلل استخدام هذا المستند للتحقق من مستند مثيل XML إذا لزم الأمر. تظهر قيمتها (URI) في أزواج ، والقيمة الأولى تمثل مساحة الاسم ، والقيمة الثانية تمثل الموقع المحدد لمستند النمط الذي يصف مساحة الاسم ، مفصولة بالمسافات.
6. إنشاء مستخدم فئة كيان جديد
حزمة com.po ؛ مستخدم الفئة العامة {اسم السلسلة الخاصة ؛ سن السلسلة الخاصة ؛ السلسلة العامة getName () {return name ؛ } public void setName (اسم السلسلة) {this.name = name ؛ } السلسلة العامة getage () {عودة العائد ؛ } public void setage (string age) {this.age = age ؛ }}7. اختبار
الفراغ الثابت العام (سلسلة [] args) {// todo method method method applicationcontext ac = new FileSystemSmlapPlicationContext ("config/applicationContext.xml") ؛ مستخدم المستخدم = (المستخدم) ac.getBean ("المستخدم") ؛ System.out.println (user.getName ()) ؛ }الإخراج
وهذا يتيح بناء إطار عمل ربيعي أساسي لمشاريع الويب. بعد ذلك ، سنقوم ببعض الامتدادات التي سيتم استخدامها في المشاريع الحقيقية. يمكنك تكوين بعض الوظائف أو الإعدادات الأخرى لتكامل إطار عمل الربيع في web.xml.
<!-يجب وضع مرشحات ترميز الأحرف في الجزء العلوي من الفلتر-> <lipter> <filter-name> encodingFilter </filter-name> <listlister-class> org.springframework.web.filter.characterencodingfilter </filter-class> <Param-value> true </param-value> </IPAR-PARAM> <IRING-PARAM> <IRING-PARAM> <PARAM-NAME> الترميز </param-name> <Param-value> utf-8 </parm-value> </ith-param> </filter> <ilter-name> <Url-pattern>/*</url-pattern> </filter-mapping> <!-استخدم OpenSessionInView-> <ilter> <iliter-name> opensessioninviewfilter </filter-name> <ilter-class> org.springframework.orm.hibernate3 <Param-Name> singlesession </param-name> <param-value> true </param-value> </ith-param> <Init-param> <param-name> sessionfactorybeanname </param-name> <!-حدد أي SessionFactory في تكوين الربيع لاستخدام OpenSessionInview- <filter-mapping> <filter-name> OpenSessionInViewFilter </filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!-Spring Security filter org.springframework.web.filter.delegatingfilterproxy (devilter proxy)- shiro ،-> <lipter> <ilter-name> springsecurityfilterchain </filter-name> <ilter-class> org.springframework.web.filter.delegatingfilterproxy </filter-class> </filter> <ilter-mapping> <Url-pattern>/*</url-pattern> </filter mapping> <!-إعلان Spring MVC Dispatcherservlet-> <vervlet> <Servlet-name> SpringDispatcher </servlet-name> <Iparlet-class> org.springframework.web.servlet.dispatcherservle <Param-name> contextConfigLocation </param-name> <Param-value> classpath*: spring-mvc.xml </parm-value> </ith-param> <load-on-startup> 1 </trad-on-startup> </servlet> <! <Url-pittern>/</url-pittern> </stervlet mapping> <!-صفحة خطأ التكوين-> <-page-page> <error-code> 404 </rerror-code> <location> errorpage/404.jsp </sotion> </error-page> <!-401 error-> error-page> </error-page> <!-تقديم taglib.jspf والملفات الأخرى لكل صفحة JSP-> <jsp-config> <Agglib> <aglib-uri> /web-inf/runqianreport4.tld </taglib-uri> <jsp-property-group> <Url-pattern>*. </jsp-config>
من بينها ، JSPF هو الإدلاء ببعض البيانات العالمية
<٪@ 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/jsp/jstl/functions" ٪> <٪@ taglib prefix = "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 previx = "fmt" uri = "http://java.sun.com/jsp/jstl/fmt" ٪> <٪@ taglib prefix = "fmt" uri = "http://java.sun.com/jsp/jstl/fmt" ٪> <٪@ taglib previx = "fmt" uri = "http://java.sun.com/jsp/jstl/fmt" ٪> <٪@ taglib prefix = "fmt" uri = "http://java.sun.com/jsp/jstl/fmt" ٪> <٪@ taglib previx = "fmt" uri = "http://java.sun.com/jsp/jstl/fMt var = "ctx" scope = "session" <span style = "white-Space: pre"> </span> value = "$ {pagecontext.request.contextpath}" />يمكن تكوين المزيد من الوظائف في ApplicationContext.xml
<!-يمكن إضافة المزيد من العبارات إلى الفول-> <beans xmlns = "http://www.springframework.org/schema/beans" xmlns: jee = "http://www.springframework.org/schema/jee" xmlns: context = "http://www.springframework.org/schema/context" xmlns: mvc = "http://www.springframework.org/schema/mvc" XSI: schemalocation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/skee/skee http://www.springframework.org/schema/jee/spring-jee.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd http://www.springfframework.org/schema/ http://www.springframework.org/schema/context/spring-context.xsd الافتراضي--init = "false" default-autowire = "byname"> <!-حدد القسم مع التعليقات التوضيحية-> <aop: sidej-autoproxy /> <mvc: يحركه التعليق التوضيحي /> <!-التعليق يحل محل التكوين ، ويسخّم الحزمة الأساسية تلقائيًا. يجب إزالة حزمة المسح الضوئي وجميع الفئات الموجودة تحت جميع الحالات الفرعية من وحدة التحكم ، وإلا فإنها ستؤثر على إدارة المعاملات-> <السياق: مكون المستحضر الأساسي = "com.schoolnet"> <سياق: استبعاد الترتيب = component-synotation "exprentation" exprentation = "org.springframeweweWork.stereType" ملف التكوين-> <bean id = "propertyConfigurer"> <property name = "fileEncoding" value = "utf-8"/> <property name = "sorts"> <list> <value> classPath: jdbc.properties </value> </sister> </spertar value = "$ {jdbc.driverClassName}" /> <property name = "jdbcurl" value = "$ {jdbc.url}" /> <property name = "user" value = "$ {jdbc.username}" /> <property name = "$ {jdbc.pasword} <Value> 1 < /value> </swerperation> <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 = "idleconnecteTestPeriod" value = "60" /> <!-يحدد عدد المحاولات المتكررة بعد أن تم استرداد اتصال جديد من قاعدة البيانات. الافتراضي: 30-> <property name = "quiveretryattemps" value = "30" /> <!-سيؤدي إلى الحصول على اتصال سيؤدي إلى الحصول على جميع مؤشرات الترابط في انتظار تجمع الاتصال للحصول على اتصال لإلقاء استثناء. ومع ذلك ، لا يزال مصدر البيانات صالحًا ويستمر في محاولة الحصول على الاتصال في المرة التالية التي تتصل فيها GetConnection (). إذا تم تعيينه على TRUE ، فسيعلن مصدر البيانات أنه تم فصله وإغلاقه بشكل دائم بعد محاولات فاشلة للحصول على الاتصال. الافتراضي: false-> <property name = "breakafteracquirefailure" value = "false" /> <!-يرجى استخدامه فقط عند الحاجة إلى استهلاك الأداء العالي. إذا تم ضبطه على TRUE ، فسيتم التحقق من صلاحيته عند كل تقديم اتصال. يوصى باستخدام idleconnectionTestperiod أو AutomatictEstTable لتحسين أداء اختبار الاتصال. الافتراضي: false-> <property name = "testConnectionOncheckout" value = "false" /> </bean> <!-تعريف مدير المعاملات (المعاملة التعريفية)-> <!-دعم العلامات transactional-> <! <tx: معاملة المعاملة التي تعتمد على التعليقات التوضيحية = "TransactionManager"/> <!-الطريقة الثانية: HiberNateTransActionManager-> <bean id = "hibernatetransactionmanager"> <property name = "sessionfactory"> ref local = "sessionfactory"/> </property> <property name = "datasource" ref = "datasource"/> <property name = "lobhandler" ref = "lobhandler"/> <property name = "mappinglocations"> <list> <value> classPath*:/com/schoolnet/**/*. لا تقوم Hibernate تلقائيًا بإنشاء الجداول عندما تكون مساحات ملاعق متعددة هي نفسها في Oracle. -> <prop key = "hibernate.default_schema"> $ {jdbc.userName} </prop> <prop key = "hibernate.dialect"> org.hibernate.dialect.oracle10gdialect </prop> <repernate.show_sql " key = "hibernate.generate_statistics"> false </prop> <prop key = "hibernate.generate_statistics"> false </prop> <propernate.connection.Release_Mode "> auto </proving> <propernate.aiBernate.autoreconnect org.hibernate.cache.ehcacheprovider </prop> <!-حل مشكلة تسرب الذاكرة-> <prop key = "hibernate.cache.use_query_cache"> false </prop> <prop> exated <second_level_cache " key = "current_session_context_class"> مؤشر ترابط </prop> </rops> </property> <property name = "eventlisteners"> <map> <intrade key = "merge"> <boan/> </tense> </pam> </property> </bean> <! المعاملات-manager = "hibernatetransactactionmanager"> <tx: attributes> <tx: method name = "save*" spection = "مطلوبة" Rollback-for = "استثناء" /> <tx: method name = "add*" spection = "alquired for" reback-for = name = "modify*" spection = "مطلوبة" Rollback-for = "استثناء" /> <tx: method name = "del*" spection = "مطلوبة" Rollback-for = "استثناء" /> <tx: method name = "start*" spection = "requestation" moth "requistred = tx" moth " /tx" moth ". الانتشار = "مطلوب" Rollback-for = "استثناء" /> <tx: method name = "clear*" "spection =" مطلوبة "Rollback-for =" استثناء " /> <tx: method name =" clear*"spection =" مطلوبة "Rollback-for =" mething " /> flackback-for = "inscreptive" /> <tx: method name = "do*" spection = "required" rollback-for = "issecent" /> <tx: method name = "set* </tx: expray> <!-تكوين طرق تلك الفئات لإدارة المعاملات-> <aop: config> <aop: advisor pointcut = "execution (*com.eshine ..*. service.*.*(..))spring-mvc.xml تكوين ملف
<؟ xmlns: jee = "http://www.springframework.org/schema/jee" xmlns: context = "http://www.springframework.org/schema/context" xmlns: mvc = "http://www.springframework.org/schema/mvc" XSI: schemalocation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans http://www.springframework.org/schemae/jee http://www.springframework.org/schema/jee/spring-jee.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd http://www.springframework.org/schema/Spring-3.xsd http://www.springframework.org/schema/context/spring-context-3.0.xsd <السياق: مكون المسح الضوئي-package = "com.schoolnet" use-default-filters = "false"> <context: include-filter type = "anotation" expression = "org.springframewew JSP View Parser-> <bean id = "jspviewResolver"> <property name = "prefix" value = " /" /> <property name = "fuctix" value = ". jsp" /> <propert <bean id = "multipartresolver"> <property name = "maxuploadsize" value = "1073741824"/> </bean> </bans>
لخص
ما ورد أعلاه هو كل محتوى هذه المقالة حول مشاركة الكود الكامل لمشروع الويب Spring Framework. آمل أن يكون ذلك مفيدًا للجميع. يمكن للأصدقاء المهتمين الاستمرار في الرجوع إلى هذا الموقع:
مقدمة نمط الراحة springmvc ومثل رمز التنفيذ مثال
ينفذ اعتراض springmvc علامة واحدة
نماذج رمز مفصّل مدمج في الربيع
إذا كانت هناك أي أوجه قصور ، فيرجى ترك رسالة لإشارةها. شكرا لك يا أصدقائك لدعمكم لهذا الموقع!