Parlons brièvement du projet Maven Building SSM (l'utilisation de la base de données Oracle est un peu plus gênante que MySQL, alors parlons-en ici)
Lors de la création de projets Web Maven, deux dossiers: Main / Java et Main / Test sont souvent manquants.
Solution:
①: cliquez avec le bouton droit sur le projet et sélectionnez Propriétés, puis cliquez sur Java Build Path, sous les bibliothèques, modifiez la bibliothèque du système JRE et sélectionnez JREPACT WORKSPACE par défaut. (Ceci est recommandé)
②: Créez un répertoire manuellement. La vue de commutation utilise la vue Navigator et crée directement un répertoire Java dans le répertoire SRC / principal.
Structure du répertoire du projet:
Fichiers de configuration importants:
Fichier de configuration du modèle d'objet: pom.xml
Fichier de configuration de Spring: ApplicationContext.xml
Spring MVC Configuration Fichier: Springmvc.xml
Fichier de configuration de la base de données: jdbc.properties
Fichier de configuration du journal: log4j.properties
Fichier de configuration MyBatis: Mybatis-Config.xml
Fichier de configuration du programme réseau: web.xml
Configurez d'abord pom.xml
POM.xml décrit principalement les coordonnées, les dépendances du projet, et introduit automatiquement les packages JAR.
<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 </ ModelVenion> <ProupId> com.krry </proupId> <ArtifActid> maven_ssm <nom> maven_ssm </nom> <url> http://maven.apache.org </url> <dépendances> <! - Introduire Junit -> <dependency> <proupId> JUnit </promIdD> <ArtifActid> Junit </ ArtifactId> <Dersion> 4.11 </ Version> <ctency> Test </cope> </Dedency> <! - Introring Servlet -> <ctency> Test> <GroupId> javax.servlet </rom grouped> <Artifactid> Servlet-API </ artifactive> <version> 3.0-alpha-1 </ version> <ccope> fourni </ccope> </Dendency> <! - Présentation du pack <ccope> fourni </ccope> </dependency> <! - Présentation de la dépendance de la compilation de jsp -> <dependency> <proupId> javax.servlet.jsp </proncId> <ArtefactId> JSP-API </ artifactid> <version> 2.2 </-version> <cope> fourni </cope> </pedency> <! <GroupId> LOG4J </ GroupId> <Artifactid> LOG4J </ ARTIFACTID> <DERVIÈRE> 1.2.17 </ Version> </ Dependency> <! - Spring Springmvc Mybatis -> <! - Spring et Springmvc Construction Jar -> <Dependency> <ProupID> ORG.SPRINGFRAME </proupId> <ArtifActid> Spring-ConText </ ArtiFatrid> <version> 4.2.1.release </ version> </ dépendance> <dependency> <proupId> org.springframework </promyd> <lelease> printemps-jdbc </retifactid> <version> 4.2.1.release </ version> </peedency> <! - Springmvc-Related -> <Dedency> <ProupId> Org.SpringFramework </proudId> <ArtefactId> Spring-webmvc </ artifactid> <version> 4.2.1.release </ version> </ Dependency> <! - Springmvc nécessite JSON Conversion Package Jackson -> <Dendency> <ProupID> com.fasterxml.jackson.core </proupId> <Artifactid> Jackson-core </ artifactid> <dependency> <proupId> com.fasterxml.jackson.core </rom grouped> <Artifactid> Jackson-Annotations </ ArtiFactId> <Dersion> 2.5.4 </DERNIFRATIONS> </DENDENCENCE> <Dendency> <proupId> com.fasterxml.jackson.core </proupId> <Artifactid> Jackson-Databind </ Artifactive> <version> <1 / Artifactid> </Dependency> <! - JSR303 Vérification de fond Validator Hibernate -> <dependency> <proupId> org.hibernate </rombasid> <artifactId> Hibernate-Validator </ Artifactid> <version> 5.1.1.Final </DERNIFRENCE> </Dependency> <! - Packages de jargades de fichiers:> <fedency> <poupled> à télécharger -> <fedency> <ArtefactId> Commons-io </ artifactId> <Sease> 2.4 </-version> </ Dependency> <Dedency> <ProupId> Commons-Fileupload </rom grouped> <eRtifActid> Comons-Fileupload </ Artifactid> <in version> 1.3.1 </ version> </pedency> <Dedency> <proupId> Org.apache.Commons </ GroupID> <ArtefactId> Commons-Lang3 </ Artifactid> <Sease> 3.3.2 </DERNIFRIGNE> </ Dependency> <! - Codec lié aux algorithmes de chiffrement -> <dependency> <ProupId> Commons-Codec </proncId> <Artefactid> Commons-Codec </artifactid> <version> 1.9 </De version> </dependency> <! -> <! - Oracle Database Driver -> <Dedency> <proupId> com.oracle </proncId> <ArtifActid> OJDBC6 </ ArtifactId> <Derson> 12.1.0.2.0 </ version> </ Dependency> <! - Mysql Database Driver (non utilisé ici, le pilote Oracle ci-dessus est utilisé) -> <! - <ArtefactId> MySQL-Connector-Java </ ArfactId> <Dersion> 5.0.8 </DERNIFROITION> <COPE> Runtime </cope> </ Dependency> -> <! - Proxool Connection Pool -> <Dedency> <proupId> com.cloudhopper.proxool </prôd> <efactive> proxool </ artifactID> </prètement> <fri version> </Dependency> <Dependency> <ProupId> com.cloudhopper.proxool </proncId> <ArtifActid> proxool-cglib </ artifactid> <version> 0.9.1 </-version> </pedency> <! - Introduction du package jar requis par Mybatis -> <dependency> <proupId> Org.Mybatis </proupid> <ArtefactId> Mybatis </ artifactId> <Dersion> 3.3.1 </DERNIERDE> </DENDENCENCE> <Dependance> <GroupId> org.mybatis </proupId> <ArtifActid> Mybatis-Spring </ Artifactid> <version> 1.2.4 </preffen <GroupId> com.github.pagehelper </rompuprid> <letifactive> pagehelper </ artifactId> <version> 4.2.1 </ version> </ Dependency> </Dependces> <fuild> <Glugins> <Glugin> <Ertfactid> Maven-Compiler-Plugin </ artifactid> <configuration> <source> 1.7 </ source> </ configuration> </ plugin> <plugin> <Ertifactid> maven-war-Plugin </ artifactId> <Dersion> 2.4 </pride> <fonfi configuration> <version> 3.0 </ version> </ configuration> </ plugin> </glugins> <inalname> maven_ssm </ finalname> </uild> </ project>
Voici une question sur le projet Maven utilisant POM.xml pour importer le package Oracle Driver:
En raison de problèmes d'autorisation Oracle, Maven ne fournit pas le pilote Oracle JDBC. Afin d'appliquer le pilote Oracle JDBC dans les projets Maven, il doit être ajouté manuellement au référentiel local.
Si la base de données Oracle est déjà installée sur l'ordinateur, il y a un pilote de base de données sous le chemin d'installation et peut être utilisé directement. D: /oracle/oraclexe/app/oracle/product/10.2.0/server/jdbc/lib
Vous pouvez également télécharger le pilote de base de données Oracle directement à partir du site officiel d'Oracle et utiliser les instructions SQL pour interroger la version du pilote de base de données: Sélectionner * From V $ instance
Confirmez ensuite la version Télécharger: http://www.oracle.com/technetwork/database/features/jdbc/default-2280470.html
Ouvrez l'interface de ligne de commande de Windows, entrez le répertoire du package du pilote OJDBC6, puis exécutez:
MVN Install: install-file -dgroupId = com.oracle -dartifactid = ojdbc6 -dversion = 12.1.0.2.0 -dpacking = jar -dfile = ojdbc6.jar
Si "Build Success" s'affiche avec succès, votre référentiel local Maven sera automatiquement importé.
Ensuite, vous pouvez ajouter une dépendance au projet Maven, et chaque coordonnée correspond aux éléments de la commande ci-dessus, comme suit:
<dependency> <proupId> com.oracle </rompuprid> <letifactive> ojdbc6 </retifactid> <version> 12.1.0.2.0 </ version> </Dependency>
Fichier de configuration de Spring: ApplicationContext.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: aop = "http://www.springframework.org/schema/aop" xmlns: context = "http://www.springframework.org/schema/tx" xmlns: util = "http://www.springframeworkwork.org/schema" xmlns: p = "http://www.springframework.org/schema/p" xsi: schemalocation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/Beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsdd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0. Scanning -> <Context: Component-Scan Base-Package = "com.krry"> </ Context: Component-Scan> <! - Importer un fichier de ressources externes -> <! - <context: propriété-placeholder location = "classPath: jdbc.properties" /> -> <bean p: location = "classpath: jdbc.properties" p: fileencoding = "utf-8" /> <! - <! - <! - <! - <! - <! - <! - <! " Pool de connexion Proxool -> <bean id = "dataSource"> <! - Nom du pilote, mysql -> <propriété name = "driver" value = "$ {db.driver}"> </ propriété> <! - Proxool la chaîne de connexion URL de ceci doit déterminer le nom d'utilisateur et le mot de passe -> <propriété Name = "Driverurl" value = "$ {db.url}" Utilisé, mais ne peut pas être exclu) -> <propriété name = "user" value = "$ {db.username}"> </ propriété> <! - mot de passe (proxool n'est pas utilisé, mais ne peut pas être laissé de côté) -> <propriété name = "mot de passe" value = "$ {db.password}"> </ / propriété> <! - Time Interval pour proxool to Reconnanding Autochantised chaque état de connexion (Millisecond). Lorsque la reconnaissance est terminée, recyclez-la immédiatement. La destruction du délai d'expiration est maintenant définie sur 4 secondes) -> <propriété name = "HousekeepingSleEptime" value = "3000"> </ propriété> <! - Vérifiez automatiquement si la connexion est brisée -> <propriété name = "TestBeforeUse" value = "true"> </ propriété> <!! Cette déclaration est mieux exécutée très rapidement. S'il n'est pas défini, le processus de test sera ignoré -> <propriété name = "HousekeepingTestSQL" value = "select compter (1) dans Dual"> </premy> <! - Si la femme de ménage détectant que le temps d'activité d'un thread est supérieure à cette valeur. Il tuera le fil. Confirmez donc la bande passante de votre serveur. Définissez ensuite une valeur appropriée. La valeur par défaut est de 5 minutes. Définissez maintenant 10 secondes -> <propriété name = "maximumActiveTime" value = "10000"> </ propriété> <! - Le nombre minimum de connexions inactifs à conserver (maintenant défini 20) -> <propriété name = "PrototypeCount" Value = "20"> </ propriété> <! Nombre minimum de connexions (désormais définie 50) -> <propriété name = "minimumConnectionCount" value = "50"> </paremy> <! - Si vrai, chaque instruction SQL exécutée sera enregistrée pendant la période d'exécution (niveau de débogage). Vous pouvez également enregistrer un ConnectionListener (voir ProxoolFacade) pour obtenir ces informations. -> <propriété name = "trace" value = "false"> </ propriété> <propriété name = "verbose" value = "true"> </ propriété> </ bean> <! - Registre des transactions Manager -> <bean id = "txmgr"> <propriété name = "datasource" ref = "dataSource"> </premot transaction-manager = "txmgr" /> <! - Configurez SqlSessionFactory de MyBatis -> <bean id = "sqlSessionFactory"> <propriété name = "dataSource" ref = "dataSource"> </ propriété> <propriété name = "configLocation" value = "classpath: mybatis-onfig.xml"> </ property> </ beebrot> qui peut scanner le mappeur dans son ensemble -> <an Bean> <! - S'il y a plusieurs rapports, séparez-les avec des virgules -> <propriété name = "Basepackage" value = "com.krry.mapper"> </ propriété> <propriété name = "SqlSessionFactoryBeanName" Value = "SQLSessionFactory"> </prewet> </EAND> </ebans> Spring MVC Configuration Fichier: 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/util" xmlns: mvc = "http://www.springframeworkwork.org/schema/mcr" xsi: schemalocation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/springframeworks-3.0.xschemma/contex http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd "> <! FormattingConversionsViceFactoryBean -> <MVC: Annotation-Driven> <MVC: Message-Convergers Register-DefaultS = "True"> <Ean> <propriété Name = "SupportDediaTypes"> <Sist> <Value> TEXT / PLAIN; CARSET = UTF-8 </ Value> <Value> <an bean /> <an bean /> <an bean> <an bean> <propriété name = "prefixjson" value = "false" /> <propriété name = "ObjectMapper"> <ean> <! - Gérer le type de date dans la réponse -> <propriété name = "dateForat"> <anEn> <Constructor-arg type = "java.lang.string" value = "yyyym-mm-dd hh: mm: ss" </ / propriété> <! - Non affiché lorsque le champ est nul -> <propriété name = "serializationinclusion"> <valeur type = "com.fasterxml.jackson.annotation.jsoninclude.include"> non_null </value> </ propriété> </ank <value> application / x-www-form-urlencoded; charset = utf-8 </value> </sist> </ propriété> </ bean> </mvc: Message-Converters> </mvc: annotation-driven> <! - scan package -> < Les fichiers doivent être définis, car dans la configuration de SpringMVC, toutes les demandes (.do, addUser, JS / Image / CSS) dans ce projet seront analysées par SpringMVC, et tous les fichiers de ressources statiques doivent être filtrés et publiés -> <! - Choisissez l'une des ressources statiques suivantes -> <! mapping = "/ ressources / **" location = "/ ressources /" /> <! - Définition d'interceptor -> <mvc: intercepteurs> <mvc: interceptor> <! - Personal Center doit également se connecter aux configurations à partir de l'administrateur pour intercepter -> <mvc: mapping path = "/ admin / **"> </ mvc: mapping> <! - <mvc: exclure le mappage path = "/ ressources / **" /> <! - La classe dans laquelle l'intercepteur entre, renvoie false pour indiquer que l'entrée n'entrera pas -> <! - Configuration fichier de configuration -> <bean id = "multipartreSolver" p: DefaunceNcoding = "utf-18"> <promessent name = "uploadTempdir" value = "/ temp"> </ propriété> <propriété name = "maxuploadsize"> <value> 209715200 </value> <! - 200mb -> </ propriété> <propriété name = "MaxinMemorySize"> <value> 4096 </ value> <! - 4kb size Read and Write -> </ Property> JSP / FreeMaker / Velocity -> <an Bean> <! - Créez un chemin vers le stockage de la page -> <propriété name = "Prefix" value = "/ web-inf / pages /"> </ propriété> <! - File suffixe -> <propriété name = "suffix" value = ". jsp"> </ property> </ beans>
Fichier de configuration de la base de données: jdbc.properties
db.driver = oracle.jdbc.oracledriver db.url = jdbc: oracle: mince: @ 127.0.0.1: 1521: orcl db.username = 4m + la23kca4 = db.password = wwijciympau / = =
J'ai utilisé l'algorithme de chiffrement ici
Fichier de configuration du journal: log4j.properties
log4j.rootlogger = debug, console, filelog4j.appender.console = org.apache.log4j.consoleAppenderLog4j.appender.console.layout = org.apache.log4j.patternlayoutlog4j.apprender HH: mm: ss}% -5p [% t]% 10l -% m% nlog4j.appendender.file = org.apache.log4j.rollingFileAppenderLog4j.appender.file.file = d: /logs/log4j.loglog4j.appender truelog4j.appendender.file.layout = org.apache.log4j.patternlayoutlog4j.appender.file.layout.conversionPattern =% d {yyyy / mm / dd / hh: mm: ss}% -5p [% t]% 10l -% m% n% n Fichier de configuration MyBatis: Mybatis-Config.xml
<? xml version = "1.0" Encoding = "UTF-8"?> <! Doctype Configuration public "- // mybatis.org//dtd config 3.0 // en" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <paramètres> name = "cacheenabled" value = "true" /> <! - Éteignez le chargement instantané de l'objet associé pour les performances -> <paramètre name = "LazylokingEnabled" value = "true" /> <! - Définissez le formulaire de chargement de l'objet associé. Voici un champ de charge à la demande (le champ de charge est spécifié par SQL). Tous les champs de la table associée ne seront pas chargés pour améliorer les performances-> <setting name = "AggressIlazAzoLing" value = "false" /> <! - Pour les requêtes SQL inconnues, les différents ensembles de résultats peuvent être renvoyés pour atteindre un effet commun -> <paramètre Name = "MultiplereSultSetsEnabled" Value = "True" /> <! - Laisser utiliser des chroniqueurs au lieu des noms de colonne Value = "true" /> <! - Autoriser l'utilisation de valeurs de clé primaire personnalisées (telles que le codage UUID 32 bits généré par le programme comme valeurs de clé), et la stratégie de génération PK de la table de données sera remplacée -> <paramètre name = "useGeneratedKeys" Value = "True" /> <! <! - Cache SQL pour les opérations de mise à jour par lots pour améliorer les performances -> <paramètre name = "defaultExecutOrType" value = "Batch" /> <! - Timeout si la base de données n'a pas répondu pendant plus de 25 000 secondes -> <paramètre name = "DefaultStationTimeout" value = "25" /> <paramètre name = "LazyloadTriggerThods" value = </ Settings> <Cypealias> <! - Alias pour l'objet utilisateur personnalisé -> <! - <typealias type = "com.krry.mybatis.sysmanage.entity.user" alias = "user" /> -> <! - Définition de lot -> <package name = "com.krry.entity" /> </pactalees> </ configuration>
Fichier de configuration du programme réseau: web.xml
<? xml version = "1.0" encoding = "utf-8"?> <web-app xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xmlns = "http://xmlns.jcp.org/xml/ns/javaee" xsi: schemalocation = "http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1. id = "webApp_id" version = "3.1"> <splay-name> maven_ssm </ display-name> <ven welcome-file-list> <leen welcome-file> index </venke-file> </ welcome-file-list> <! - Loading Spring IOC Container -> <ftext-param> <param-name> contextConfiglocation </ param-name> <Am param-Value> CLASSPATH: ApplicationContext.xml </ Param-Value> </ Context-Param> <! - Spring Context auditeur -> <ousiner> <auditeur-classe> org.springframework.web.context.ContextLoaderListener </ auditeur> </ écouteur> <! - Introspect Cache Clear auditeur -> <écouteur> <ouciner-class> org.springframework.web.util.introspectorcleanupListener </ auteur-class> </diner> <filter> <filter-name> coding </filter-name> <filter-Class> org.springframework.web.filter <param-name> Encoding </ param-name> <param-valeur> utf-8 </onsam-valeur> </nitt-param> </filter> <filter-mapping> <filter-name> Encoding </filter-name> <url-potern> / * </ url-stattern> </filter-mapping> <! - Configure Dispatchersservlet -> <Servile> <Servlet-Name> Maven_SSM </vrlett-name> <servlet-class> org.springframework.web.servlet.dispatcherservlet </ servlet-Class> <! - Configurez le fichier de configuration de Springmvc -> <! - Si les options suivantes ne sont pas configurées, le système est définitif pour charger le fichier nommé [Servlet-Name] -Servert.XML sous le système de classe pour charger le fichier nommé [Servlet-Name] -Sservlet.XML sous le système de classe pour charger le fichier nommé [SERVLET-NAME] -SERVLET.XML Sous CrashPath Springmvc01-Servlet.xml -> <Init-Param> <AmviN-Name> ContextConfiglocation </ Param-Name> <AmviN-Value> ClassPath: Springmvc.xml </Ar param-Value> </Init-Param> </ Servlet> <Serplet-Mapping> <Serplet-Name> MAVEN_SSM </VERTLET-NAME> <URL-Pattern> / index </ url-stern> </ servlet-mapping> <! - Vous pouvez faire correspondre * .do, * .action (compréhension) / (key): toutes les demandes seront analysées par Spring MVC, mais les fichiers de ressources statiques doivent être filtrés et libérés. Il est recommandé d'utiliser cette méthode / *: il n'est pas recommandé d'utiliser -> <servlet-mapping> <servlet-name> maven_ssm </ servlet-name> <url-potern> / </ url-potern> </ servlet-mapping> </ Web-Apple>
À ce stade, la configuration de base est complète et le package JAR est automatiquement invoqué. Tester et écrire le code Java ultérieur
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.