Conceitos básicos
1.1. Primavera
A Spring é uma estrutura de código aberto, uma estrutura de desenvolvimento de Java leve que surgiu em 2003, derivada de algumas das idéias e protótipos explicados por Rod Johnson em seu livro especialista em desenvolvimento e design J2EE. Foi criado para abordar a complexidade do desenvolvimento de aplicativos corporativos. A primavera usa javabeus básicos para fazer coisas que antes eram possíveis apenas pelo EJB. No entanto, os usos da Spring não se limitam ao desenvolvimento do lado do servidor. De uma simplicidade, testabilidade e perspectiva de acoplamento frouxo, qualquer aplicativo Java pode se beneficiar da primavera. Simplificando, a primavera é uma inversão leve de controle (IOC) e estrutura de contêiner orientada para a seção (AOP).
1.2. Springmvc
O Spring MVC é um produto subsequente do Springframework e foi integrado ao fluxo da Web Spring. O MVC da mola separa os papéis de controladores, objetos de modelo, despachantes e objetos manipuladores, e essa separação os facilita a personalização.
1.3. Mybatis
Mybatis é um projeto de código aberto do Apache. Em 2010, este projeto foi transferido da Apache Software Foundation para o Google Code e foi renomeado Mybatis. Mybatis é uma estrutura de camada de persistência baseada em Java. O IBATIS fornece estruturas de camada de persistência, incluindo mapas SQL e objetos de acesso a dados (DAO) MYBATIS, elimina a configuração manual de quase todo o código e parâmetros JDBC e a recuperação dos conjuntos de resultados. O Mybatis usa XML simples ou anotações para configuração e mapeamento original para mapear as interfaces e os Pojos de Java (objetos Java antigos simples) em registros no banco de dados.
Etapa 1: Crie um projeto da Web através do Maven.
Etapa 2: importe o arquivo POM para o pacote JAR
(1) pom.xml
Copiei o arquivo POM inteiro e você precisa remover algumas das coisas da inicialização e manter a cópia gerada pelo seu próprio POM.
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.test</groupId> <artifactId>ssm</artifactId> <packaging>war</packaging> <version>0.0.1-SNAPSHOT</version> <name>ssm Maven Webapp</name> <url> http://maven.apache.org </url> <PROPERTIES> <!-Número da versão da primavera-> <Spring.version> 4.0.2.Release </spring.version> <!-Mybatis Número da versão <! <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</groupId> <artifactId>spring-core</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>${spring.version}</version> </dependency> <Ependency> <PuerpId> org.springframework </frugiD> <ArtifactId> spring-oxm </artifactId> <versão> $ {spring.version} </versão </dependency> <pendency> <purgid> org.springframework </pursion> <TifactId> «Spring-tx </Artift> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <Versão> $ {spring.version} </version> </dependency> <pendecency> <puperiD> org.springframework </frupiD> <TROTIFACTID> Spring-AOP </ArtifactId> <Versão> $ {spring.version} </sipers> </dependency> <Pendency> <PuerDId> ou springflam} <TRAFACTID> Spring-Context-support </ArtifactId> <Versão> $ {spring.version} </version> </dependency> <pendence> <puperid> org.springframework </groupiD> <TrAtifactId> Spring-test </stutifactId> <siers> $ {Spring.verssion} <GrupId> org.mybatis </groupiD> <TRAFACTID> mybatis </artifactId> <versão> $ {mybatis.version} </version> </dependency> <!-mybatis/spring package-> <pendency> <roupid> myrg.myBatis <//GrupidId> artiftIf-> <pendency> <purbid> myrg.mybatis </grupo <broupId> <Versão> 1.2.2 </sistER> </dependency> <!-importar pacote java ee jar-> <pendency> <puperid> javax </groupiD> <TRAFACTID> javaee-api </artifactId> <versão> 7.0 </versão> </dependency> <!-MySQL DataBase link Jar Package-> </ArtifactId> MySQL-Connector-Java </ArtifactId> <versão> 5.1.30 </siers> </dependency> <!-Importe o pacote JAR do DBCP para configurar o banco de dados em ApplicationContext.xml-> dependência> <Grupid> com comuns-DBCP </GroupId> <Versão> 1.2.2 </sisters> </dependency> <!-JSTL Tag Class-> <Depencency> <puperid> jstl </groupiD> <TRATIFACTID> jstl </artifactId> <Version> 1.2 </versão> </dependency> <!-Pacote de gerenciamento de arquivos de log-> <!-Log-> <Persice> <Grupo> Log4 <artifactId>log4j</artifactId> <version>${log4j.version}</version> </dependency> <!-- Format objects to facilitate log output--> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.1.41</version> </dependency> <dependency> <PuProuDID> org.slf4j </frugiD> <TRAFACTID> SLF4J-API </ArtifactId> <versão> $ {slf4j.version} </sipers> </dependency> <pendence-> <voupid> org.slf4j </groupid> <TifactiD> slf4j-log4j12 <versão> $ {slf4j.version} </versão> </dependency> <!-LOG END-> <!-Entrada JSON-> <Ependency> <puperid> org.codehaus.jackson </groupid> <Cepactid> Jackson-Mapper-asl </ArtifactId> </suplgon>-PACONEGEM>-PACONEGIMENTE </Version> </depended> Paturgy> Pabundos </dependente>-PACONEGIMENTEMENGIMENGIMENGIMENTE <SUPENGID> <CEPTIDEM> </dependente> <EfceMent> </dependente> Paturgid> Paturgid! <PupiFactId> Commons-FileUpload </proupId> <stifactId> Commons-FileUpload </ArtifactId> <versão> 1.3.1 </siers> </dependency> <pendency> </groupidid> commons-i </groupid> <TifactId> Commons-i </stifactId> <ulsy> 2. //010> </groupid> <PuerpId> Commons-codec </proupId> <stifactId> commons-codec </stutifactId> <versão> 1.9 </versão> </dependency> </dependences> <brupt> <finname> ssm </finalName> </fruct> </jur Project>Etapa 3: observe a estrutura geral do projeto, deixe-me explicar primeiro que não tenho nenhuma coisa relacionada sobre o SpringMVC aqui, porque primeiro integra a Spring-Mybatis e, ao testar se é bem-sucedido, integrem com sucesso o SpringMVC.
Etapa 4: Crie uma classe modelo
Public class Usuário {private int id; nome de string privado; senha de sequência privada; String privada senha2; /*Fornecendo métodos de conjunto e obtenção, método de tostragem*/}Etapa 5: Crie banco de dados, interface Userdao e arquivo de mapeamento de mapeador
(1) Crie uma tabela muito simples
(2) Interface Userdao
interface pública userdao {user findUserbyId (usuário do usuário);}(3) uesrmapper.xml
<? xml versão = "1.0" Encoding = "utf-8"?> <! Doctype MapperPublic "-// mybatis.org//dtd mapper 3.0 // pt" "httpp://mybatis.org/dtd/mybatis-3mating.dtd"> <! -> <Mapper namespace = "com.ssm.dao.userdao"> <!-Consulta as informações do usuário com base em id-> <!-id: identifique exclusivamente uma declaração, que é a mesma que o nome do método do userdao#{}: representa um espaço reservado. Se um parâmetro de tipo simples for passado em #{}, o nome em #{} é arbitrary parameterType: o tipo do parâmetro de entrada, que é o mesmo que o parâmetro no userdao () resultTyPe: o tipo de saída, que é o mesmo que o userdao () retorno) ResultType = "com.ssm.model.user"> selecione * do usuário <where> <se test = "name! = null"> e nome = #{nome} </f> <se test = "senha! = null"> e senha = #{senha} </if> </where> </select> </pperpper>Etapa 5: Crie UserService e UserServiceImpl
(1) Usuários Service
interface pública UserService {public user getUserById (usuário do usuário); }(2) UserServiceImpl
importar org.springframework.stereotype.service; importar com.ssm.dao.userdao; importar com.ssm.model.user; importar com.ssm.service.userService; @Sourice ("Uservice") UserReverImentImerMPLIMENTIMENTRICE @RESOURCE (@RESOURCE ") Usuário público getUserById (usuário do usuário) {return this.userdao.findUserById (Usuário); }}Etapa 6: Crie arquivo JDBC e arquivo de log de log
(1) JDBC.Properties
jdbc.driver = com.mysql.jdbc.driverjdbc.url = jdbc/: mysql/: // localhost/: 3306/teste? useunicode = true && caracternecoding = utf-8jdbc.username = rootjdbc.password = root
(2) log4j.properties
log4j.rootLogger = info, console, arquivo #Define o destino de saída do log como console log4j.appender.console = org.apache.log4j.consoleppender log4j.appender.console.target = System.out #Can Special especifique o formato de saída de log, a seguinte linha org.apache.log4j.patternlayout log4j.appender.console.layout.conversionPattern = [%c] -%m%n #quando o tamanho do arquivo atinge o tamanho especificado, um novo arquivo é generalizado log4j.append.file = orgache.log4j.rollingFilEAppApping logs/ssm.log #Define o tamanho máximo do arquivo log4j.appender.file.maxfilesize = 10MB #Output So Log. Se você alterá-lo para Debug, significa logs de saída no Debug ou acima do nível log4j.appender.file.threshold = all log4j.appender.file.layout = org.apache.log4j.patternlayout log4j.append.file.layout.ConversionPattern = [%p] [ Hh/: mm/: ss}] [%c]%m%n
Etapa 7: integrar spring-mybatis.xml
<? xml versão = "1.0" coding = "utf-8"?> <Beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http:/wwww.w3 xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.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.1.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd "> <! Arquivos-> <bean id = "PropertyConfigurer"> <propriedade name = "location" value = "classPath: jdbc.properties" /> </i bean> <!-2. Pool de conexão com o banco de dados-> <sornmEn). value = "$ {jdbc.url}" /> <propriedade name = "userName" value = "$ {jdbc.username}" /> <propriedade name = "senha" value = "$ {jdbc.password}" /> < /bean> <! id = "sqlSessionFactory"> <!-Especifique referência do pool de conexão com o banco de dados-> <propriedade name = "DataSource" ref = "DataSource"/> <!-varredura automática de maping.xml arquivos-> <nome da propriedade = "mapperlocations" = "Classpath: com/ssm/bim/*. está localizado, a primavera encontrará automaticamente a classe sob ela-> <Bean> <propriedade name = "bashepackage" value = "com.ssm.dao"/> <propriedade name = "sqlsessionFactoryBeanName" value = "sqlSessionFactory"> </Property> </bean> <!-(gerenciamento de transação) <! <Propriedade name = "DataSource" ref = "DataSource"/> </ Bean> </ Beans>Etapa 8: Crie uma aula de teste
Após as etapas acima (o log4j não corresponde e não tem efeito), concluímos a integração do Spring e Mybatis, para que possamos escrever um código de teste para tentar se ele foi bem -sucedido.
A classe de teste é estabelecida em SRC/Test/Java. Se o teste for bem -sucedido, significa que a primavera e os mybatis foram integrados com sucesso. As informações de saída são impressas no console usando log4j.
(1) TestmyBatis Test Class
pacote ssm; importar javax.annotation.resource; importar org.apache.log4j.logger; importar org.junit.test; importar org.junit.runner.runwith; importar org.springframework.test.context.ContextConfiguration; org.springframework.test.context.junit4.springjunit4classrunner; importar com.ssm.model.user; importar com.ssm.service.userService;*Deixe o teste executado no ambiente de teste*/runwith (springjunit de springjuniatsratation; O arquivo será carregado*/ @contextConfiguration (locations = {"ClassPath: spring-mybatis.xml"}) classe pública TestmyBatis {@Resource (name = "UserService") privado UserService UserService; @Test public void test1 () {usuário do usuário = new User (); user.setName ("Zhang San"); user.setPassword ("123"); Usuário do usuário1 = UserService.getUserById (Usuário); System.out.println (user1.toString ()); }}afinal! A chave é observar a saída de fundo, que também é um tempo para testemunhar milagres. Se o objeto de saída for emitido, significa que sua configuração e integração serão bem -sucedidas!
Então começamos a integrar Springmvc
Etapa 9: configure springmvc.xml
<? xml versão = "1.0" coding = "utf-8"?> <Beans xmlns = "http://www.springframework.org/schema/beans" xmlns: xsi = "http:/wwww.w3 xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.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.1.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd "> <! Scan @pacote Automaticamente o pacote para que o springmv pense que pensa que a classe ADNOTENHATE da classe the Classk <Contexto: component-scan Base-Package = "com.ssm.controller"/> <!-Evite baixar arquivos quando o IE executar o Ajax e retornar ao json-> <bean id = "mapingjacksonhttpmessagonverter"> <nome da propriedade = "suportedmediaTeSets"> <list> <value> text/hml/hml; </bean> <!-Função de anotação SpringMVC para concluir o mapeamento de solicitações e anotações pojos-> <Bean> <Propriedade name = "messageconverters"> <list> <ref bean = "mapingjacksonhttpmessageconverter"/<!-json converter-</list> </list> Configuração do modo de visualização-> <Bean> <!-Meu entendimento da configuração aqui é prefixar e sufixar automaticamente a sequência retornada pelo método da ação subsequente para se tornar um endereço URL disponível-> <propriedades name = "prefixar" usoping = "/web-inf/jsp/"/> <nome da propriedade = "sufix" valuation ". Se você não usar o upload do arquivo, não precisará configurá -lo. Obviamente, se você não corresponder, não há necessidade de introduzir o pacote de componentes de upload no arquivo de configuração-> <bean id = "multipartreSolver"> <!-codificação padrão-> <names name = "defaultEncoding" value = "utf-8" /> <!-Tamanho do arquivo maximum-> <nome da 5. Valor na memória -> <propriedade name = "maxinMemorySize" value = "40960"/> </i bean> </ Beans>
Etapa 10: configure o arquivo web.xml
A introdução do spring-mybatis.xml e o servlet Spring-MVC configurado são para integração SSM. A integração anterior de duas estruturas não exigiu nenhuma configuração aqui.
<?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/xmls/javaee/web-web-web-web-sup_3s) Aplicativo da web criado </sisiber-name> <!-Arquivos de configuração de primavera e mybatis-> <Context-Param> <am-name> contextConfigLocation </amam-name> <amam-value> classe: spring-mybatis.xml </param-value> </context-param> <!-codificação-filtro> filtro> filtro> filter> </filter> </param-value> </context-param> <!-filtro-name <filter>> filtro> <filter-class> org.springframework.web.filter.characterencodingFilter </limter-Class> <sync-suported> true </sync-supportd> <init-param> <amam-name> codificação </param> <aames-value> </irf-8/param-name> codificação </param> <amaMplue> </-8 </param-name> <filter-name>encodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!-- Spring listener--> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <!-- Prevent Spring memory from overflowing listener--> <listener> <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> <iit-param> <amam-name> contextConfigLocation </param-name> <amam-value> ClassPath: springmvc.xml </param-value> </irit-param> <lound-on-startup> 1-Mervlente </sertup> </argetup> <sync-suportd> verdadeiro </support> </sertlet> </sertlet> </sertlet> </sertlet> </sertlet> </sertlet> </sertlet> </sertlet> </sertlet> </sertlet> </sertlet> </erverpup> <sync-support> <Mame-name> Springmvc </servlet-name> <!-Aqui você pode configurar *.do, correspondendo ao hábito do sufixo de struts-> <url-tattern>/</url-tattern> </servlet-mapping> <lorde-----quernty-list> <lorde-file>/Webrates.jsp </welcomeping> </-welclefile> <lorde-file-list>
Etapa 11 Teste final:
(1) Escreva o Login.jsp primeiro
<%@ página linguagem = "java" contentType = "text/html; charset = utf-8" pageEncoding = "utf-8"%> <html> <head> <title> Login do usuário: </title> </head> <body> <form> action = "login"> <batel> nome do usuário: </<bat> <input> typenget = <body> <form> Action = "Login"> <bel> <bel> usen: "</input> <input> type = type = typen> <form> action =" login "> <bel> <bel> userin: </<bat> <input> type = typen> name = "Nome de usuário"> </input> <br> <br> <belt> senha: </celt> <input type = "text" id = "senha" name = "senha"> </input> <br> <br> <input type = "submit" value = "login"/> </form> </body> </html>
interface:
(2) Escrevendo UserController
importar javax.servlet.http.httpServletRequest; importar org.springframework.steretype.controller; importar org.springframework.web.bind.annotation.requestMapping; importar com.ssM.Daoer.Userdao; impor.ssm.mm.mm.mm.mm.mm.model; @Resource private Userdao Userdao; @RequestMapping ("/jsp/login") public string login (httpServletRequest request) {string userName = request.getParameter ("nome de usuário"); String senha = request.getParameter ("senha"); Usuário do usuário = novo usuário (); // consulta o banco de dados user.setName (nome de usuário); user.setPassword (senha); Usuários do usuário = userdao.findUserbyId (Usuário); // Se houver alunos, isso significa que o login é bem -sucedido se (usuários! = Null) {retorna "susscss"; } // Não escrevi este JSP, desde que você saiba, você pode escrever seu próprio retorno "err";}}(3) Finalmente, susscss.jsp
<%@ página de página = "java" contentType = "text/html; charset = utf-8" pageEncoding = "utf-8"%> <html> <body> <p>
Perfeito!
O exposto acima é todo o conteúdo deste artigo. Espero que seja útil para o aprendizado de todos e espero que todos apoiem mais o wulin.com.