لقد استخدمت دائمًا SSH. نظرًا لأن الشركة ترغب في استخدام SpringMVC ، لم أتعرض لها من قبل ، لذلك سأتعلم اليوم هذا الإطار حتى أتمكن من القيام بعملي.
بادئ ذي بدء ، دعونا نفهم ماهية النمط. النمط هو منهجية حل نوع معين من المشكلة ، وتلخيص الحلول لهذا النوع من المشكلة إلى المستوى النظري. هذا هو النمط. الأنماط هي دليل يساعد المطورين على إكمال المهام تحت إشراف جيد. يمكن أن يحقق وضع خطة تصميم ممتازة ضعف النتيجة بنصف الجهد. وستحصل على أفضل حل للمشكلة.
نشأ نمط MVC من لغة SmallTalk ، وهو اختصار لسيطرة عرض النموذج. MVC يضعف الاقتران بين واجهة منطق العمل وواجهة البيانات. هناك العديد من الفوائد لاستخدام وضع MVC ، مثل الموثوقية القوية ، وإعادة الاستخدام العالي والقدرة على التكيف ، وتكلفة دورة الحياة المنخفضة ، والنشر السريع ، والصيانة القوية ، وما إلى ذلك. لن أشرح الكثير عن التفاصيل هنا.
ميزات springMVC:
1. تقسيم دور واضح. يوفر الربيع تقسيمًا واضحًا للغاية في النموذج والعرض ووحدة التحكم. يتم تنفيذ هذه الجوانب الثلاثة حقًا ويفترض كل منها مسؤولياتها.
2. وظيفة التكوين المرنة ، لأن قلب الربيع هو IOC ، وفي تنفيذ MVC ، يمكن أيضًا تكوين فئات مختلفة من خلال XML كحبة.
3. توفير عدد كبير من واجهات وحدة التحكم وفئات التنفيذ ، بحيث يمكن للمطورين استخدام فئات تنفيذ وحدة التحكم التي توفرها الربيع ، أو تنفيذ واجهة وحدة التحكم بأنفسهم.
4. springMVC هو عرض حقيقي للطبقة مستقلة. لن يجبر المطورين على استخدام JSP. يمكننا استخدام تقنيات العرض الأخرى ، مثل السرعة ، XSKT ، إلخ.
5. دعم التدويل. يوفر ApplicationContext من Spring الدعم للتدويل ، والذي يمكن استخدامه بشكل مريح للغاية هنا.
6. البرمجة الموجهة نحو الواجهة. في الواقع ، هذه ليست فقط ميزة springMVC. من وجهة نظر الربيع ، تكون هذه الميزة واضحة للغاية لأنها تجعل من السهل على المطورين اختبار البرامج وإدارتها بسهولة.
7. يوفر Spring مجموعة كاملة من العمليات لتطوير تطبيقات الويب ، وليس فقط MVC ، والتي يمكن دمجها بسهولة. فيما يلي مثال على كيف فعلت ذلك بنفسي. بعد الانتهاء من هذا المثال ، أدركت حقًا قوة springMVC.
لنبدأ في تكوين مشروع SpringMVC الخاص بنا:
أولاً ، نقوم بتكوين 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-app_2_5.xsd" Dispatcherservlet ، الذي يتحكم في مسار الطلب من الصفحة بأكمله-> <Servlet-Name> Dispatcherservlet </servlet-name> <sterled-class> org.springframework.web.servlet.dispatcherservlet </isparlet-class> <! ContextConfigLocation-> <Param-name> contextConfigLocation </param-name> <param-value> /web-inf/classes/applicationContext.xml </param-value> </ith-param> <load-on-startup> 2 </load-on-startup> </servlet> <! <Verlet-Name> dispatcherservlet </servlet-name> <url-pattern>*. <Filter-Class> org.springframework.web.filter.CharacterEncodingFilter </filter-class> <Init-param> <param-name> الترميز </param-name> <param-value> utf-8 </param-value> <Url-pattern>/*</url-pattern> </filter-mapping> <-list-file-list> <lispile-file> index.jsp </isplip-file> </iship-file-lister> </web-app>
بعد تكوين ملف في كل مرة ، يوصى ببدء تشغيل الخادم أولاً لمعرفة ما إذا كان هناك استثناء ، وإلا سيكون من الصعب تصحيح الاستثناء في المرحلة اللاحقة.
بعد تكوين web.xml ، نحتاج إلى إنشاء ملف db-config.properties في دليل SRC لتخزين معلومات تكوين مصدر البيانات لدينا:
المحتوى كما يلي:
db.url = jdbc: mysql: /// springmvcdb؟ useUnicode = true & farmentSding = utf8db.username = rootdb.password = rootdb.dirverClass = com.mysql.jdbc.driver
بعد تكوين db-config.properties ، ابدأ في تكوين ملف ApplicationContext.xml:
<؟ XSI: schemalocation = "http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans-2.5. <property name = "socations"> <list> <value> classpath: db-config.properties </value> </list> </sprement> </boen> <!-احصل على مصدر البيانات-> <bean id = "dataSource"> <property name = "driverClassName"> <value> $ {db.dirverClass} <Value> $ {db.url} </value> </sprention> <property name = "username"> <value> $ {db.username} </value> </propert العناوين ، والقيمة هي اسم حبة المعالج. يمكن لعنوان ملف برنامج عنوان URL تبني نمط مطابقة المسار ، مثل: com/mvc/t؟ st.jsp: Match com/mvc/test.jsp ، com/mvc/tast.jsp ، إلخ. com/mvc /*. com/mvc /**/*.jsp: تطابق جميع عناوين URL مع .jsp اللواحق تحت مسار com/mvc أو مسار النحيل cn/**/web/bla.jsp: مطابقة طلبات cn/option/web/dog.jsp cn/test/web/web cn/web/dog. user.do = userAction </value> </property> </bean> <!-يتم استخدام عرض التعريف من خلال internalResourceView للإشارة إلى أنه يتم استخدام تقنية servlet/jsp-> <bean id = "viewResolver"> <property name = "viewClass"> <value> org.springframework.web.servlet.view. JSP-> <property name = "previx"> <value>/jsp/</value> </sorterperation> <!-تعريف لاحقة اللاحقة-> <property name = "fuckix"> <value>. <bean id = "useraction"> <property name = "dao"> <ref bean = "userdao"/> </splense> <property name = "commandclass"> <value> com.yjde.springmvc.userdao </value> </sopperation> <property name = "viewpage"بعد تكوين ملف ApplicationContext.xml ، نبدأ في كتابة فئات Java محددة. نحتاج إلى فئة DAO ، وطبقة وحدة تحكم و PO
لقد أنشأنا جدول usermbo في MySQL ، والذي يحتوي على ثلاثة حقول مستخدم ، اسم المستخدم ، الاستخدام
فئة userdao:
حزمة com.yjde.springmvc ؛ استيراد java.sql.resultset ؛ استيراد java.sql.sqlexception ؛ استيراد java.util.collection ؛ استيراد java.util.list ؛ استيراد org.springframework.jdbc.core.rowmapper ؛ استيراد org.springframework.jdbc.core.support.jdbcdaosupport ؛ suppressWarnings ("All") الفئة العامة userDao يمتد JDBCDAOSUPPORT {private string msg ؛ السلسلة العامة getMsg () {return msg ؛ } public void setMsg (String msg) {this.msg = msg ؛ }. return super.getjdbctemplate (). Query (SQL ، new RowMapper () {public Object maprow (resultset rs ، int num) يرمي sqlexception {userpo user = new userpo () ؛ user.setUserId (rs.getint ("userid")) ؛ user.setUsername (rs.getString ("useername") ؛ user.setUserage ("userage") ؛ }}JDBCtemplate هي الفئة الأساسية للحزمة الأساسية. يقوم بإنشاء وإصدار الموارد بالنسبة لنا ، وبالتالي تبسيط استخدامنا لـ JDBC. يمكن أن يساعدنا أيضًا في تجنب الأخطاء الشائعة مثل نسيان إغلاق اتصال قاعدة البيانات. لمزيد من التفاصيل ، يرجى الرجوع إلى API
فئة وحدة التحكم:
حزمة com.yjde.springmvc ؛ استيراد java.io.printwriter ؛ استيراد java.util.arraylist ؛ استيراد java.util.collection ؛ استيراد java.util.hashmap ؛ استيراد java.util.list ؛ استيراد java.util.map ؛ استيراد javax.servlet.http.httpservletrequest ؛ استيراد javax.servlet.http.httpservletresponse ؛ استيراد org.springframework.validation.bindexception ؛ استيراد org.springframework.web.servlet.modelandview ؛ استيراد org.springframework.web.servlet.mvc.simpleformController ؛ suppressWarnings ("All") // SimpleformController هو وحدة تحكم النماذج التي توفرها الربيع. يقوم بتعيين اسم العنصر في النموذج على الصفحة إلى نفس الحبة. عند تمريره ، سيحصل Spring تلقائيًا على قيمة العنصر لنفس اسم الفاصوليا في النموذج وتحويله إلى حبة ، بحيث يمكن للمطورين استخدامها بسهولة كبيرة. الطبقة العامة USERCONTROLLER يمتد SimpleFormController {private string viewpage ؛ userdao dao الخاص ؛ السلسلة العامة getViewPage () {return viewPage ؛ } public void setViewPage (string viewPage) {this.viewPage = viewPage ؛ } Override ModelandView OnSubmit (طلب httpservletrequest ، استجابة httpservletresponse ، أمر الكائن ، أخطاء bindException) يلقي الاستثناء {userDao tmp = (userDao) ؛ Collection <Serpo> list = dao.doquery () ؛ قائمة <SetherPo> المستخدمين = ArrayList جديد <SetherPo> () ؛ مستخدم UserPo ؛ لـ (userPo userPo: list) {user = new userPo () ؛ user.setUserId (userPo.getuserId ()) ؛ user.setuserName (userPo.getUserName ()) ؛ user.setUserage (userPo.getuserage ()) ؛ user.add (user) ؛ } map mp = new hashmap () ؛ mp.put ("list" ، المستخدمين) ؛ إرجاع New ModelAndView (GetViewPage () ، MP) ؛ } public void setdao (userDao dao) {this.dao = dao ؛ }} package com.yjde.springmvc ؛ الفئة العامة userpo {private integer userId ؛ اسم المستخدم الخاص بالسلسلة الخاصة ؛ استخدام عدد صحيح خاص ؛ عدد صحيح عام getUserId () {return userId ؛ } public void setUserId (integer userId) {this.userId = userId ؛ } السلسلة العامة getUserName () {return username ؛ } public void setusername (string username) {this.userName = username ؛ } integer getUserage () {return userage ؛ } public void setUserage (integer userage) {this.userage = userage ؛ }}} </pre> <br> <p align = "left"> <span style = "color: teal"> بعد اكتمال إنشاء الفصل ، سنكتب اثنين </span> <span style = "color: teal"> jsp </span> <span style = "color: teal" <p align = "left"> <span style = "color:#bf5f3f"> </span> </p> <pre name = "code"> <٪@ page language = "java" import = "java.util.* String BasePath = request.getScheme ()+": //"+request.getServerName ()+":"+request.getServerPort ()+path+"/" ؛ ٪> <! doctype html public "-// w3c // dtd html 4.01 transitional // en"> <html> <head> <base href = "<٪ = basepath ٪"> <title> meta my jsp 'index.jsp' page </title> http-equiv = "cache-control" content = "no-cache"> <meta http-equiv = "Expires" content = "0"> <meta http-equiv = "keywords" content = "keyword1 ، keyword2 ، keyword3"> <meta http-equiv = "description" content = type = "text/css" href = "styles.css"> -> </head> <body> <form action = "user.do" method = "post"> الرجاء إدخال <input name = "msg" type = "text"/> <input type = "submit" value = "prident"> </form> </html> </span> </p> <p align = "left"> <span style = "color: teal"> النتيجة النهائية: </pans> </p> <p align = "left"> <span style = "color: teal"> <img src = "http://my.csdn.net/uploads/201204/24/1335237333_4732.png"> </pan> </p> <p align = "left"> span style = "color: teal" creation data: </pan style = "color:#008080"> </span> </p> <pre name = "code">/* navicat mysql نقل البيانات الخادم المصدر: mysql source server الإصدار: 50145 المصدر المضيف: localhost: 3306 database: 2012-204.2-204.204.204.204.204.204.204.204.24 */ set Overide_key_checks = 0 ؛ --------------------------------هيكل الجدول لـ `usermbo`--------------------------- table إذا كان هناك` usermbo` ؛ قم بإنشاء جدول `usermbo` (` userid` int (11) not null default '0' ، `username` varchar (50) default null ،` userage` int (11) null null ، key pricial (`userid`)) engine = innodb defaultcharset = utf8 ؛ --------------------------------سجلات UserMbo--------------------------- إدراج في قيم `usermbo` ('1' ، '李晓红' ، '25') ؛ أدخل في قيم `usermbo` ('2' ، '柳梦璃' ، '27') ؛ أدخل في قيم `usermbo` ('3' ، '韩菱纱' ، '26') ؛ </pre> تنزيل مثال: العرض التوضيحي
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.