1. التحضير
قبل البدء ، يرجى الرجوع إلى المقالة السابقة:
Struts2.3.24 + Spring4.1.6 + Hibernate4.3.11 + MySQL5.5.25 بناء بيئة التطوير والتفسيرات ذات الصلة هي نفسها ، ولكن يتم استبدال Struts2 بـ Spring MVC
2. أماكن مختلفة
دليل المشروع وحزمة جرة:
تغيير حزمة الإجراء إلى وحدة التحكم ؛
احذف حزمة struts2 جرة وأضف حزمة Spring MVC (إذا كانت موجودة بالفعل ، فأنت لا تحتاج إلى إضافتها) ؛
تكوين web.xml:
الفرق من قبل هو أن مرشح STRUTS2 يتم استبداله بـ servlet ، والغرض الرئيسي هو توجيه عنوان URL وتسليمه إلى Spring MVC للمعالجة ؛
<؟ 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_3_0.xd <splay-name> ssh </display-name> <context-param> <Param-name> contextConfigLocation </param-name> <param-value> classPath: ApplicationContext.xml </parm-value> </ context-param> <Stanker> </stanker> <list-file-list> <lisplive-file> index.jsp </iship-file> </iship-file-lister> <vervlet> <Sradlet-Name> springmvc </servlet-name> <Servlet-class> org.springframework.web.servlet.dispatcherservlet <Param-value> classpath: springmvc-servlet.xml </param-value> </ith-param> <load-on-startup> 1 </over-on-startup> </rectlet> <cervlet mapping> <cervlet-name> springmvc </servlet-name>
تكوين ApplicationContext.xml:
يتم الفرق بشكل أساسي عند تكوين المسح التلقائي ، يجب استبعاد مكون Controller. يتم إنشاء هذه الفاصوليا بواسطة الربيع MVC.
التكوينات الأخرى هي نفسها كما في المقالة السابقة ؛
<؟ xmlns: context = "http://www.springframework.org/schema/context" xmlns: tx = "http://www.springframework.org/schema/tx" xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xmlns: jdbc = "http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/Aop http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.1.xsd http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/context/spring-context-4.1.xsd "> <! المكون ، الذي تم مسحه ضوئيًا بواسطة ملف تكوين springMVC-> <السياق: استبعاد نوع المرشح = "التعليق التوضيحي" التعبير = "org.springframework.steretype.controller" /> < /context: component-scan> <!-اختيار مصدر البيانات-> value = "com.mysql.jdbc.driver" /> <property name = "jdbcurl" value = "jdbc: mysql: // localhost: 3306 /demo" /> <property name = "user" value = "root" /> <property name = "password" value = "root" /> name = "initialPoolSize" value = "80"> </premart> <property name = "maxidletime" value = "60"> </property> <property name = "maxpoolsize" value = "80" name = "quiveretryattempts" value = "60"> </property> <property name = "breakafteracquirefailure" value = "false"> </propert name = "dataSource" ref = "dataSource"/> <property name = "hibernateProperties"> <bors> <prop key = "hibernate.dialect"> org.hibernate.dialect.mysqldialec key = "hibernate.hbm2ddl.auto"> تحديث </prop> <prop key = "hibernate.hbm2ddl.auto"> تحديث </prop> <prop> </prop_size "> 10 </prop> <prop key =" current_session_context_class "> key = "hibernate.cache.use_second_level_cache"> true </prop> <prop key = "hibernate.cache.factory_class"> org.hibernate.cache.ehcache key = "hibernate.cache.provider_configuration_file_resource_path"> ehcache.xml </props> </props> </property> <property name = "mappinglocations"> <list> <value> classpath: ssh/model. <value> ssh.model.user </value> </list> </sprement>-> </bean> <!-تكوين مدير المعاملات-> <bean id = "TransactionManager"> <property name = "sessionfactory" ref = "sessionfactory"/> </bean> <! <tx: entributes> <tx: method name = "add*" spection = "required" read-only = "false" rollback-for = "java.lang.exception"/> <tx: method name = "delete*" method = "required" read-only = "false" rollback-for = "java.lang.exception"/> read-only = "false" rollack-for = "java.lang.exception"/> <tx: method name = "update*" spection = "required" read-only = "false" rollback-for = "java.lang.exception"/> <tx: method name = "save* </tx: entributes> </sx: expled> <aop: config> <aop: pointcut id = "pcmethod" expression = "execution (*ssh.service ..*.*. id = "aoptest"> </bean> <bean id = "myaop"> </bean> <aop: config proxy-target-class = "true"> <aop: side ref = "myaop"> <aop: pointcut id = "pcmethodtest" expression = "execution (* ssh.aop.aoptest. pointcut-ref = "pcmethodtest" method = "ins"/> <aop: بعد pointcut-ref = "pcmethodtest" method = "بعد"/> </aop: side> </aop: config> </bans>
تكوين springmvc-servlet.xml:
قم بتكوين المسح التلقائي لـ Controller ضمن حزمة SSH.Controller. تحتاج هنا إلى استعادة المرشح المستثمر الذي تم تكوينه في ApplicationContext.xml ؛
تكوين محلل العرض ، هناك العديد من المحلات ، هنا نأخذ InternalResourceViewResolver كمثال ؛
<؟ Xmlns: mvc = "http://www.springframework.org/schema/mvc" xmlns: p = "http://www.springframework.org/schema/p" Xmlns: XSI = "http://www.w3.org/2001/xmlschema-instance" http://www.springframework.org/schema/beans http://www.springframework.org/schema/mvc http://www.springframework.org/schema/tx/spring-tx-4.1.xsd "> <!-بدء المسح التلقائي لجميع الفاصوليا تحت هذه الحزمة (على سبيل المثال ، controller) مسار المسح ssh.controller-> <سياق: قم بتضمين نوع المرشح = "التعليق التوضيحي" التعبير = "org.springframework.steretype.controller"/> </context: component-scan> <!-تحديد المحلل المحلي-> bean> <propert <value> .jsp </value> </property> </bans>
اكتب وحدة التحكم:
نظرًا لاستخدام Spring MVC لاستبدال Struts2 ، لا توجد حزمة عمل. حذف وإنشاء حزمة تحكم جديدة. إنشاء فئة USERCONTROLLER جديدة ضمن الحزمة ؛
requestmapping: MAP url ؛
ResponseBody: يتم إرجاع المحتوى مباشرة كهيئة ؛
USERCONTROLLER.JAVA
package ssh.controller ؛ import java.io.printwriter ؛ import java.util.list ؛ import javax.annotation.resource ؛ import javax.servlet.http.httpservletrequest ؛ import javax.servlet.http.httpletrespons org.springframework.stereotype.controller ؛ استيراد org.springframework.web.bind.annotation.requestMapping ؛ استيراد org.springframework.web.bind.annotation.responsebody com.google.gson.gson ؛@controller@requestMapping ("/user") الفئة العامة USERCONTROLLER {logger logger = logger.getLogger (USERCONTROLLER.CLASS) ؛ Resource الخاص userverservice uservice ؛ @resource private aoptest aoptest ؛ requestmapping (value = "/adduser") @responsebody public void adduser (طلب httpservletrequest ، استجابة httpservletresponse) {printWriter out = null ؛ حاول {response.setContentType ("text/html ؛ charset = utf-8") ؛ حساب string = request.getParameter ("حساب") ؛ اسم السلسلة = request.getParameter ("name") ؛ عنوان السلسلة = request.getParameter ("العنوان") ؛ مستخدم المستخدم = مستخدم جديد () ؛ user.setAccount (حساب) ؛ user.setaddress (العنوان) ؛ user.setName (name) ؛ UserService.add (المستخدم) ؛ out = response.getWriter () ؛ out.write (new gson (). tojson ("النجاح")) ؛ } catch (استثناء e) {E.PrintStackTrace () ؛ logger.error (e.getMessage ()) ؛ if (out! = null) out.write (new gson (). tojson ("fail")) ؛ } أخيرًا {out.flush () ؛ out.close () ؛ }} @requestmapping (value = "/QueryUser") responsebody public void QueryAlluser (طلب httpservletrequest ، استجابة httpservletresponse) {printWriter out = null ؛ aoptest.test1 () ؛ aoptest.test2 () ؛ حاول {response.setContentType ("text/html ؛ charset = utf-8") ؛ gson gson = new gson () ؛ قائمة <Sether> userList = userService.queryAlluser () ؛ String gsonstr = gson.tojson (userlist) ؛ out = response.getWriter () ؛ out.write (gsonstr) ؛ } catch (استثناء e) {E.PrintStackTrace () ؛ logger.error (e.getMessage ()) ؛ if (out! = null) out.write (new gson (). tojson ("fail")) ؛ } أخيرًا {out.flush () ؛ out.close () ؛ }}} 3. قم بتشغيل البرنامج
قم بتشغيل البرنامج وإضافة المستخدمين والاستعلام. الوظيفة طبيعية.
بالإضافة إلى ذلك ، تعمل ذاكرة التخزين المؤقت الثانوية أيضًا بشكل طبيعي ، ولم تعد قاعدة البيانات تعمل في الاستعلام الثاني ؛
Author مشفر يشبه الرياح
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.