“一个人最好的状态:梦想藏在心里,行动落于腿脚。”
目录
1、前言
2、基本概念
2.1 MyBatis
2.2 Spring
2.3 SpringMVC
3、开发环境搭建
?3.1?整合Spring框架
3.2 整合SpringMVC框
3.3 添加SpringMVC框架支持
3.4?配置SpringMVC核心控制器
3.5 测试SpringMVC框架
4、部署Tomcat和相关环境
5、整合MyBtis框架
5.1 测试MyBatis框架
1、前言
前几篇我的几个系列文章分别介绍了MyBatis、Spring、SpringMVC框架的基本入门以及一些常用知识点,既然框架各有优点,那么我们是否可以将这几个框架进行整合?
下面就开始手把手教你搭建SSM框架,在这之前我们先总结一下这三个框架。
2、基本概念
2.1 MyBatis
MyBatis是一个优秀的基于java的持久层框架,它内部封装了jdbc,使开发者只需要关注sql语句本身,而不需要花费精力去处理加载驱动、创建连接、创建statement等繁杂的过程。
2.2 Spring
Spring是一个开源的重量级的应用开发框架,其目的是用于简化企业级应用程序开发,降低开发者的开发难度
Spring提供的IOC和AOP应用,可以将组建的耦合度降到最低(即解耦),便于系统日后的维护和升级
Spring为系统提供了一个整体的解决方案,开发者可以利用它自身提供的功能外,也可以与第三方框架和技术整合应用,可以自由选择利用哪种技术进行开发
2.3 SpringMVC
SpringMVC是Spring框架的一个模块,Spring和SpringMVC无需中间层整合
SpringMVC提供了基于MVC(模型—视图—控制器)架构和用于开发灵活和松耦合的web应用程序的组件
3、开发环境搭建
创建一个基于maven的web工程
?
?
?
?
?
?3.1?整合Spring框架
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<!--Spring 框架基本的核心工具类-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>5.1.5.RELEASE</version>
????????</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.1.5.RELEASE</version>
</dependency>
<!--Junit等测试框架的简单封装-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>5.1.5.RELEASE</version>
<scope>test</scope>
</dependency>
<!--Aop切面-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>5.1.5.RELEASE</version>
</dependency>
<dependency>
<groupId>aopalliance</groupId>
<artifactId>aopalliance</artifactId>
<version>1.0</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>1.9.2</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.9.2</version>
<scope>runtime</scope>
</dependency>
<!--Spriing jdbc-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.1.5.RELEASE</version>
</dependency>
<!--事务-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>5.1.5.RELEASE</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.8</version>
</dependency>
3.2 整合SpringMVC框
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>5.1.5.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.1.5.RELEASE</version>
</dependency>
3.3 添加SpringMVC框架支持
?
?注意:如果我们在点击Add framework support中找不到Spring,那么有可能项目中已经存在了Spring文件,但不一定是完善的,我们只需要把它删除然后重新添加即可
方法:点击File,选择Project Structure,选择Facets,就会看到有一个Spring,右击它,点删除就行啦,然后再回到上一个步骤重新Add framework support,Spring就会出现啦。
?添加SpringMVC支持后,我们会发现项目目录中多了两个文件,我又单独创建了一个views用来存放映射文件JSP等
3.4?配置SpringMVC核心控制器
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
<!-- 注册springmvc框架核心控制器 -->
<servlet>
<servlet-name>springMVC</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<!--配置dispatcher.xml作为mvc的配置文件-->
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/dispatcher-servlet.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>
<url-pattern>/</url-pattern>
</servlet-mapping>
<!--把applicationContext.xml加入到配置文件中-->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
????</listener>
</web-app>
<!--?解决POST提交中文乱码问题?-->
<filter>
<filter-name>CharacterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<!-- 设置编码格式 -->
<param-value>utf-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<?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:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.0.xsd">
<!--此文件负责整个mvc中的配置-->
<!-- 1.配置前端控制器放行静态资源(html/css/js等,否则静态资源将无法访问) -->
<mvc:default-servlet-handler/>
<!-- 2.配置注解驱动,用于识别注解(比如@Controller) -->
<mvc:annotation-driven></mvc:annotation-driven>
<!-- 3.配置需要扫描的包:spring自动去扫描 base-package 下的类,
如果扫描到的类上有 @Controller、@Service、@Component等注解,
将会自动将类注册为bean
-->
<context:component-scan base-package="com.cn.controller"></context:component-scan>
<!-- 4.配置内部资源视图解析器
prefix:配置路径前缀
suffix:配置文件后缀
-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/"/>
<property name="suffix" value=".jsp"/>
</bean>
</beans>
3.5 测试SpringMVC框架
@Controller
public?class?HelloController?{
/**
* 这个注解用于:映射请求的资源路径(/hello)和当前方法(hello)的对应关系
?????*?当浏览器请求?/hello?路径时,?将会访问(执行)当前这个方法?
*/
????@RequestMapping("/hello")
public String hello() {
System.out.println("hello springmvc...");
return "home";
}
}
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<h1>hello springmvc~~~</h1>
</body>
</html>
4、部署Tomcat和相关环境
?
?
?
?
?
?
?成功在浏览器页面上显示出了页面中的数据内容
5、整合MyBtis框架
在之前的文章中我写过一篇关于MyBatis的快速入门教程,可以参考以下链接:
全栈开发实战 | MyBatis框架快速入门第一篇
<!-- 整合MyBatis框架 -->
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.4</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.3.2</version>
</dependency>
<!-- MySql驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.16</version>
????????</dependency>
database.driver=com.mysql.jdbc.Driver
database.url=jdbc:mysql://localhost:3306/db1
database.username=root
database.password=erp1234
之前我们在MyBatis快速入门教程里是在mybatis-config.xml文件中配置MyBatis的核心信息,现在我们要做SSM框架整合,可以将MyBatis的配置交给Spring去处理
<?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:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.0.xsd">
<!-- 1.加载jdbc.properties文件的位置 -->
<context:property-placeholder location="classpath:jdbc.properties"></context:property-placeholder>
<!--2.配置数据库连接 -->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="${db.driverClassName}"/>
<property name="url" value="${db.url}"/>
<property name="username" value="${db.username}"/>
<property name="password" value="${db.password}"/>
</bean>
<!-- 3.整合spring和mybatis框架
将SqlSession等对象的创建交给Spring容器
id值(sqlSessionFactory)是固定值
-->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<!-- 3.2.配置连接池(数据源) ref指向连接池bean对象的id值 -->
<property name="dataSource" ref="dataSource"></property>
</bean>
<!--4.Mapper扫描,自动引入mapper类 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<!-- 扫描所有XxxMapper接口,将接口实例的创建交给spring容器 -->
<property name="basePackage" value="com.cn"/>
????</bean>
</beans>
5.1 测试MyBatis框架
@Data
@AllArgsConstructor
@NoArgsConstructor
public?class?Student??{
private String id;
private String name;
private String birth;
????private?String?sex;
}
package?com.cn.dao;
import com.cn.pojo.Student;
public interface StudentMapper {
Student getStudentById(String id);
}
<?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">
<mapper namespace="com.cn.dao.StudentMapper">
<!--根据id查找学生信息-->
<select id="getStudentById" parameterType="string" resultType="com.cn.pojo.Student">
SELECT * from Student where id= #{id};
</select>
</mapper>
/**
* 测试SSM开发环境
*/
@Controller
public class TestSSM {
@Autowired
StudentMapper studentMapper;
@RequestMapping("/testSSM")
public void testSSM(){
Student student = studentMapper.getStudentById("01");
System.out.println(student);
}
}
?
我们看到报异常了,大概意思就是找不到mapper的映射文件,也就是说JAVA在编译的时候把??mapper.xml? 文件给漏掉了,解决方案就是在pom.xml文件中添加如下代码即可:
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.xml</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
</build>
到这里这个简单的ssm框架就算搭建完成了,看起来过程很长,但实际操作起来应该是没有太大难度,细心一点就可以了
这一篇是在之前文章的基础上做了一个框架之间的整合,方便我们以后开发,大家对之前的文章感兴趣可以点击以下链接:
全栈开发实战 | MyBatis框架快速入门第一篇
全栈开发实战 | MyBatis框架快速入门第二篇
全栈开发实战 | Spring框架快速入门第一篇
全栈开发实战 | Spring框架快速入门第二篇
全栈开发实战 | Spring框架快速入门第三篇
全栈开发实战 | SpringMVC框架快速入门第一篇
全栈开发实战 | SpringMVC框架快速入门第二篇
全栈开发实战 | SpringMVC框架快速入门第三篇
|