English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Основные концепции
1.1, Spring
Spring — это开源 фреймворк, который появился в 2003 году как легковесная Java-фреймворк для разработки, предложенная Rod Johnson в своей книге Expert One-On-One J2EE Development and Design. Она возникла для решения сложностей, связанных с разработкой корпоративных приложений. Spring использует базовые JavaBean для выполнения задач, которые раньше могли выполняться только с помощью EJB. Однако, использование Spring не ограничивается только серверной разработкой. С точки зрения простоты, тестирования и松耦合, любая Java-приложение может извлечь выгоду из использования Spring. Кратко говоря, Spring — это легковесный контейнер для инверсии управления (IoC) и аспектного программирования (AOP).
1.2, SpringMVC
Spring MVC является последним продуктом SpringFrameWork и интегрирован в Spring Web Flow. Spring MVC разделен на роли контроллера, модели, распределителя и обработчика объектов, что упрощает их настройку.
1.3, MyBatis
MyBatis изначально был开源-проектом Apache iBatis, в 2010 году этот проект был перемещен в Google Code fondation Apache Software и переименован в MyBatis. MyBatis - это фреймворк для persistence на Java. Фреймворк persistence iBATIS включает SQL Maps и Data Access Objects (DAO). MyBatis удаляет几乎 все код JDBC и ручную настройку параметров, а также получение результатов. MyBatis использует простые XML или аннотации для конфигурации и оригинального маппинга, позволяя интерфейсам и Java POJOs (Plain Old Java Objects, обычные Java объекты) быть маппингом в записи базы данных.
Шаг 1:Создание web-проекта через Maven.
Шаг 2:Импорт jar-пакета в файл pom
(1) pom.xml
Я скопировал весь мой файл pom, некоторые элементы инициализации нужно удалить, чтобы сохранить那份, которое было сгенерировано вашим own 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> <!-- лог结束 --> <!-- Вставка 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>
Шаг 3:Обратимся к общей структуре проекта, сначала отмечу, что здесь пока нет ничего связанного с springMVC, потому что я сначала интегрирую spring-mybatis, чтобы проверить его успешность, а затем интегрирую springMVC
Шаг 4:Создание класса модели
public class User { private int id; private String name; private String password; private String password2; /*Предоставляет методы set и get, метод toString*/ }
Пятый шаг:Создание базы данных, интерфейса 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: уникальный идентификатор statement, совпадает с именем метода в UserDao #{}: обозначает маркер замены, если в #{}传入 простого типа параметра, имя в #{} может быть любым parameterType: тип входных параметров, совпадает с типом параметров в UserDao() resultType: тип возвращаемых данных, совпадает с типом return в 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>
Пятый шаг:Создание UserService и 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); } }
Шестой шаг:Создать файлы jdbc и log日志
(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 # Определить цель вывода логов как консоль log4j.appender.Console=org.apache.log4j.ConsoleAppender log4j.appender.Console.Target=System.out # Можете гибко определить формат вывода логов,下一行指定具体的格式 log4j.appender.Console.layout = org.apache.log4j.PatternLayout log4j.appender.Console.layout.ConversionPattern=[%c] - %m%n # Создается новый файл, когда размер файла достигает указанного размера log4j.appender.File = org.apache.log4j.RollingFileAppender # Указать каталог вывода log4j.appender.File.File = logs/ssm.log # Определить максимальный размер файла log4j.appender.File.MaxFileSize = 10MB # Выводить все日志, если заменить на DEBUG, то выводить логи DEBUG и выше 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
Шаг 7:Интеграция 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, управление SqlSessionFactory сессией MyBatis через spring --> <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> <!-- Пакет интерфейсов DAO, Spring автоматически ищет классы в этом пакете --> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="com.ssm.dao" /> <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property> </bean> <!-- (Управление транзакциями) менеджер транзакций, используйте JtaTransactionManager для глобальных транзакций --> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource" /> </bean> </beans>
Восьмой шаг:Создание тестового класса
После выполнения以上步骤 (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; /*Позволяет запускать тесты в среде Spring тестирования*/ @RunWith(SpringJUnit4ClassRunner.class) /*Для указания места загрузки файла конфигурации Spring, будет загружен базовый файл конфигурации*/ @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()); } }
В конце! Важно посмотреть на вывод на заднем плане, это также момент见证奇迹,если выводится объект, это означает, что интеграция настроена успешно!
Теперь начнем интеграцию springMVC
Шаг 9:Конфигурация 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"> <!-- Автоматическое сканирование этой папки, чтобы SpringMVC считал, что классы с аннотацией @controller в этой папке являются контроллерами --> <context:component-scan base-package="com.ssm.controller" /> <!-- Избегание выполнения IE AJAX, когда возвращается JSON, как загрузка файла --> <bean id="mappingJacksonHttpMessageConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"> <property name="supportedMediaTypes"> <list> <value>text/html;charset=UTF-8</value> </list> </property> </bean> <!-- Запуск аннотационных функций SpringMVC, завершение mappings запросов и аннотированных POJO --> <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"> <property name="messageConverters"> <list> <ref bean="mappingJacksonHttpMessageConverter" /> <!-- Конвертер JSON --> </list> </property> </bean> <!-- Определение префикса и суффикса перед файлом для перехода, конфигурация режима просмотра --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <!-- Это конфигурация, которую я понимаю, автоматически добавляет префикс и суффикс к возвращаемому строке метода action, чтобы стать доступным URL-адресом --> <property name="prefix" value="/WEB-INF/jsp/" /> <property name="suffix" value=".jsp" /> </bean> <!-- Конфигурация загрузки файлов, если не используется загрузка файлов, настройка не требуется, конечно, если не настроено, то в конфигурационном файле также не нужно включать пакет компонент для загрузки --> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <!-- DEFAULT ENCODING --> <property name="defaultEncoding" value="utf-8" /> <!-- Максимальный размер файла --> <property name="maxUploadSize" value="10485760000" /> <!-- Максимальное значение в памяти --> <property name="maxInMemorySize" value="40960" /> </bean> </beans>
Десятый шаг:Конфигурация файла web.xml
Здесь описывается включение файла spring-mybatis.xml и конфигурация Servlet для spring-mvc, чтобы завершить интеграцию SSM, для интеграции двух фреймворков не требуется производить никакие конфигурации здесь.
<?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 Создано веб-приложение</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> <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, соответствуя习惯 стратса --> <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(); //По имени пользователя и студенту ищем в базе данных user.setName(username); user.setPassword(password); User users=userDao.findUserById(user); //Если есть студенты, это означает, что вход успешен if(users!=null){ return "susscss"; } //Этот jsp я не писал, вы знаете, вы можете написать сами return "err"; } }
(3) в конце susscss.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <html> <body> <P>Пользовательский аккаунт и пароль верны, вход успешен</P> </body> </html>
Идеально!
Вот весь контент этой статьи, надеюсь, он поможет вам в изучении, также希望大家多多支持呐喊教程。
Заявление: содержимое этой статьи взято из Интернета, авторские права принадлежат соответствующему автору, содержимое предоставлено пользователями Интернета, веб-сайт не имеет права собственности, не было обработано вручную, не несет ответственности за соответствующие юридические последствия. Если вы обнаружите подозрительное содержание, пожалуйста, отправьте письмо по адресу: notice#oldtoolbag.com (во время отправки письма замените # на @) для сообщения о нарушении авторских прав,并提供 соответствующие доказательства. Если после проверки подтвердится нарушение авторских прав, сайт немедленно удалил подозрительное содержимое.