المفاهيم الأساسية
1.1. ربيع
Spring هو إطار مفتوح المصدر ، وهو إطار تطوير Java خفيف الوزن الذي ظهر في عام 2003 ، مستمدًا من بعض الأفكار والنماذج الأولية التي أوضحها رود جونسون في كتابه "خبيره" واحد على واحد J2EE Development. تم إنشاؤه لمعالجة تعقيد تطوير تطبيقات المؤسسة. يستخدم Spring Javabeans الأساسي للقيام بأشياء كانت ممكنة من قبل فقط بواسطة EJB. ومع ذلك ، لا تقتصر استخدامات Spring على تطوير جانب الخادم. من منظور البساطة ، قابلية الاختبار والاقتران الفضفاض ، يمكن لأي تطبيق Java الاستفادة من الربيع. ببساطة ، الربيع هو انعكاس خفيف للسيطرة (IOC) وإطار الحاوية الموجهة نحو القسم (AOP).
1.2. springmvc
Spring MVC هو منتج لاحق لـ Springframework وتم دمجه في تدفق الويب الربيعي. يفصل SPRING MVC أدوار وحدات التحكم ، وكائنات النماذج ، والمرسلين ، وكائنات المعالج ، وهذا الفصل يجعلها أسهل في التخصيص.
1.3. mybatis
MyBatis هو مشروع مفتوح المصدر من Apache. في عام 2010 ، تم نقل هذا المشروع من مؤسسة Apache Software Foundation إلى Google Code وتم إعادة تسمية MyBatis. Mybatis هو إطار طبقة الثبات القائم على Java. يوفر IBATIS أطر طبقة الثبات بما في ذلك خرائط SQL وكائنات الوصول إلى البيانات (DAO) MyBatis يلغي الإعداد اليدوي لجميع كود ومعلمات JDBC تقريبًا واسترجاع مجموعات النتائج. يستخدم MyBatis XML أو التعليقات التوضيحية البسيطة للتكوين والتعيين الأصلي لتعيين واجهات و Pojos من Java (كائنات Java القديمة) في سجلات في قاعدة البيانات.
الخطوة 1: إنشاء مشروع ويب من خلال Maven.
الخطوة 2: استيراد ملف POM في حزمة JAR
(1) pom.xml
لقد قمت بنسخ ملف POM بالكامل ، وتحتاج إلى إزالة بعض أشياء التهيئة والاحتفاظ بالنسخ الذي تم إنشاؤه بواسطة POM الخاص بك.
<project xmlns = "http://maven.apache.org/pom/4.0.0" http://maven.apache.org/maven-v4_0_0.xsd "> <Dodeversion> 4.0.0 </modelversion> <roupiD> com.test </groupId> <Url> http://maven.apache.org </url> <properties> <!-رقم إصدار الربيع-> <pring.version> 4.0.2.Release </spring.vent.version> <! <lf4j.version> 1.7.7 </slf4j.version> <log4j.version> 1.2.17 </log4j.version> </sugnes> <reperencies> <redence> <roupiD> junit </rougiD> <StifactId> Junit </attifactid> <roughid> org.springframework </rougiD> <StifactId> Spring-core </artifactId> <الإصدار> $ {spring.version} </version> </sependency> <reperency> <roupid> org.springframework </rougeid> <Rependency> <roupend> org.springframework </rougiD> <StifactId> Spring-oxm </shintifactid> <sophy> $ {spring.version} </version> </sependency> <redenced> <springid> org.springframework </rouckid> </reperency> <reperency> <roupiD> org.springframework </rougiD> <StifactId> spring-jdbc </shintifactid> <sophy> $ {spring.version} </spervactid> </rependency> <sropencid> <sperive> $ {spring.version} </version> </sependency> <redence> <roupiD> org.springframework </rougeid> <StifactId> spring-aop </stifactid> <spert> $ {spring.version} </version> <StifactId> spring-context-support </stifactid> <الإصدار> $ {spring.version} </version> </deperency> <reperence> <roupled> org.springframework </roucid> <brateD> test-test SPRING </stifctid> <ProwEd> org.mybatis </rougiD> <StifactId> myBatis </stifactid> <sophy> $ {myBatis.version} <splement> </repreadency> <!-MyBatis/Spring Package-> <reperence> <roupency> org.mybatis </groupid> </reperency> <!-استيراد حزمة java ee jar-> <rependency> <roupiD> javax </rougiD> <StifactId> javaee-api </shintifactid> <الإصدار> 7.0 </version> </respency> <!-استيراد رابط database رابط database- <StifactId> mysql-connector-java </shintifactid> <الإصدار> 5.1.30 </version> </repreadency> <!-استيراد حزمة JAR من DBCP لتكوين قاعدة البيانات في ApplicationContext.xml-> <sperence> <roupend> <sophy> 1.2.2 </version> </sependency> <!-JSTL Tag Class-> <Rependency> <GroupId> JStl </rougeid> <StifactId> jstl </stifactid> <soph> 1.2 </version> </repreadency> <!-حزمة ملفات السجل-> <! <StifactId> log4j </stifactid> <soph> $ {log4j.version} </version> </dependency> <!-تنسيق كائنات لتسهيل إخراج السجل-> <Rependency> <roupiD> com.libaba </groupal> <StifactId> fastjson </ArtifactId> <roughid> org.slf4j </rougiD> <StifactId> slf4j-api </stifactid> <الإصدار> $ {slf4j.version} </version> </rempency> <redency> <roupiD> org.slf4j </groupid> slf4j12 <sophy> $ {slf4j.version} </version> </reperency> <!-log end-> <!-إدخال JSON-> <REPERENCY> <LOUREID> org.codehaus.jackson </rougiD> <CREFACTID> Jackson-Mapper-Asl </shintifactid> <splement> </version> <ProupId> commons-fileupload </rougiD> <StifactId> commons-filepload </shintifactid> <الإصدار> 1.3.1 </version> </sependency> <redence> </////commons-io </rougeid> <StifactId> commons-io </artifactid> <ProwEd> commons-codec </rougiD> <StifactId> commons-codec </stifactId> <sored> 1.9 </version> </sependency> </sependencies> <build> <ninalName> ssm </ninalname> </bust> </project> </project>الخطوة 3: انظر إلى بنية المشروع الإجمالية ، اسمحوا لي أولاً أن أشرح أنه ليس لدي أي أشياء ذات صلة حول SpringMVC هنا ، لأنني أولاً دمج Spring-Mybatis ، وعند اختبار ما إذا كان ناجحًا ، نجحت في دمج SpringMVC.
الخطوة 4: إنشاء فئة نموذجية
مستخدم الفئة العامة {private int id ؛ اسم السلسلة الخاصة ؛ كلمة مرور السلسلة الخاصة ؛ سلسلة password2 ؛ /*توفير مجموعة واحصل على الأساليب ، طريقة tostring*/}الخطوة 5: إنشاء قاعدة بيانات وواجهة userDao وملف تعيين Mapper
(1) إنشاء جدول بسيط للغاية
(2) واجهة userDao
الواجهة العامة userDao {user findUserById (مستخدم المستخدم) ؛}(3) uesrmapper.xml
<؟ مساحة الاسم = "com.ssm.dao.userdao"> <!-معلومات مستخدم الاستعلام استنادًا إلى المعرف-> <!-معرف: تحديد بيان فريد ، وهو نفس اسم طريقة userdao#{}: يمثل صاحب مكان. إذا تم تمرير معلمة نوع بسيطة في #{} ، فإن الاسم الموجود في #{} هو معلمة تعسفية: نوع معلمة الإدخال ، وهو نفس المعلمة في userdao () resultType: نوع نتيجة الإخراج ، وهو نفس نوع المستخدم () resultType = "com.ssm.model.user"> حدد * من المستخدم <here> <إذا test = "name!الخطوة 5: إنشاء مستخدمين و assorerviceimpl
(1) مستخدمي
الواجهة العامة sterveservice {المستخدم العام getUserById (مستخدم المستخدم) ؛ }(2) userviceiMpl
استيراد org.springframework.stereotype.service ؛ استيراد com.ssm.dao.userdao ؛ استيراد com.ssm.model.user ؛ استيراد com.ssm.service.userservice ؛ service ("userviceervice") userververerimpl ينفذ المستخدمين المستخدم العام getUserById (مستخدم المستخدم) {return this.userdao.finduserById (user) ؛ }}الخطوة 6: إنشاء ملف JDBC وسجل السجل
(1) jdbc.properties
jdbc.driver = com.mysql.jdbc.driverjdbc.url = jdbc/: mysql/: // localhost/: 3306/test؟ useUnicode = true && distarrencoding = utf-8jdbc.username = rootjdbc.password = root
(2) log4j.properties
log4j.rootlogger = info ، وحدة التحكم ، ملف #تحديد وجهة إخراج السجل كوحدة تحكم log4j.appender.console = org.apache.log4j.consoleAppender log4j.appender.console.target = system.out #can تحدد نموذج إخراج السجل التالي. org.apache.log4j.patternlayout log4j.appender.console.layout.conversionpattern = [٪ c] - ٪ m ٪ n #عندما يصل حجم الملف إلى الحجم المحدد ، يتم إنشاء ملف جديد log4j.appender.file = org.apache.log4j.rollingfilepender #specify سجلات/ssm.log #تحديد الحد الأقصى لحجم الملف log4j.appender.file.maxfilesize = 10mb #Output So log. إذا قمت بتغييره إلى تصحيح الأخطاء ، فهذا يعني أن سجلات الإخراج عند تصحيح أو أعلى من المستوى log4j.appender.file.threshold = all log4j.appender.file.layout = org.apache.log4j.patternlayout log4j.appender.file.layout.conversionpattern = [٪ p] HH/: mm/: ss}] [٪ c] ٪ m ٪ n
الخطوة 7: دمج spring-mybatis.xml
<؟ xmlns: p = "http://www.springframework.org/schema/p" http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/spring-3 http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/Spring-Mvc-4 الملفات-> <bean id = "propertyConfigurer"> <property name = "location" value = "classpath: jdbc.properties" /> </bean> <!-2. value = "$ {jdbc.url}" /> <property name = "username" value = "$ {jdbc.username}" /> <property name = "password" value = "$ {jdbc.password}" /> < /bean> <! id = "sqlsessionfactory"> <!-حدد مرجع تجمع قاعدة البيانات-> <property name = "datasource" ref = "dataSource"/> <! يقع SPRING تلقائيًا في العثور على الفئة تحتها-> <boan> <property name = "basePackage" value = "com.ssm.dao"/> <property name = "sqlsessionfactorybeanname" value = "sqlsessionfactory"> </propert <property name = "datasource" ref = "datasource"/> </bean> </bans>الخطوة 8: إنشاء فئة اختبار
بعد الخطوات المذكورة أعلاه (لا يتطابق Log4J وليس له أي تأثير) ، فقد أكملنا تكامل الربيع و MyBatis ، حتى نتمكن من كتابة قطعة من رمز الاختبار لمحاولة ما إذا كان قد نجح.
تم إنشاء فئة الاختبار في SRC/Test/Java. إذا نجح الاختبار ، فهذا يعني أنه تم دمج الربيع و MyBatis بنجاح. تتم طباعة معلومات الإخراج إلى وحدة التحكم باستخدام Log4J.
(1) فئة اختبار testmybatis
package ssm ؛ import javax.annotation.resource ؛ import org.apache.log4j.logger ؛ import org.junit org.springframework.test.context.junit4.springjunit4classrunner سيتم تحميل*/ @contextConfiguration (مواقع = {"classpath: spring-mybatis.xml"}) الفئة العامة testMyBatis {resource (name = "uservervice") privateervice userService ؛ test public void test1 () {user user = new user () ؛ user.setName ("Zhang San") ؛ user.setPassword ("123") ؛ user user1 = userService.getuserById (user) ؛ System.out.println (user1.toString ()) ؛ }}في النهاية! المفتاح هو النظر إلى ناتج الخلفية ، وهو أيضًا وقت لمشاهدة المعجزات. إذا تم إخراج كائن الإخراج ، فهذا يعني أن التكوين والتكامل الخاص بك ناجحان!
ثم نبدأ في دمج springMVC
الخطوة 9: تكوين springmvc.xml
<؟ xmlns: p = "http://www.springframework.org/schema/p" http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/spring-3 http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd"> <!-- Automatically scan the package so that SpringMVC thinks that the class annotated by @controller under the package is the controller --> <السياق: مكون-المسح القاعدة package = "com.ssm.Controller"/> <!-تجنب تنزيل الملفات عندما ينفذ ieax والعودة إلى json-> <bean id = "mappingjacksonhtttpmessageConverter"> property name = "supportedediDiAtypes"> <list> text/html ؛ </bean> <!-ابدأ وظيفة التعليق التوضيحي لـ springmvc لإكمال رسم خرائط الطلبات والشروح pojos-> <bean> <property name = "messageconverters"> <list> <ref bean = "mappingjacksonhttpmessageConverter"/> <! التكوين-> <bean> <!-فهمي للتكوين هنا هو بادئة وتلويح السلسلة التي يتم إرجاعها تلقائيًا بطريقة الإجراء اللاحق لتصبح عنوان url متاح-> <property name = "prefix" value = "/web-inf/jsp/"/> <property name = factix "value =". إذا لم تستخدم تحميل الملف ، فلن تحتاج إلى تكوينه. بالطبع ، إذا لم تقم بالتطابق ، فلا داعي لإدخال حزمة مكون التحميل في ملف التكوين-> <bean id = "multipartresolver"> <!-الترميز الافتراضي-> <property name = "defaultencoding" value = "utf-8" /> <! الذاكرة -> <property name = "maxinmemorysize" value = "40960"/> </bean> </bans>
الخطوة 10: تكوين ملف web.xml
إن إدخال spring-mybatis.xml و spring-mvc servlet المكونة لتكامل SSM. لم يتطلب تكامل الإطار السابقان أي تكوين هنا.
<؟ 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.xsd" تم إنشاء تطبيق الويب </display-name> <!-ملفات تكوين الربيع و myBatis-> <context-param> <Param-name> contextConfigLocation </param-name> <param-value> classpath: spring-mybatis.xml </parm-value> <lipter-class> org.springframework.web.filter.characterencodingfilter </filter-class> <sureded-suported> true </async-sucuported> <Ing-param> <param-name> الترميز </param-name> <baram-value> utf-8 <Filter-Mapping> <filter-name> encodingfilter </filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!-spring bearneder-> <cleder-class> org.springframework.web.context <StaNerer-Class> org.springframework.web.util.introspectorcleanuplistener </stanterer-class> </stanter> <!-servc servlet-> servlet> <sterlet-name> springmvc </servlet-name> <IRIT-PARAM> <PARAM-NAME> COUNTEXTCONFIGLOCATION </param-name> <param-value> classpath: springmvc.xml </parm-value> </ith-param> <load-on-startup> 1/servle-maptup> <Srevlet-Name> springmvc </servlet-name> <!-هنا يمكنك تكوين *.do ، المقابلة لعادة اللاحقة من الدعامات-> <url-pattern>/</url-pattern> </sectlet mapping> <-app-list> <list-file>/inidex.jsp </ribilel
الاختبار النهائي الخطوة 11 :
(1) اكتب login.jsp أولاً
<٪@ page language = "java" contentType = "text/html ؛ charset = utf-8" pageencoding = "utf-8" ٪> <html> <head> <title> تسجيل الدخول المستخدم: </title> </head> name = "username"> </input> <br> <br> <balle> كلمة المرور: </label> <input type = "text" id = "password"
الواجهة:
(2) كتابة USERCONTROLLER
استيراد javax.servlet.http.httpservletrequest ؛ استيراد org.springframework.steretype.controller ؛ استيراد org.springframework.web.bind.annotation.requestmapp {resource userdao userdao ؛ requestmapping ("/jsp/login") تسجيل الدخول إلى السلسلة العامة (طلب httpservletrequest) {String username = request.getParameter ("username") ؛ سلسلة كلمة مرور = request.getParameter ("كلمة المرور") ؛ مستخدم المستخدم = مستخدم جديد () ؛ // Query the Database user.setName (اسم المستخدم) ؛ user.setPassword (كلمة المرور) ؛ مستخدمي المستخدمين = userDao.finduserById (المستخدم) ؛ // إذا كان هناك طلاب ، فهذا يعني أن تسجيل الدخول ناجح إذا (المستخدمون! = null) {return "susscss" ؛ } // لم أكتب هذا JSP ، طالما تعلم ، يمكنك كتابة عودتك "ERR" ؛}}(3) أخيرًا ، susscss.jsp
<٪@ page language = "java" contentType = "text/html ؛ charset = utf-8" pageencoding = "utf-8" ٪> <html> <body> <p> كلمة مرور المستخدم صحيحة ، فإن تسجيل الدخول ناجح </p> </body> </html>
ممتاز!
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.