En plus de Struts, le cadre Web MVC traditionnel a actuellement également Spring MVC. Cela est principalement dû au fait que Spring MVC est relativement simple à configurer et très clair à utiliser. Il est très flexible, a une bonne intégration avec le printemps et prend mieux les API RESTfuls que les entretoises.
Mybatis est une version améliorée d'Ibatis. En tant qu'ancien rival de l'hibernate, c'est un cadre de couche persistant qui peut personnaliser SQL, des procédures stockées et des mappages avancés.
La principale différence avec l'hibernate est que Mybatis est semi-automatisé, tandis que l'hibernate est entièrement automatique, donc lorsque les exigences de l'application deviennent de plus en plus complexes, le SQL automatisé semble être plus maladroit.
Depuis que j'ai entrepris un projet il y a quelque temps, je voulais utiliser SpringMVC pour le faire, alors j'ai commencé à jouer au jeu d'intégration du cadre avec une attitude d'entraînement. Les personnes qui construisent souvent des cadres doivent savoir que le cœur de la construction de trame est des fichiers de configuration. Je publie donc principalement quelques codes de fichiers de configuration. Il en va de même pour moi, après avoir écrit le fichier de configuration, j'ai exécuté l'erreur et ajouté le pot. Voici les packages en pot que j'utilise (devrait être le moins):
Remarque: Il y a des bocaux supplémentaires dans l'image ci-dessus, par exemple, le pool de connexion de la base de données que j'utilise est le druid et le journal de journal d'Alibaba, de sorte que les pots connexes sont introduits. L'utilisation et la configuration de ces deux cadres sont très simples, donc je n'entrerai pas dans les détails ici.
1. Intégrer Springmvc
Springmybatis-Servlet.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: 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.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsdd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd "> <! Scan le nom du package, en faisant la support de printemps Détection automatique des composants, tels que le contrôleur annoté -> <Context: Component-Scan Base-Package = "Com.alibaba.Controller" /> <Context: Component-scan Base-Package = "Com.alibaba.Service" /> <! - Voir l'analyse "Définir le pré-suffix du fichier saut name = "prefix" value = "/ web-inf / jsp /" /> <propriété name = "suffix" value = ". jsp" /> <! - peut être vide, pratique pour implémenter la logique de la classe d'interprétation de la vue basée sur l'extension -> </ank> <! - Configurez la logique, plusieurs intercepteurs, interceptors, intercepteurs exécutés: <! Chemin -> <MVC: mapping path = "/ user / **" /> <mvc: mapping path = "/ test / **" /> <ean> </ bean> </ mvc: interceptor> <! - Lors de la configuration de plusieurs intercepteurs, appelez d'abord la méthode de pré-gourm </fans>
2. Intégrer Mybatis
printemps-dao.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: mybatis = "http://mybatis.org/schema/mybatis-spring" xmlns: contexte = "http://www.springframework.org/schema/contex http://www.springframework.org/schema/beans/spring-beans.xsd http://mybatis.org/schema/mybatis-spring http://mybatis.org/schema/mybatis-spring http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd "> <! - La classe sous ce pack introduit automatiquement -> <mybatis: scan bas basage = "com.alibaba.dao" /> <! - Introduire des fichiers de propriétés -> <context: propriété-placeholder location = "classpath: configuration.properties" /> <! - Database Connection -> <bean id = "dataSource" init-thod = "init" détruire-métab Value = "$ {jdbc.url}" /> <propriété name = "username" value = "$ {jdbc.Username}" /> <propriété name = "mot de passe" value = "$ {jdbc.password}" /> <! - Configurer la taille de l'initialisation, minimum, maximum -> <propriété name = "InitialSize"> <value> name = "maxactive"> <value> 5 </value> </ propriété> <propriété name = "minidle"> <value> 1 </value> </ propriété> <! - Configurez l'heure pour obtenir le délai d'attente de connexion -> <propriété name = "maxwait"> <value> 60000 </value> </ / Property name = "Filters"> <value> stat </value> </ propriété> <! - Configurez le temps qu'il faut pour effectuer un intervalle de détection pour détecter la connexion inactive qui doit être fermée, en millisecondes -> <propriété name = "TimeBetweenvictionRunsmillis"> <value> 60000 </value> </// / bien> <! name = "MineVictableIdleMemillis"> <value> 300000 </value> </ propriété> <! - <propriété name = "ValidationQuery"> <value> Sélectionnez 'x' </value> </ propriété> <propriété name = "testonBorrowe"> <value> false </value> </property name = "testonreturn"> <value> false </value> </ propriété> <propriété name = "PoolPreparedStatements"> <value> true </value> </ propriété> <propriété name = "maxopenPreparedStatements"> <value> 20 </ valeur> </ Property> -> </anfact name = "dataSource" ref = "dataSource" /> </ank> </bans> 3.Web.xml intègre SpringMVC et MyBatis
<? 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" xmlns: web = "http://java.sun.com/xml/ns/javaee" xmlns: web = "http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" XSI: ScheMalocation = "http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xssd" version = "3.0"> <! - Le service est fourni de contenants tels que Tomcat, Jetty, etc., et change le mamplet de Static, tels que Tomcat, Jetty, etc., et change le MAPADE STATIC à / statique / répertoire. Par exemple, lorsque vous avez visité http: //localhost/foo.css, maintenant http: //localhost/static/foo.css -> <! - N'interceptez pas les fichiers statiques -> <servlet mapping> <servlet-Name> par défaut </ servlet-name> <Url-Pattern> / js / * </url-stattern> <Url-Pattern> / CSS / * </ url-Pattern> <Url-Pattern> / Images / * </ url-Pattern> <Url-Pattern> / Fontts / * </ url-Pattern> </ Servlet-Mapping> <! <filter-class> org.springframework.web.filter.characterencodingfilter </filter-class> <innit-Param> <param-name> Encoding </ param-name> <param-value> utf-8 </ param-value> <Ar param-Value> true </ param-valeur> </nitt-Param> </filter> <filter-mapping> <filter-name> EncodingFilter </filter-name> <Url-Pattern> / * </ url-Pattern> </filter-mapping> <! - Lors de l'initialisation de Dispatcherservlet, le cadre recherche un fichier nommé nommé [Servlet-Name] -Servlet.x dans le cadre dans un fichier nommé nommé nommé [Servlet-Name] -Servlet.x dans le cadre dans un fichier nommé nommé nommé [Servlet-Name] -Servlet. Répertoire Web-inf et définit les haricots pertinents là-bas, dépassant tous les haricots définis à l'échelle mondiale -> <Servlet> <Serplet-Name> SpringMybatis </Servlet-Name> <Servlet-Class> Org.SpringFramework.Web.Servlet.DispatcherServlet </servlet-Class> <ond-on-startup> 1 </ / Load-on-starttup> <Serplet-Name> SpringMybatis </ Servlet-Name> <! - Toutes les demandes seront traitées par Dispatcherservlet -> <Url-Pattern> / </ url-Pattern> </ Param-Name> <Axte context-Param> <param-name> </ context-param> <ouciner> <écouteur-classe> org.springframework.web.context.contextloaderListener </ écouteur-Class> </diner> <! - Druid Web Monitoring -> <Servlet> <Servlet-Name> DruidStatView </ Servlet-Name> <Servlet-Class> com.alibaba.druid.support.http.statViewServlet </ Servlet-Class> </ Servlet> <Servlet-Mapping> <Servlet-Name> DruidStatview </ Servlet-Name> <Url-Pattern> / Druid / * </url-Pattern> </vretlet-mapping> <Location> /Error/404.jsp </ Location> </ Error-Page> <Reurr-Page> <Reur-Code> 500 </ Error-Code> <Location> /Error/500.jsp </ Location> </ Error-Page> </ Web-App>
4.Logback.xml Configuration du journal
<? xml version = "1.0" Encoding = "UTF-8"?> <Inconfiguration> <appender name = "stdout"> <ecoder> <mattern>% d {hh: mm: ss.sss} [% thread]% -5level% logger {36} -% msg% n </pattest " niveau = "trace" /> <logger name = "com.alibaba.controller.testController" niveau = "trace" /> <logger name = "org.springframework.web.servlet.dispatcherServlet" niveau = "debug" /> <logger name = "druid.sql" niveau = "info" /> <! Le journal SQL ne sera pas affiché. Logback n'est qu'une implémentation de slf4j -> <root niveau = "debug"> <appender-ref ref = "stdout" /> </root> </fongucial> 5. Configuration.Properties Configuration
jdbc.url = jdbc /: mysql /: // localhost /: 3306 / druid? useunicode / = true & caractéroding / = utf-8 & zerodatetimebehavior / = converttonull jdbc.Username = root jdbc.password = 123456 jdbc.
6. Testez si la construction est réussie, code de fond
Tout d'abord, connectez-vous, utilisez le cryptage, vous pouvez le supprimer
package com.alibaba.Controller; import javax.annotation.resource; Importer javax.servlet.http.httpservletRequest; import org.apache.commons.codec.digest.digestUtils; import org.slf4j.logger; import org.slf4j.loggerfactory; import org.springframework.sterreotype.Controller; import org.springframework.web.bind.annotation.requestmapping; import org.springframework.web.bind.annotation.requestMethod; import org.springframework.web.bind.annotation.requestParam; import com.alibaba.model.user; import com.alibaba.service.userservice; import com.alibaba.util.requesttutil; / ** * @author tfj * 2014-7-26 * / @Controller public class SystemController {private final logger log = loggerfactory.getLogger (systemController.class); @Resource Private UserService UserService; @RequestMapping (value = "/", méthode = requestMethod.get) public String home () {log.info ("return to homepage!"); return "index"; } @RequestMapping (value = "/ test / hello", méthode = requestMethod.get) public String testhello () {log.info ("Exécuter la méthode TestHello!"); retourner "testhello"; } @RequestMapping (Value = "/ Login", méthode = requestMethod.Post) Public String TestLogin (HttpServleRequest Request, @ requestParam String username, @RequestParam String Password) {log.info ("Exécuter la méthode TestLogin!"); User user = userService.FindUserByName (nom d'utilisateur); if (user! = null) {if (user.getPassword (). equals (digestUtils.md5hex (mot de passe))) {request.getSession (). setAttribute ("userId", user.getId ()); request.getSession (). setAttribute ("utilisateur", nom d'utilisateur); return "redirect:" + requestUtil.RevevesAveDequest (); // sauter vers la page d'accès} else {log.info ("Erreur de mot de passe"); request.getSession (). setAttribute ("message", "le nom d'utilisateur et le mot de passe sont incorrects, veuillez vous connecter à nouveau"); return "connexion"; }} else {log.info ("Le nom d'utilisateur n'existe pas"); request.getSession (). SetAttribute ("Message", "Le nom d'utilisateur n'existe pas, veuillez vous connecter à nouveau"); return "connexion"; }}} Je n'écrirai pas sur le service et le modèle, j'écrirai sur la carte des classes de mappers de Mybatis
<? xml version = "1.0" Encoding = "UTF-8"?> <! Doctype Mappeur public "- // Mybatis.org//dtd Mappeur 3.0 // en" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <maître namespace = "com.alibaba. id = "FindUserByName" resultType = "com.alibaba.model.user"> SELECT ID, nom d'utilisateur, mot de passe depuis sysuser où username = # {nom d'utilisateur} </lect> </naupper> 7. La réception JSP est principalement une page où la connexion et la connexion réussissent, donc je ne l'écrirai pas
Publier une capture d'écran:
À ce stade, l'intégration de SpringMVC + Mybatis a réussi. Des fonctions complexes par la suite à ajouter
Choses à noter
1. Les configurations de Druid et de la connexion dans le cadre sont copiées à partir du site officiel, elles sont donc toutes les plus élémentaires. Les lecteurs peuvent les ignorer, ou ils peuvent être remplacés par des composants de base de données et des cadres journaux que les lecteurs connaissent, tels que C3P0 et Log4J.
2. Le code a une gestion de l'autorisation ajoutée, c'est-à-dire que vous devez vous connecter avant l'accès, puis sauter à la page pour accéder après la connexion. Pour la gestion de la permission de SpringMVC, veuillez consulter: http://www.vevb.com/article/99569.htm
3. Cet article est le code le plus simple et le plus basique qui a été supprimé de mon code de test. Veuillez me pardonner certaines des zones qui n'ont pas été supprimées.
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.