Voici un exemple le plus simple
1. Créez un nouveau projet Javaweb standard
2. Importez des packages de pot de base requis pour le printemps
3. Configurez le fichier web.xml
<? xml version = "1.0" encoding = "utf-8"?> <web-app version = "2.5" xmlns = "http://java.sun.com/xml/ns/javaee" xmlns: xsi = "http://www.w3.org/2001/xmlschema instance" XSI: ScheMalation = "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"> <! <Am param-name> ContextConfiglocation </ param-name> <param-Value> ClassPath *: ApplicationContext * .xml, </ param-Value> </ Context-Param> <! - Spring context chargeant écouteur -> <ouciner> <ouciner-class> org.springframework.web.context.contextoListener </diner-class> <Lelcome-File> index.jsp </ Welcome-File> </ Welcome-File-list> </ web -pp>
4. Ajouter le fichier de configuration de Spring ApplicationContext
5. Faire la configuration la plus simple du fichier 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" XSI: ScheMalocation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-Beans-3.0.xsd" Defaul-lazy-init = "FALSE" Default-autowire = "byname"> <any id = "user" Value = "Zhang San" /> </bEAN> </EANS>
Beans-le nœud racine du fichier XML.
XMLNS - est l'abréviation de XmlNamespace. Étant donné que les noms de balises des fichiers XML sont personnalisés, les balises écrites par elles-mêmes et définies par d'autres sont susceptibles d'être dupliquées, mais les fonctions sont différentes, un espace de noms doit donc être ajouté pour distinguer ce fichier XML des autres fichiers XML, similaire à Package en Java.
XMLNS: XSI - fait référence au fichier XML conforme aux spécifications XML. Le nom complet de XSI: XMLSChemainstance fait référence aux spécifications strictement suivies par les éléments définis dans le fichier de ressources de schéma utilisé. Autrement dit, quelles normes les éléments définis dans le fichier /spring-barian-2.0.xsd sont-ils conformes?
XSI: Schemalocation - fait référence aux spécifications avec lesquelles l'élément XML de ce document est conforme. La propriété Schemalocation est utilisée pour référencer le document de schéma (schéma). L'analyseur peut utiliser ce document pour vérifier le document d'instance XML si nécessaire. Sa valeur (URI) apparaît par paires, la première valeur représente l'espace de noms et la deuxième valeur représente l'emplacement spécifique du document de modèle décrivant l'espace de noms, séparé par des espaces.
6. Créer une nouvelle classe d'entité User.java
package com.po; classe publique User {Nom de chaîne privée; âge des cordes privées; public String getName () {Nom de retour; } public void setName (string name) {this.name = name; } public String Getage () {return Age; } public void Setage (String Age) {this.age = age; }}7. Test
public static void main (String [] args) {// TODO Méthode générée automatiquement Stub ApplicationContext AC = new FileSystemXmlApplicationContext ("Config / ApplicationContext.xml"); Utilisateur utilisateur = (utilisateur) ac.getBean ("utilisateur"); System.out.println (user.getName ()); }Sortir
Cela permet la construction d'un cadre printanier de base pour les projets Web. Ensuite, nous ferons des extensions qui seront utilisées dans des projets réels. Vous pouvez configurer certaines fonctions ou autres paramètres pour l'intégration de Spring Framework dans web.xml.
<! - Les filtres d'encodage des caractères doivent être placés en haut du filtre -> <filter> <filter-name> EncodingFilter </ Filter-Name> <Filter-Class> org.springframework.web.filter.CharacterEncodingFilter </ Filter-Class> <Init-Param> <Amdi-Name> Forceencoding </onsam-name> <Am param-Value> true </ Param-Value> </nitt-Param> <Init-Param> <Init-Param> <Am param-Name> Encoding </ Param-Name> <Amam-Value> UTF-8 </ Param-Value> EncodingFilter </filter> <filter-Mapping> <Filter-Name> EncodingFilter </ Filter-Name> <URL-PATTERN> / * </ url-Pattern> </ Filter-Mapping> <! - Utilisez OpenSessionInView -> <filter> <Filter-Name> OpenSessionInViewFilter </ Filter-Name> <Filter-Class> org.springFramework.Rorm.HiberNate3.Support.PensesseInViewFilter </filter-class> <InitParam> <Am param-name> singleSession </ param-name> <param-valeur> true </ param-Value> </nitt-Param> <Init-Param> <Amam-Name> SessionFactoryBeanName </ param-name> <! - Spécifiez quelle sessionfactory dans la configuration de printemps pour utiliser OpenSessionInview -> </ param-valeur> SessionFactory </ param-Value> <mapping-mappage> <Filter-Name> OpenSessionInViewFilter </ Filter-Name> <Url-Pattern> / * </url-Pattern> </filter-Mapping> <! - Spring Security Filter Org.SpringFramework.web.Filter.DelegatingFilterProxy (Delegat Fileter Proxy) -> <! - shiro, -> <filter> <filter-name> springSecurityFilterChain </filter-Name> <Filter-Class> org.springframework.web.filter.delegatingfilterproxy </filter-class> </filter> <filter-mapping> <filter-name> springsecurityfilterchain </filter-name> <URL-PATTERN> / * </ url-Pattern> </ Filter-Mapping> <! - Déclaration Spring MVC DispatcherServlet -> <Serplet> <Serplet-Name> SpringDispatcher </Servlet-Name> <Serplet-Class> org.springFramework.web.serservlet.DispatterServlet </vrlet-Class> <IniT-Param> <Am param-name> ContextConfiglocation </ Param-Name> <Am param-Value> CLASSPATH *: Spring-Mvc.xml </ param-Value> </Init-Param> <Charot-on-Startup> 1 </ Load-on-Startup> </Serplet> <! - MAPER ALL All Demanys pour / * to the Dispatcher Servlet> <Serplet-Maping> <Serplet-Name> SpringDispather </ Servlet-Maping> <Serplet-name> <URL-PATTERN> / </ url-Pattern> </ Servlet-Mapping> <! - Page d'erreur de configuration -> <Reur-Page> <Reur-Code> 404 </ Error-Code> <Location> ErrorPage / 404.jsp </ Location> </ Error-Page> <! - 401 ERROR -> <RERRORPAGE> <RERROLD-CODE> / ERROR-CODE> </ Error-Page> <! - Introduire taglib.jspf et autres fichiers pour chaque page JSP -> <jsp-config> <gaglib> <gaglib-uri> / web-inf/runqianreport4.tld </ taglib-uri> <gaglib-location> /web-inf/runqianreport4 <URL-PATTERN> *. JSP </ url-Pattern> <Page-Encoding> UTF-8 </ Page-Encoding> <Cluant-Prelude> /tag/taglib.jspf </ include-prélude> <! - <Trim-Directive-Whitespaces> True </ Trim-Directive-Whitespaces> -> </ JSP-Property-Group>
Parmi eux, JSPF est de faire des déclarations mondiales
<% @ page Language = "Java" ContentType = "Text / Html; charSet = UTF-8" <Span Style = "White-Space: Pre"> </ Span> Pageencoding = "UTF-8"%> <% @ Taglib Prefix = "C" uri = "http://java.sun.com/jsp/jstl/Core"%> <% @ taglis prefix = "fn" uri = "http://java.sun.com/jsp/jstl/functions"%> <% @ taglib prefix = "fmt" uri = "http://java.sun.com/jsp/ftl/fmt"%> <% @ taglib prefix = "fmt" uri = "http://java.sun.com/jsp/jstl/fmt"%> <% @ taglib prefix = "fmt" uri = "http://java.sun.com/jsp/jstl/fmt"%> <% @ taglib prefix = "fmt" uri = "http://java.sun.com/jsp/jstl/fmt"%> <% @ taglib prefix = "fmt" uri = "http://java.sun.com/jsp/jstl/fmt"%> <% @ taglib prefix = "fmt" uri = "http://java.sun.com/jsp/jstl/fmt"%> <% @ taglib prefix = "fmt" uri = "http://java.sun.com/jsp/jstl/fmt"%> <% @ taglib prefix = "fmt" uri = "http://java.sun.com/jsp/jstl/fmt"%> <% @ taglib prefix = "fmt" uri = "h taglib prefix =" fnc "uri =" / web-inf / tlds / fnc.tld "%> <% @ taglib tagdir =" / web-inf / tags "prefix =" montag " <c: set var = "ctx" scope = "session" <span style = "blanc-espace: pre"> </span> value = "$ {pageContext.request.contextPath}" />Plus de fonctions peuvent être configurées dans ApplicationContext.xml
<! - Plus de déclarations peuvent être ajoutées aux haricots -> <Beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xmlns: jee = "http://www.springframework.org/schema/jee" xmlns: tx = "http://www.springframework.org/schema/tx" xmlns: aop/schema/aop " xmlns: context = "http://www.springframework.org/schema/context" xmlns: mvc = "http://www.springframework.org/schema/mvc" xsi: schemalation = "http://www.springframework.org/schea/bans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee.xsdd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd http://www.springframework.org/schema/Contex http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd "default-lazy-init =" false "Default-Autowire =" byName "> <! - Défine la section avec les annotations -> <aop: AspectJ-Autoproxy /> <MVC: Annotation-Driven /> <! - Le commentaire remplace la configuration, analyse automatiquement le package de base. Le package d'analyse et toutes les classes de tous les sous-packages doivent être supprimées du contrôleur, sinon elle affectera la gestion des transactions -> <context: composant-scan basage-package = "com.schoolnet"> <context: exclure-filter type = "annotation" expression = "org.springframework.steretype.Controller Configuration de la configuration de la configuration de la configuration:> </ptext-scan> <! id = "PropertyConfigurer"> <propriété name = "fileencoding" value = "utf-8" /> <propriété name = "Locations"> <sist> <value> classpath: jdbc.properties </value> </ist> </ propriété> </ank> <! - Configuration de la source de données -> <filaflass "Datasource" Destren-Method = "Close"> <propriété = "DilailClass" Value = "$ {jdbc.DriverClassName}" /> <propriété name = "jdbcurl" value = "$ {jdbc.url}" /> <propriété name = "user" value = "$ {jdbc.password}" <value> 1 </value> </ propriété> <propriété name = "maxpoolSize" value = "100" /> <propriété name = "initialPoolSize" value = "3" /> <! - Temps inactive maximum, si la connexion n'est pas utilisée dans les 60 secondes, la connexion sera supprimée. S'il est 0, il ne sera jamais jeté. Par défaut: 0 -> <propriété name = "maxidleTime" value = "60" /> <! - Le nombre de connexions obtenues par C3p0 en même temps à la fois lorsque la connexion dans le pool de connexion est épuisée. Par défaut: 3 -> <propriété name = "acquireIncrement" value = "5" /> <propriété name = "maxstaxe" value = "0" /> <! - Vérifiez les connexions inactives dans tous les pools de connexion toutes les 60 secondes. Par défaut: 0 -> <propriété name = "idleconnectiontestperiod" value = "60" /> <! - Définit le nombre de tentatives répétées après qu'une nouvelle connexion n'a pas été récupérée dans la base de données. Par défaut: 30 -> <propriété name = "acquerreetAtAmpts" value = "30" /> <! - L'échec de la connexion provoquera tous les threads en attente du pool de connexion pour obtenir la connexion pour lancer une exception. Cependant, la source de données est toujours valide et continue d'essayer d'obtenir la connexion la prochaine fois que vous appelez getConnection (). Si elle est définie sur true, la source de données déclarera qu'elle a été déconnectée et clôturée en permanence après les tentatives infructueuses pour obtenir la connexion. Par défaut: false -> <propriété name = "BreakAfteracQuireFailure" value = "false" /> <! - Veuillez l'utiliser uniquement en cas de besoin en raison d'une consommation de performances élevées. Si elle est définie sur true, sa validité sera vérifiée à chaque soumission de connexion. Il est recommandé d'utiliser IdleConnectionTestPeriod ou AutomaticTestable pour améliorer les performances des tests de connexion. Par défaut: false -> <propriété named = "TestConnectionOnCheckout" value = "false" /> </-bean> <! - Définition du gestionnaire de transaction (transaction déclarative) -> <! - Support @Transactional Tags -> <! - Way One: DataSourceTransactionManager -> <Bean Id = "transactionmanager"> <propriété name = "dataSource" Ref = "dataSource" /> </ beear> "DataSource" Ref = "DataSource" /> <TX: ANNOTATION-ARRANSATION-MANager = "TransactionManager" /> <! - Way Two: HiberNateTransActionManager -> <Bean Id = "HiberNateTransactionManager"> <Property Name = "SessionFactory"> <Ref Local = "SessionFactory" /> </ Property> </Ean> <! - Configurer Hibernate's Session Factory -> <ean Id = "Sessionffacf" name = "dataSource" ref = "dataSource" /> <propriété name = "lobhandler" ref = "lobhandler" /> <propriété name = "mappingLocations"> <s list> <value> classpath *: / com / scolaire / ** / *. HBM.xml </value> </sist> </ / propriété Name = "HibernateProperties"> </ proque> Ne génère pas automatiquement des tables lorsque plusieurs espaces de table sont les mêmes dans Oracle. -> <prop key = "hibernate.default_schema"> $ {jdbc.Username} </ prop> <prop key = "hibernate.dialect"> org.hibernate.dialect.oracle10gdialect </pp> <prop key = "hibernate.show_sql"> true </ project> <! - Solve MEMPORY Problème - Proprié key = "hibernate.generate_statistics"> false </prop> <prop key = "hibernate.generate_statistics"> false </ prop> <prop> key = "hibernate.connection.release_mode"> auto </prop> <prop key = "hibernate.autoreConnect"> True </ proP> <prop key = "hibernate.cache.provider_> </prop> <prop key =" Hibernate.cache.prover_> trassle org.hibernate.cache.ehcacheprovider </ prop> <! - résoudre le problème de la fuite de mémoire -> <prop> key = "hibernate.cache.use_quey_cache"> false </prop> <prop. key = "current_session_context_class"> thread </ prop> </ props> </ propriété> <propriété name = "eventListeners"> <map> <entrée key = "Merge"> <bean /> </ entrée> </ map> </ propriété> </ bean> <! - 2.Configure Hibernate Transaction Caractéristiques -> <tx: conseils id = "txadvice" Hibernate transaction-manager = "hibernatetransactionManager"> <tx: attributes> <tx: méthode name = "sauve *" propagation = "requise" rollback-for = "exception" /> <tx: méthode name = "add *" propagation = "requis" rollback-for = "exception" /> <tx: méthode name = "upding *" propagation = "requis" requis " name = "modifier *" propagation = "requis" rollback-for = "exception" /> <tx: méthode name = "del *" propagation = "requis" rollback-for = "exception" /> <tx: méthode name = "start *" propagation = "requis" rollback-for = "exception" /> <tx: méthode name = "stop *" propagation = "requis" rollback name = "Assigne *" propagation = "requis" rollback-for = "exception" /> <tx: méthode name = "clairement *" propagation = "requis" rollback-for = "exception" /> <tx: méthode name = "clear *" propagation = "requis" rollback-for = "exception" /> <tx: méthode name = "execcute *" propagation = "requis" rollback name = "insert *" propagation = "requis" rollback-for = "exception" /> <tx: méthode name = "do *" propagation = "requis" rollback-for = "exception" /> <tx: méthode name = "set *" propagation = "requis" rollback-for = "exception" /> <tx: méthode name = "* n" propagation = "ne jamais" /> <tx: méthode = "*" read only = "true" /> </ tx: attributs> </ tx: conseils> <! - Configurer les méthodes de ces classes pour la gestion des transactions -> <aop: config> <aop: conseiller Pointcut = "Exécution (* com.eshine .. *. Service.Configuration du fichier Spring-Mvc.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: jee = "http://www.springframework.org/schema/jee" xmlns: tx = "http://www.springframework.org/schema/tx" xmlns: aop/schema/aop " xmlns: context = "http://www.springframework.org/schema/context" xmlns: mvc = "http://www.springframework.org/schema/mvc" xsi: schemalation = "http://www.springframework.org/schea/bans http://www.springframework.org/schema/beans http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring <Context: Component-Scan Base-Package = "com.schoolnet" use-default-filters = "false"> <context: include-filter type = "annotation" expression = "org.springframework.StereTy Parser -> <bean id = "jspViewResolver"> <propriété name = "prefix" value = "/" /> <propriété name = "suffix" value = ". jsp" /> <propriété name = "ordonnance" value = "0" /> <propriété name = "ContentType" value = "text / html; chasset = utf-8" /> </ beeb id = "multipartreSolver"> <propriété name = "maxuploadSize" value = "1073741824" /> </bans> </bans>
Résumer
Ce qui précède est tout le contenu de cet article sur le projet complet de code de code du Spring Framework. J'espère que ce sera utile à tout le monde. Les amis intéressés peuvent continuer à se référer à ce site:
Exemple d'introduction et de code d'implémentation SpringMVC Rest Style
SpringMVC Interceptor implémente une seule connexion
Exemple de code détaillé de redis intégré Spring
S'il y a des lacunes, veuillez laisser un message pour le signaler. Merci vos amis pour votre soutien pour ce site!