English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Conceptos básicos
1.1、Spring
Spring es un framework de código abierto, Spring fue lanzado en2003 Un ligero framework de desarrollo Java que surgió en el año, escrito por Rod Johnson en su obra Expert One-On-One J2Derivado de algunas ideas y prototipos expuestos en EE Development and Design. Fue creado para resolver la complejidad de desarrollo de aplicaciones empresariales. Spring utiliza básicos JavaBean para realizar lo que anteriormente solo podía hacer EJB. Sin embargo, el uso de Spring no se limita solo al desarrollo del lado del servidor. Desde el punto de vista de la simplicidad, la testabilidad y la desacoplamiento, cualquier aplicación Java puede beneficiarse de Spring. En pocas palabras, Spring es un contenedor de framework ligero de inyección de dependencias (IoC) y orientación a aspectos (AOP).
1.2,SpringMVC
Spring MVC es un producto posterior a SpringFrameWork y se ha integrado en Spring Web Flow. Spring MVC separa los roles de controlador, objeto de modelo, distribuidor y objeto procesador, lo que facilita su personalización.
1.3,MyBatis
MyBatis era un proyecto de código abierto de Apache, iBatis, 2010Este proyecto fue migrado de Apache Software Foundation a Google Code y renombrado a MyBatis. MyBatis es un marco de persistencia basado en Java. El marco de persistencia proporcionado por iBATIS incluye SQL Maps y Objetos de Acceso a Datos (DAO). MyBatis elimina prácticamente todo el código JDBC y la configuración manual de parámetros, así como la recuperación de conjuntos de resultados. MyBatis utiliza XML simple o anotaciones para la configuración y mapeo original, mapeando interfaces y POJOs (Plain Old Java Objects, objetos Java comunes) a registros en la base de datos.
Primer paso:Crea un proyecto web mediante Maven.
Segundo paso:importación de paquetes jar en el archivo pom
(1) pom.xml
He copiado toda mi archivo pom.xml, debes quitar algunas inicializaciones que vienen por defecto y mantener la copia generada por tu propio pom.
<proyecto 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"> <versiónModelo>4.0.0</versiónModelo> <groupId>com.test</groupId> <artifactId>ssm</artifactId> <paquete>war</paquete> <version>0.0.<1-SNAPSHOT</version> <name>ssm Maven Webapp</name> <url>http://maven.apache.org</url> <properties> <!-- número de versión de spring --> <spring.version>4.0.<2.RELEASE</spring.version> <!-- mybatis版本号 --> <mybatis.version>3.2.6</mybatis.version> <!-- log4j日志文件管理包版本 --> <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> <dependency> <groupId>org.springframework/groupId> <artifactId>spring-oxm/artifactId> <version>${spring.version}/version> </dependency> <dependency> <groupId>org.springframework/groupId> <artifactId>spring-tx/artifactId> <version>${spring.version}/version> </dependency> <dependency> <groupId>org.springframework/groupId> <artifactId>spring-jdbc/artifactId> <version>${spring.version}/version> </dependency> <dependency> <groupId>org.springframework/groupId> <artifactId>spring-webmvc/artifactId> <version>${spring.version}/version> </dependency> <dependency> <groupId>org.springframework/groupId> <artifactId>spring-aop/artifactId> <version>${spring.version}/version> </dependency> <dependency> <groupId>org.springframework/groupId> <artifactId>spring-context-support/artifactId> <version>${spring.version}/version> </dependency> <dependency> <groupId>org.springframework/groupId> <artifactId>spring-test/artifactId> <version>${spring.version}/version> </dependency> <!-- mybatis核心包 --> <dependency> <groupId>org.mybatis/groupId> <artifactId>mybatis/artifactId> <version>${mybatis.version}/version> </dependency> <!-- mybatis/spring包 --> <dependency> <groupId>org.mybatis/groupId> <artifactId>mybatis-spring/artifactId> <version>1.2.2</version> </dependency> <!-- 导入java ee jar包 --> <dependency> <groupId>javax/groupId> <artifactId>javaee-api/artifactId> <version>7.0</version> </dependency> <!-- 导入Mysql数据库连接jar包 --> <dependency> <groupId>mysql/groupId> <artifactId>mysql-connector-java/artifactId> <version>5.1.30</version> </dependency> <!-- 导入dbcp的jar包,用于在applicationContext.xml中配置数据库 --> <dependency> <groupId>commons-dbcp/groupId> <artifactId>commons-dbcp/artifactId> <version>1.2.2</version> </dependency> <!-- JSTL标签类 --> <dependency> <groupId>jstl/groupId> <artifactId>jstl/artifactId> <version>1.2</version> </dependency> <!-- 日志文件管理包 --> <!-- 日志开始 --> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>${log4j.version></version> </dependency> <!-- 格式化对象,便于日志输出 --> <dependency> <groupId>com.alibaba/groupId> <artifactId>fastjson/artifactId> <version>1.1.41</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api/artifactId> <version>${slf4j.version></version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>${slf4j.version></version> </dependency> <!-- 日志结束 --> <!-- JSON导入 --> <dependency> <groupId>org.codehaus.jackson/groupId> <artifactId>jackson-mapper-asl</artifactId> <version>1.9.13</version> </dependency> <!-- 组件包上传 --> <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.3.1</version> </dependency> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.4</version> </dependency> <dependency> <groupId>commons-codec</groupId> <artifactId>commons-codec</artifactId> <version>1.9</version> </dependency> </dependencies> <build> <finalName>ssm</finalName> </build> </project>
第三步:查看整体的项目架构,先说明下我这里还没有有关springMVC的相关东西,因为我先整合sping-mybatis,在测试是否成功,成功后整合springMVC
第四步:建立model类
public class User { private int id; private String name; private String password; private String password2; /*提供set和get方法,toString方法*/ }
Paso 5:创建数据库,UserDao接口和mapper映射文件
(1)建立很简单的一张表
(2)UserDao接口
public interface UserDao { User findUserById(User user); }
(3)UesrMapper.xml
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!-- namespace命名空间,指向UserDao全路径--> <mapper namespace="com.ssm.dao.UserDao"> <!-- 根据id查询用户信息 --> <!-- id:唯一标识一个statement,与UserDao方法名一致 #{}:表示一个占位符,如果#{}中传入简单类型的参数,#{}中的名称随意 parameterType:输入参数的类型,与UserDao()中参数一致 resultType:结果输出类型,与UserDao()返回类型一致 --> <select id="findUserById" parameterType="com.ssm.model.User" resultType="com.ssm.model.User"> SELECT * FROM USER <where> <if test="name != null"> AND Name= #{name} </if> <if test="password != null"> AND password= #{password} </if> </where> </select> </mapper>
Paso 5:Crear UserService y UserServerImpl
(1)UserService
public interface UserService { public User getUserById(User user); }
(2)UserServiceImpl
import org.springframework.stereotype.Service; import com.ssm.dao.UserDao; import com.ssm.model.User; import com.ssm.service.UserService; @Service("userService") public class UserServerImpl implements UserService { @Resource private UserDao userDao; public User getUserById(User user) { return this.userDao.findUserById(user); } }
Paso 6:Crear archivos jdbc y log de registro
(1)jdbc.properties
jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc\:mysql\://localhost\:3306/test?useUnicode=true&&characterEncoding=UTF-8 jdbc.username=root jdbc.password=root
(2)log4j.properties
log4j.rootLogger=INFO,Console,File #Define el destino de salida de los registros como la consola log4j.appender.Console=org.apache.log4j.ConsoleAppender log4j.appender.Console.Target=System.out Puede especificarse de manera flexible el formato de salida de los registros, la siguiente línea especifica el formato específico log4j.appender.Console.layout = org.apache.log4j.PatternLayout log4j.appender.Console.layout.ConversionPattern=[%c] - %m%n # Se crea un nuevo archivo cuando el tamaño del archivo alcanza el tamaño especificado log4j.appender.File = org.apache.log4j.RollingFileAppender # Especificar el directorio de salida log4j.appender.File.File = logs/ssm.log # Definir el tamaño máximo del archivo log4j.appender.File.MaxFileSize = 10MB # Mostrar todos los registros de log, si se cambia a DEBUG se mostrarán los registros de nivel DEBUG o superior log4j.appender.File.Threshold = ALL log4j.appender.File.layout = org.apache.log4j.PatternLayout log4j.appender.File.layout.ConversionPattern =[%p] [%d{yyyy-MM-dd HH\:mm\:ss}][%c]%m%n
Paso séptimo:Integración de 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/context" xmlns:mvc="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"> <!-- Escaneo automático --> <context:component-scan base-package="com.ssm" /> <!-- Introducción de implementación de archivo de configuración jdbc --> <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="location" value="classpath:jdbc.properties" /> </bean> <!-- 2. Piscina de conexiones de bases de datos --> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="${jdbc.driver}" /> <property name="url" value="${jdbc.url}" /> <property name="username" value="${jdbc.username}" /> <property name="password" value="${jdbc.password}" /> </bean> <!-- La integración de Spring y MyBatis, gestionada por Spring para la fábrica de sesión de fábrica de SqlSessionFactory de MyBatis --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <!-- se especifica la referencia al pool de conexión de la base de datos --> <property name="dataSource" ref="dataSource" /> <!-- se escanea automáticamente el archivo mapping.xml --> <property name="mapperLocations" value="classpath:com/ssm/mapper/*.xml"></property> </bean> <!-- el nombre del paquete del interfaz DAO, Spring buscará automáticamente sus clases subyacentes --> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="com.ssm.dao" /> <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property> </bean> <!-- (gestión de transacciones) administrador de transacciones, utiliza JtaTransactionManager para transacciones globales --> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource" /> </bean> </beans>
Octavo paso:se crea la clase de prueba
Después de los pasos anteriores (log4j no está configurado no afecta),hemos completado la integración de Spring y mybatis, de esta manera podemos escribir un fragmento de código de prueba para probar si ha sido exitoso.
la clase de prueba se encuentra en src/test/en java se crea, si el test es exitoso, indica que Spring y Mybatis se han integrado con éxito. La información de salida se utiliza mediante Log4j escribe en la consola.
(1)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; /*Run tests in the Spring test environment*/ @RunWith(SpringJUnit4ClassRunner.class) /*Used to specify the location of the Spring configuration file to be loaded, which will load the default configuration file*/ @ContextConfiguration(locations = { "classpath:spring-mybatis.xml" }) public class TestMyBatis { @Resource(name = "userService") private UserService userService; @Test public void test1() { User user=new User(); user.setName("张三"); user.setPassword("123"); User user1 = userService.getUserById(user); System.out.println(user1.toString()); } }
Finally! The key is to look at the backend output, which is also the time to witness miracles. If an object is output, it means you have successfully configured the integration!
So, let's start integrating SpringMVC next
Step 9:configure 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/context" xmlns:mvc="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"> <!-- auto-scan this package, so that SpringMVC considers classes annotated with @controller under the package as controllers --> <context:component-scan base-package="com.ssm.controller" /> <!--Evitar que IE ejecute AJAX y, al devolver JSON, aparezca la descarga de archivos --> <bean id="mappingJacksonHttpMessageConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"> <property name="supportedMediaTypes"> <list> <value>text/html;charset=UTF-8</value> </list> </property> </bean> <!-- Inicio de la funcionalidad de anotaciones de SpringMVC, realización de la mapeo de solicitudes y POJO anotados --> <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"> <property name="messageConverters"> <list> <ref bean="mappingJacksonHttpMessageConverter" /> <!-- Convertidor JSON --> </list> </property> </bean> <!-- Definición de prefijo y sufijo de archivos de redirección, configuración de modo de vista--> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <!-- Mi comprensión de esta configuración es que se agrega automáticamente un prefijo y un sufijo a la cadena devuelta por el método action posterior, convirtiéndola en una dirección URL usable --> <property name="prefix" value="/WEB-INF/jsp/" /> <property name="suffix" value=".jsp" /> </bean> <!-- Configuración de carga de archivos de configuración, si no se utiliza carga de archivos, no es necesario configurarlo, por supuesto, si no se configura, entonces también se debe evitar la introducción del paquete de componentes de carga en el archivo de configuración --> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <!-- Codificación predeterminada --> <property name="defaultEncoding" value="utf-8" /> <!-- Tamaño máximo del archivo --> <property name="maxUploadSize" value="10485760000" /> <!-- Valor máximo en la memoria --> <property name="maxInMemorySize" value="}}40960" /> </bean> </beans>
Octavo paso:el archivo web.xml
Aquí se configura-la inclusión de mybatis.xml y la configuración de spring-El Servlet de MVC se utiliza para completar la integración SSM, antes de2La integración del framework no requiere configuración aquí.
<?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/web-app_3_0.xsd" version="3.0"> <display-name>Archetype Created Web Application</display-name> <!-- Spring和mybatis的配置文件 --> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring-mybatis.xml</param-value> </context-param> <!-- 编码过滤器 --> <filter> <filter-name>encodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <async-supported>true</async-supported> <init>-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <!-- Spring监听器 --> <listener <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <!-- 防止Spring内存溢出监听器 --> <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> <init>-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:springmvc.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> <async-supported>true</async-supported> </servlet> <servlet-mapping> <servlet-name>SpringMVC</servlet-name> <!-- Aquí se puede configurar como*.do, que sigue la costumbre de los sufijos de struts --> <url-pattern>/</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>/index.jsp</welcome-file> </welcome-file-list> </web-app>
Undécimo pasoÚltimo test:
(1) Primero escribe login.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <html> <head> <title>Inicio de sesión de usuario:</title> </head> <body> <form action="login"> <label>Nombre de usuario:</label> <input type="text" id="username" name="username"></input><br><br> <label>Contraseña:</label> <input type="text" id="password" name="password"></input><br><br> <input type="submit" value="Iniciar sesión"/> </form> </body> </html>
Interfaz:
(2) en la escritura de UserController
import javax.servlet.http.HttpServletRequest; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import com.ssm.dao.UserDao; import com.ssm.model.User; @Controller public class UserController { @Resource private UserDao userDao; @RequestMapping("/jsp/login") public String login(HttpServletRequest request){ String username=request.getParameter("username"); String password=request.getParameter("password"); User user=new User(); //Consultar la base de datos según el nombre de usuario y el estudiante user.setName(username); user.setPassword(password); User users=userDao.findUserById(user); //Si hay estudiantes, significa que se ha logrado el inicio de sesión if(users!=null){ return "susscss"; } //Este jsp no lo escribí, simplemente saben que lo hacen, pueden escribirlo ustedes mismos return "err"; } }
(3)último susscss.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <html> <body> <P>Las contraseñas de la cuenta de usuario y la contraseña son correctas, se ha logrado el inicio de sesión</P> </body> </html>
¡Perfecto!
Esto es todo el contenido del artículo, espero que ayude a su aprendizaje y que todos apoyen el tutorial de alarido.
Declaración: el contenido de este artículo se obtiene de la red, es propiedad del autor original, el contenido se contribuye y sube por los usuarios de Internet, este sitio no posee los derechos de propiedad, no se ha editado artificialmente y no asume ninguna responsabilidad legal relacionada. Si encuentra contenido sospechoso de infracción de derechos de autor, por favor envíe un correo electrónico a: notice#oldtoolbag.com (al enviar un correo electrónico, por favor reemplace # con @) para denunciar y proporcionar evidencia relevante. Una vez confirmado, este sitio eliminará inmediatamente el contenido sospechoso de infracción.