Concepts de base
1.1. Printemps
Spring est un cadre open source, un cadre de développement Java léger qui a émergé en 2003, dérivé de certaines des idées et des prototypes expliqués par Rod Johnson dans son expert et un design J2EE en tête-à-tête. Il a été créé pour répondre à la complexité du développement des applications d'entreprise. Spring utilise des javabeans de base pour faire des choses qui n'étaient auparavant possibles que par EJB. Cependant, les utilisations de Spring ne se limitent pas au développement côté serveur. Du fait de la simplicité, de la testabilité et de la perspective de couplage lâche, toute application Java peut bénéficier du printemps. En termes simples, le printemps est une inversion légère de contrôle (CIO) et du cadre de conteneur axé sur la section (AOP).
1.2. Printemps
Spring MVC est un produit ultérieur de SpringFramework et a été intégré à Spring Web Flow. Spring MVC sépare les rôles des contrôleurs, des objets modèles, des répartiteurs et des objets de gestionnaire, et cette séparation les rend plus faciles à personnaliser.
1.3. Mybatis
MyBatis est un projet open source d'Apache. En 2010, ce projet a été déplacé de la Fondation du logiciel Apache à Google Code et a été renommé Mybatis. Mybatis est un cadre de couche de persistance basé sur Java. Ibatis fournit des cadres de couche de persistance, y compris les cartes SQL et les objets d'accès aux données (DAO) MyBatis élimine le paramètre manuel de presque tous les code et paramètres JDBC et la récupération des ensembles de résultats. MyBatis utilise des XML ou des annotations simples pour la configuration et le mappage d'origine pour mapper les interfaces et les Pojos de Java (Old Java objets) en enregistrements dans la base de données.
Étape 1: Créez un projet Web via Maven.
Étape 2: Importez le fichier POM dans le package JAR
(1) pom.xml
J'ai copié l'intégralité du fichier POM et vous devez supprimer certaines des choses d'initialisation et garder la copie que vous avez générée par votre propre POM.
<project xmlns = "http://maven.apache.org/pom/4.0.0" xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xsi: schemalation = "http://maven.apache.org/pom/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd "> <ModelVersion> 4.0.0 </ ModelVersion> <ProupId> com.test </rompuprid> <lefactId> SSM </ Artifactid> <packaging> War </ssm maven> 0.0.1-SNAPSHOT </nom> <name> SSM MAVEN </ NAMEM <url> http://maven.apache.org </url> <properties> <! - Numéro de version de Spring -> <printemps.version> 4.0.2.release </spring.version> <! - Mybatis version -> <mybatis.version> 3.2.6 </mybatis.version> <! - log4j journal de gestion des fichiers journaux de gestion des fichiers journaux journals de fichiers journaux journaux logiques <slf4j.version>1.7.7</slf4j.version> <log4j.version>1.2.17</log4j.version> </properties> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> <dependency> <GroupId> org.springframework </proupId> <Artifactid> printemps-core </ artifactive> <De version> $ {printemps.version} </-version> </dependency> <Dependance> <proupId> org.springFramework </proupId> Spring.version} </pteridence> <version> $ {Spring.Version} <dependency> <proupId> org.springframework </proupId> <Artifactid> printemps-oxm </ artifactive> <version> $ {printemps.springframework </pruidId> <Dedency> <proupId> org.springFramework </proupId> <Artifactive> Spring-Tx </ptetifActid> <DERNET </Dependency> <Dedency> <GroupId> org.springFramework </rom grouped> <ArtifActid> printemps-jdbc </ artifactid> <version> $ {printemps.version} </-version> </dependency> <Dependance> <proupId> org.springframework </proupId> <artifactid> printemps-webmvc </ artifactid> <version> $ {printemps.version} </ version> </ dépendance> <dependency> <proupId> org.springframework </proupId> <ArtifActid> Spring-AOP </ artifactId> <De version> $ {Spring.Version} </ version> </ Dependency> <Dedidency> <ProupId> ORG.SPRINGFRAMEWRAWNWORK </rom groupe> <ArtefactId> Spring-Context-Support </ ArtifactId> <Dersion> $ {Spring.Sversion} </DERNIFRATION> </ Dependency> <Dependency> <ProupId> Org.SpringFramework </proupId> <ArtifActid> Spring-Test </ Artifactid> <Dersion> $ {Spring.version} </De version> </Dependency> <! <GroupIdd> MyBatis </Retifactid> <! <version> 1.2.2 </ version> </ dépendance> <! - Importer Java Ee Jar Package -> <Dedency> <proupId> javax </proncId> <artifactId> javaee-api </ artifactid> <version> 7.0 </ version> </ Dependency> <! - Importer MySQL Database Link Jar Package -> <Dedency> <ArtefactId> MySQL-Connector-Java </ ArfactId> <Dersion> 5.1.30 </DERNIERSE> </ Dependency> <! - Importez le package JAR de DBCP pour configurer la base de données dans ApplicationContext.xml -> <Dedency> <proupId> Commons-dbcp </proupId> </ ArtifActid> Commons-DbCP </Dependency> <! - JSTL Tag Class -> <Dedency> <ProupId> JSTL </proncID> <ArtifActid> JSTL </RIFACTID> <DERVIÈRE> 1.2 </ Version> </Dependency> <! - Log Fichier Management Package <version> $ {log4j.version} </ version> </ dépendance> <! - Format objets pour faciliter la sortie du journal -> <dependency> <proupId> com.alibaba </proncId> <e Artifactid> FastJson </retifactid> <version> 1.1.41 </ version> </Dedency> <Dedency> <ProupID> <ArtefactId> SLF4J-API </ Artifactive> <Seffect> $ {SLF4J.Version} </ Version> </ Dependency> <Dependance> <GroupId> Org.Slf4j </ GroupId> <ArtifActid> SLF4J-LOG4J12 </ Artifactid> <Duderne> $ {SLF4J.Version} </ Version> <! " -> <! - Entrée JSON -> <dependency> <proupId> org.codehaus.jackson </prôdID> <Artifactid> Jackson-Mapper-ASL </lefactive> <version> 1.9.13 </ version> </pedency> <! - Package de composant de téléchargement -> <Dedency> <ProupId> comons-fileup Téléchargez </prouvend> <version> 1.3.1 </ version> </ dépendance> <dependency> <proupId> Commons-io </rom grouped> <Artifactid> Commons-io </ artifactid> <version> 2.4 </De version> </Dependency> <Dedency> <proupId> Commons-Codec </prouprid> <esttifactid> Commons-Codec </ Artifactid> <Dursed>> 1.9 </ version> </Dependance> </ptetifactid> <Dursed>> 1.9 </ version> </Dependance> </RetifActid> <Dursed>> 1.9 </ version> <fuild> <inalName> ssm </inalName> </Duild> </randing>Étape 3: Regardez la structure globale du projet, permettez-moi d'abord d'expliquer que je n'ai pas de choses connexes sur SpringMVC ici, car j'intégre d'abord Spring-Mybatis, et lorsque je teste s'il réussit, j'intégre avec succès SpringMVC.
Étape 4: Créez une classe de modèle
classe publique User {private int id; nom de chaîne privé; mot de passe de chaîne privé; String privé Password2; / * Fournir des méthodes d'ensemble et d'obtention, méthode de toString * /}Étape 5: Créez une base de données, l'interface UserDAO et le fichier de mappage de mappers
(1) Créer un tableau très simple
(2) Interface UserDAO
Interface publique UserDao {utilisateur finseserById (utilisateur utilisateur);}(3) uesrmapper.xml
<? xml version = "1.0" Encoding = "UTF-8"?> <! Doctype Mappepublic "- // Mybatis.org//dtd Mapper 3.0 // en" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <! - -> <mapper namespace = "com.ssm.dao.userdao"> <! - Informations utilisateur de requête basées sur ID -> <! - ID: Identifier de manière unique une instruction, qui est la même que le nom de la méthode userdao # {}: représente un espace réservé. Si un paramètre de type simple est passé dans # {}, le nom dans # {} est un paramètre arbitraire: le type du paramètre d'entrée, qui est le même que le paramètre dans userdao () ResultType: le type de résultat de sortie, qui est le même que le type userdao () de retour-> <Select id = "finseryd" ParametType = "com.SS.MODEL.USER". resultType = "com.ssm.model.user"> Sélectionner * dans l'utilisateur <où> <if test = "name! = null"> et name = # {name} </ if> <if test = "mot de passe! = null"> et mot de passe = # {mot de passe} </ if> </ where> </ select> </ mapper>Étape 5: Créez des services d'utilisateur et UserServiceImpl
(1) Service d'utilisateur
Interface publique UserService {public utilisateur getUserById (utilisateur utilisateur); }(2) UserServiceImpll
import org.springframework.sterreotype.service; import com.ssm.dao.userdao; import com.ssm.model.user; import com.ssm.service.UserService; @Service ("userservice") public class useserverimpl impulsiont userservice {@SeRece privily userdao userdao; L'utilisateur public getUserById (utilisateur utilisateur) {return this.userdao.finDuserById (utilisateur); }}Étape 6: Créez un fichier JDBC et un fichier journal
(1) JDBC.Properties
jdbc.driver = com.mysql.jdbc.Driverjdbc.url = jdbc /: mysql /: // localhost /: 3306 / test? useucicode = true && caractères = root = utf-8jdbc.Esername = rootjdbc.
(2) log4j.properties
log4j.rootlogger = info, console, fichier #define la destination de sortie du journal en tant que console log4j.appender.console = org.apache.log4j.consoleAppender log4j.appendender.console.target = System.out #Can Spécifiez le format de sortie du journal. org.apache.log4j.patternlayout log4j.appender.console.layout.conversionPattern = [% c] -% m% n #when La taille du fichier atteint la taille spécifiée, un nouveau fichier est généré log4j.appender.file = org.apache.Log4j.Filefile = #specify de la sortie Log4j.appensen journaux / ssm.log #define la taille maximale du fichier log4j.appender.file.maxfilesize = 10MB #Output SO log. Si vous le modifiez en débogage, cela signifie des journaux de sortie au niveau de débogage ou au-dessus du niveau log4j.appender.file.threshold = tous les log4j.appender.file.layout = org.apache.log4j.patternlayout log4j.appender.file.layout.conversionPattern = [% p] [% d {yyyyymm-ddd HH /: mm /: ss}] [% c]% m% nÉtape 7: Intégrez Spring-Mybatis.xml
<? xml version = "1.0" encoding = "utf-8"?> <beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xmlns: p = "http://www.springframework.org/schema/p" xmlns: context = "http://www.springframework.org/schema/mvc" xsi: schemalocation = "http://www.springfrrameworkwork.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3. http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd "> <! - Automatic scanning -> <context: composant-scan basage =" com.sssm "/> <! <bean id = "PropertyConfigurer"> <propriété name = "emplacement" value = "classPath: jdbc.properties" /> </ank> <! - 2. Database Connection Pool -> <bean id = "dataSource" Destroy-Method Value = "$ {jdbc.url}" /> <propriété name = "username" value = "$ {jdbc.Username}" /> <propriété name = "mot de passe" value = "$ {jdbc.password}" /> </ bean> <! - Intégrer le printemps et MyBatis pour gérer la session SQLSessionfacte de MyBatis id = "SqlSessionFactory"> <! - Spécifiez la référence du pool de connexion de la base de données -> <propriété name = "dataSource" ref = "dataSource" /> <! - Scanning automatique de mapping.xml fichiers -> <propriété name = "MAPPERLOCATION" Value = "classpath: com / ssm / masper / *. est situé, le printemps trouvera automatiquement la classe en vertu de celle-ci -> <an Bean> <Propriété Name = "BASEPACKAGE" Value = "com.ssm.dao" /> <Property Name = "SqlSessionFactoryBeanName" Value = "SqlSessionFactory"> </ Propriété> </ Bean> <! - (gestion des transactions, gestion des transactions "pour les transactions" pour "PropertansactionManager pour Global TX -> name = "dataSource" ref = "dataSource" /> </ank> </bans>Étape 8: Créez une classe de test
Après les étapes ci-dessus (Log4j ne correspond pas et n'a aucun effet), nous avons terminé l'intégration de Spring et Mybatis, afin que nous puissions écrire un code de test pour essayer si elle a réussi.
La classe de test est établie dans SRC / Test / Java. Si le test réussit, cela signifie que le printemps et les mybatis ont été intégrés avec succès. Les informations de sortie sont imprimées sur la console à l'aide de log4j.
(1) classe de test testmybatis
package ssm; import javax.annotation.resource; import org.apache.log4j.logger; import org.junit.test; import org.junit.runner.runwith; import org.springframework.test.context.contextConfiguration; import; org.springframework.test.context.junit4.SpringJUnit4ClassRunner;import com.ssm.model.User;import com.ssm.service.UserService;/*Let the test run in the Spring test environment*/@RunWith(SpringJUnit4ClassRunner.class) /* Used to specify the location of the loaded Spring configuration file, the default configuration file will be chargé * / @ contextConfiguration (locations = {"classpath: spring-mybatis.xml"}) classe publique testmybatis {@resource (name = "userService") UserService privé UserService; @Test public void test1 () {user user = new User (); user.setName ("Zhang San"); user.setpassword ("123"); User user1 = userService.getUserById (utilisateur); System.out.println (user1.toString ()); }}enfin! La clé est de regarder la sortie d'arrière-plan, qui est également un moment pour assister à des miracles. Si l'objet de sortie est sorti, cela signifie que votre configuration et votre intégration réussissent!
Ensuite, nous commençons à intégrer Springmvc
Étape 9: Configurer Springmvc.xml
<? xml version = "1.0" encoding = "utf-8"?> <beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xmlns: p = "http://www.springframework.org/schema/p" xmlns: context = "http://www.springframework.org/schema/mvc" xsi: schemalocation = "http://www.springfrrameworkwork.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3. http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd "> <! - Analyse automatiquement le package pour que Springmvc pense que la classe a annoté par @Controller Base-Package = "com.ssm.Controller" /> <! - Évitez de télécharger des fichiers lorsque IE exécute Ajax et retournez à JSON -> <Bean Id = "MappingJackSonHttpMessageConverter"> <Property NameS = "SupportEdMediaTypes"> <Sist> <value> Text / Html; Charset = UTF-8 </ Value> Springmvc Annotation Fonction Pour compléter le mappage des demandes et annotations Pojos -> <an Bean> <propriété name = "MessageConverters"> <sthing> <refE Bean = "MappingJackSonHttpMessageConverter" /> <! - JSON Converter -> </Sist> </prewetfrewe <! - Ma compréhension de la configuration ici est de préfixer et de suffix automatiquement la chaîne renvoyée par la méthode de l'action ultérieure pour devenir une adresse URL disponible -> <propriété name = "Prefix" value = "/ web-inf / jsp /" /> <propriété name = "suffix" value = ". Si vous n'utilisez pas de téléchargement de fichiers, vous n'avez pas besoin de le configurer. Bien sûr, si vous ne correspondez pas, il n'est pas nécessaire d'introduire le package de composant Télécharger dans le fichier de configuration -> <bean id = "MultipartResolver"> <! - Encoding par défaut -> <propriété name = "Defauntencoding" value = "utf-8" /> <! - Taille maximale du fichier -> <Propriété Name = "MAXUPLOADSIZE" Valeur = "10485760000" name = "maxinMemorySize" value = "40960" /> </bEAN> </bans>
Étape 10: Configurer le fichier web.xml
L'introduction de Spring-Mybatis.xml et le servlet Spring-MVC configuré sont destinés à l'intégration SSM. L'intégration de deux framework précédente n'a nécessité aucune configuration ici.
<? xml version = "1.0" Encoding = "utf-8"?> <web-app xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xmlns = "http://java.sun.com/xml/ns/javaee" 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" version = "3.0"> Application Web </ Display-Name> <! - Fichiers de configuration de Spring et MyBatis -> <IXTATH-PARAM> <AMAM-NAME> ContextConfiglocation </ Param-Name> <Amam-Value> ClassPath: Spring-Mybatis.xml </ Param-Value> </ Context-Param> <! - Filter de l'encodage> <filter> <fileter-name> ENCODINGFILTER </ Filter-Name> <Filter> <Filter-Class> org.springframework.web.filter.characterencodingfilter </filter-class> <async-support> true </sync-supported> <Init-Param> <Am param-name> Encoding </ param-name> <paramter> utf-8 </ param-value> <Stracon-mappant> <filter-name> EncodingFilter </ Filter-Name> <Url-Pattern> / * </ url-Pattern> </ Filter-Mapping> <! - Spring auditeur -> <écouteur-class> org.springframework.web.context.ContextLoDerDériner </ounerer-Class> </ auteur> <! - <listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class> </listener> <!-- Spring MVC servlet --> <servlet> <servlet-name>SpringMVC</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <Innit-Param> <Am param-name> ContextConfiglocation </ Param-Name> <Amam-Value> ClassPath: Springmvc.xml </ Param-Value> </Init-Param> <Choad-on-Startup> 1 </ Load-on-startup> <sync-Supported> True </sync-Supported> </Servlet> <Servlet-Mapping> <Serplet-name> Springmvc </vrlett-name> <! - Ici, vous pouvez configurer * .do, correspondant à l'habitude du suffixe de Struts -> <url-sattern> / bienvenue> / url-potentiel> </ville-mapping> </vendule-list> </ket> / web-app>
Étape 11 Test final:
(1) Écrivez d'abord Login.jsp
<% @ page Language = "Java" contentType = "Text / Html; charSet = UTF-8" Pageencoding = "UTF-8"%> <html> <adread> <Title> User Login: </ Title> </ Head> <Body> <form Action = "Login"> </ Labre name = "username"> </ input> <br> <br> <brold> mot de passe: </ labe> <input type = "text" id = "mot de passe" name = "mot de passe"> </ entrée> <br> <br> <input type = "soume" value = "login" /> </form> </ body> </ html>
interface:
(2) Écriture UserController
Importer javax.servlet.http.httpservletRequest; import org.springframework.steretype.controller; import org.springframework.web.bind.annotation.requestmaping; @Resource Private UserDao UserDao; @RequestMapping ("/ jsp / ligin") Public String Login (HttpServLetRequest Request) {String username = request.getParameter ("username"); String mot de passe = request.getParameter ("mot de passe"); Utilisateur utilisateur = nouveau utilisateur (); // interroger la base de données user.setName (nom d'utilisateur); user.setpassword (mot de passe); Utilisateurs d'utilisateurs = userdao.FinDuserById (utilisateur); // S'il y a des étudiants, cela signifie que la connexion réussit si (utilisateurs! = Null) {return "SUSSCSS"; } // Je n'ai pas écrit ce jsp, tant que vous le savez, vous pouvez écrire votre propre retour "err";}}(3) Enfin, SUSSCSS.JSP
<% @ page Language = "Java" ContentType = "Text / Html; charSet = UTF-8" Pageencoding = "UTF-8"%> <html> <body> <p> Le mot de passe du compte d'utilisateur est correct, la connexion est réussie </p> </ body> </html>
Parfait!
Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.