English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Concetti di base
1.1, Spring
Spring è un framework open source, nato nel 2003 come una leggera infrastruttura di sviluppo Java, derivato da alcune idee e prototipi presentati da Rod Johnson nel suo libro Expert One-On-One J2EE Development and Design. È stato creato per affrontare la complessità dello sviluppo delle applicazioni aziendali. Spring utilizza i semplici JavaBean per fare ciò che prima era possibile solo con EJB. Tuttavia, l'uso di Spring non si limita al sviluppo server. Dalla semplicità, la testabilità e la decoupling, qualsiasi applicazione Java può beneficiare di Spring. In breve, Spring è un framework leggero per l'inversion of control (IoC) e l'aspects-oriented programming (AOP).
1.2, SpringMVC
Spring MVC è un prodotto successivo di SpringFrameWork e è integrato in Spring Web Flow. Spring MVC separa i ruoli di controller, oggetti modello, dispatcher e oggetti elaboratori, questa separazione li rende più facili da personalizzare.
1.3, MyBatis
MyBatis era originariamente un progetto open source di Apache chiamato iBatis, nel 2010 il progetto è stato spostato su Google Code dalla Apache Software Foundation e rinominato MyBatis. MyBatis è una struttura di livello persistenza basata su Java. La struttura di livello persistenza fornita da iBATIS include SQL Maps e Data Access Objects (DAO). MyBatis elimina quasi tutto il codice JDBC e la configurazione manuale dei parametri e la ricerca dei risultati del set. MyBatis utilizza XML semplice o annotazioni per la configurazione e la mappatura originale, mappando gli oggetti POJO (Plain Old Java Objects, oggetti Java semplici) alle registrazioni del database.
Primo passo:Creare un progetto web utilizzando Maven.
Secondo passo:Importazione pacchetti jar nel file pom
(1) pom.xml
Ho copiato l'intero file pom, alcune inizializzazioni predefinite devono essere eliminate, mantenendo la versione generata dal tuo 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> <!-- 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> <!-- 日志文件管理包 --> <!-- log start --> <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> <!-- fine log --> <!-- Inserimento JSON --> <dependency> <groupId>org.codehaus.jackson</groupId> <artifactId>jackson-mapper-asl</artifactId> <version>1.9.13</version> </dependency> <!-- Pacchetto componenti upload --> <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>
Passo 3:Esaminare l'architettura complessiva del progetto, prima di spiegare che qui non ho ancora nulla riguardante springMVC, perché prima integro spring-mybatis e testo se va bene, solo poi integro springMVC
Passo 4:Creare la classe modello
public class User { private int id; private String name; private String password; private String password2; /*Fornisce metodi set e get, metodo toString*/ }
Passo cinque:Creazione del database, interfaccia UserDao e file di mappatura mapper
(1) Creazione di una tabella molto semplice
(2) Interfaccia 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: spazio di nome, punta al percorso completo di UserDao--> <mapper namespace="com.ssm.dao.UserDao"> <!-- Ricerca delle informazioni utente in base all'id --> <!-- id: identificatore unico di uno statement, coerente con il nome del metodo di UserDao #{}: rappresenta un segnaposto, se il parametro è di tipo semplice, il nome all'interno di #{} può essere casuale parameterType: tipo dei parametri di input, coerente con i parametri di UserDao() resultType: tipo di output del risultato, coerente con il tipo di ritorno di 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>
Passo cinque:Creazione di UserService e UserServiceImpl
(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); } }
Sixth step:Create jdbc file and log log file
(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 the destination of log output as the console log4j.appender.Console=org.apache.log4j.ConsoleAppender log4j.appender.Console.Target=System.out # You can specify the log output format flexibly, the next line specifies the specific format log4j.appender.Console.layout = org.apache.log4j.PatternLayout log4j.appender.Console.layout.ConversionPattern=[%c] - %m%n # A new file is generated when the file size reaches the specified size log4j.appender.File = org.apache.log4j.RollingFileAppender # Specify the output directory log4j.appender.File.File = logs/ssm.log # Define the maximum file size log4j.appender.File.MaxFileSize = 10MB # Output all logs, if changed to DEBUG it means to output logs of DEBUG level and above 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
第七步:整合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"> <!-- 自动扫描 --> <context:component-scan base-package="com.ssm" /> <!-- 引入实现jdbc配置文件 --> <bean id="propertyConfigurer"> class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="location" value="classpath:jdbc.properties" /> </bean> <!-- 2.数据库连接池 --> <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> <!-- spring和MyBatis整合,通过spring来管理MyBatis的SqlSessionFactory会话工厂 --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <!-- 指定数据库连接池引用 --> <property name="dataSource" ref="dataSource" /> <!-- 自动扫描mapping.xml文件 --> <property name="mapperLocations" value="classpath:com/ssm/mapper/*.xml"></property> </bean> <!-- Il nome del pacchetto in cui si trovano gli interfacce DAO, Spring cercherà automaticamente le classi sottostanti --> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="com.ssm.dao" /> <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property> </bean> <!-- (Gestione delle transazioni) gestore delle transazioni, utilizzare JtaTransactionManager per le transazioni globali --> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource" /> </bean> </beans>
O passo otto:建立测试类
经过以上步骤(log4j不配也没影响),我们已经完成了Spring和mybatis的整合,这样我们就可以编写一段测试代码来试试是否成功了。
测试类在src/test/java中建立,如果测试成功,表示Spring和Mybatis已经整合成功了。输出信息使用的是Log4j打印到控制台。
(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; /*Esegui il test nel contesto di test di Spring*/ @RunWith(SpringJUnit4ClassRunner.class) /*Specificare la posizione del file di configurazione di Spring da caricare, caricherà il file di configurazione predefinito*/ @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()); } }
Alla fine! E' fondamentale osservare l'output di back-end, è anche il momento di witnessare la meraviglia, se viene outputto un oggetto, significa che hai avuto successo nella configurazione dell'integrazione!
Quindi, procediamo all'integrazione di springMVC
Passo 9:configurazione di 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"> <!-- Scansione automatica di questo pacchetto, in modo che SpringMVC consideri le classi con l'annotazione @controller come controller --> <context:component-scan base-package="com.ssm.controller" /> <!-- Evitare che IE esegua AJAX e restituisca JSON come file scaricabile --> <bean id="mappingJacksonHttpMessageConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"> <property name="supportedMediaTypes"> <list> <value>text/html;charset=UTF-8</value> </list> </property> </bean> <!-- Attivazione della funzione di annotazione di SpringMVC, completamento della mappatura tra richieste e POJO annotati con annotazioni --> <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"> <property name="messageConverters"> <list> <ref bean="mappingJacksonHttpMessageConverter" /> <!-- Convertitore JSON --> </list> </property> </bean> <!-- Definizione dei prefissi e suffissi dei file di reindirizzamento, configurazione del modello di vista --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <!-- Questa configurazione, secondo la mia comprensione, aggiunge automaticamente prefissi e suffissi alle stringhe restituite dai metodi action, trasformandole in un indirizzo URL utilizzabile --> <property name="prefix" value="/WEB-INF/jsp/" /> <property name="suffix" value=".jsp" /> </bean> <!-- Configure file upload, if file upload is not used, it does not need to be configured, of course, if not configured, then the upload component package does not need to be introduced in the configuration file --> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <!-- Default encoding --> <property name="defaultEncoding" value="utf-8" /> <!-- Maximum file size --> <property name="maxUploadSize" value="10485760000" /> <!-- Maximum value in memory --> <property name="maxInMemorySize" value="40960" /> </bean> </beans>
Tenth step:Configure the web.xml file
This configuration of spring-mybatis.xml and the spring-mvc Servlet is for completing the SSM integration, no configuration is needed here for the integration of the two frameworks before.
<?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 and mybatis configuration file --> <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> <!-- 此处可以配置成*.do,对应struts的后缀习惯 --> <url-pattern>/</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>/index.jsp</welcome-file> </welcome-file-list> </web-app>
第十一步最后测试:
(1) 先写login.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" %> pageEncoding="UTF-8"> <html> <head> <title>用户登录:</title> </head> <body> <form action="login"> <label>用户名:</label> <input type="text" id="username" name="username"></input><br><br> <label>密码:</label> <input type="text" id="password" name="password"></input><br><br> <input type="submit" value="登录"/> </form> </body> </html>
界面:
(2) 在写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(); //Ricerca nel database per nome utente e studente user.setName(username); user.setPassword(password); User users=userDao.findUserById(user); //Se ci sono studenti significa che il login è riuscito if(users!=null){ return "susscss"; } //Questo jsp non ho scritto, sapete bene, potete scriverlo voi stessi return "err"; } }
(3) ultimo susscss.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" %> pageEncoding="UTF-8"> <html> <body> <P>Account utente e password corretti, login riuscito</P> </body> </html>
Perfetto!
Questo è tutto il contenuto dell'articolo, spero che sia utile per la tua apprendimento, e ti prego di supportare e urlare le lezioni.
Dichiarazione: il contenuto di questo articolo è stato raccolto da Internet, di proprietà dei rispettivi autori, il contenuto è stato caricato autonomamente dagli utenti di Internet, il sito web non detiene i diritti di proprietà, non è stato elaborato manualmente e non assume responsabilità legali correlate. Se trovi contenuti sospetti di violazione del copyright, invia un'e-mail a: notice#oldtoolbag.com (al momento dell'invio dell'e-mail, sostituisci # con @) per segnalare, fornendo prove pertinenti. Una volta verificata, il sito web eliminerà immediatamente il contenuto sospetto di violazione del copyright.