在网上看到一些SSM整合的框架,在跟着做的过程中,也磕磕绊绊了好久。碰到一片飘红的地方让人很是心态爆炸。很容易无从下手,就很容易没有信心做下去,因此就跟着教材做了一个用IDEA做的项目,也是跟着磨了好久,总算是做了出来,整理了一下就发了出来,希望可以帮到各位小伙伴。
接下来说每部分要做的事情
这是一个搭建基本表,用来测试是否配置SSM成功。
DROP TABLE IF EXISTS `ay_user`;
CREATE TABLE `ay_user` (
`id` bigint(32) NOT NULL AUTO_INCREMENT,
`name` varchar(10) DEFAULT NULL,
`password` varchar(64) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;
第一步:搭建环境
- 编译工具: Intellij IDEA 2017.3.7
- Maven: apache-maven-3.3.9
- Tomcat:apache-tomcat-8.5.11
- MySql:5.6
- Navicat:一种数据库可视化工具
- Spring :5.0.4
- Mybatis; 3.4.6
Tips:有时候报错看看是不是依赖导入的不正确。
第二步 先把spring整合完成
我们先整合spring ,先在pom文件中引入坐标依赖,pom.xml文件如下:
<!--spring start-->
<!-- https://mvnrepository.com/artifact/org.springframework/spring-core -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>5.0.4.RELEASE</version>
</dependency>
<!--https://mvnrepository.com/artifact/org.springframework/spring-beans -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>5.0.4.RELEASE</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-context -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.3.14.RELEASE</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-context-support -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>5.0.4.RELEASE</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-aop -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>5.0.4.RELEASE</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-aspects -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
<version>5.0.4.RELEASE</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-expression -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-expression</artifactId>
<version>5.0.4.RELEASE</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-tx -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>5.0.4.RELEASE</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-test -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>5.0.4.RELEASE</version>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-web -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>5.0.4.RELEASE</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>4.3.14.RELEASE</version>
</dependency>
<!--spring end!-->
然后在/src/main 下创建resources目录并标记为resources,在resources 目录下面创建
applicationContext.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:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd">
<context:component-scan base-package="com.ay"/>
</beans>
接着在 web.xml文件中配置文件添加如下代码:
<?xml version="1.0"?>
<web-app>
<display-name>Archetype Created Web Application</display-name>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
</web-app>
最后在src/main/test/com.ay.test目录下创建SpringTest测试类,具体的代码如下:
package com.ay.test;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.stereotype.Service;
/**
* @author lbh
* @date 2019/1/13
*/
@Service
public class SpringTest {
@Test
public void testSpring(){
ApplicationContext applicationContext =
new ClassPathXmlApplicationContext("applicationContext.xml");
SpringTest springTest = (SpringTest) applicationContext.getBean("springTest");
springTest.sayHello();
}
public void sayHello(){
System.out.println("hello lbh");
}
}
然后运行 testSpring(),便可以在IDEA的控制台看到下面的结果,表示Web应用成功集成了Spring框架。
小结:一般来说,这个Spring整合出现问题的很少,主要是整合SpringMVC 出现问题的多一些。
第三步 再用spring整合springmvc框架
我们继续把SpringMvc进行整合,先把依赖的包和相关的依赖添加到pom.xml文件,具体代码如下:
<!--springmvc start-->
<!-- https://mvnrepository.com/artifact/javax.servlet/jstl -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.0.4.RELEASE</version>
</dependency>
<!--springmvc end!-->
其次在Web.xml配置文件中添加DispatcherServlet配置,具体代码如下:
<!--配置DispatcherServlet -->
<servlet>
<servlet-name>spring-dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- 配置SpringMVC需要加载的配置文件 spring-mvc.xml -->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring-mvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>spring-dispatcher</servlet-name>
<!--默认匹配所有的请求 -->
<url-pattern>/</url-pattern>
</servlet-mapping>
在接着在/src/main/resources目录下创建配置文件spring-mvc.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:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd">
<!-- 扫描controller(后端控制器),并且扫描其中的注解-->
<context:component-scan base-package="com.ay.controller"/>
<!--设置配置方案 -->
<mvc:annotation-driven/>
<!--配置JSP 显示ViewResolver(视图解析器)-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
<property name="prefix" value="/WEB-INF/views/"/>
<property name="suffix" value=".jsp"/>
</bean>
</beans>
最后在src/main/java目录下创建包com.ay.controller,并且创建控制层类AyTestController,具体代码如下:
package com.ay.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
/**
*@author Ay
* @date 2018/04/02
*/
@Controller
@RequestMapping("/test")
public class AyTestController {
@GetMapping("/sayHello")
public String sayHello(){
return "hello";
}
}
在/src/main/webapp/WEB-INF目录下创建views 文件夹,在views 文件夹下 创建hello.jsp文件夹,具体代码如下:
<%@page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8" %>
<!DOCTYPE HTML>
<html>
<head>
<title>Getting Started: Serving Web Content</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
<h3>hello, lbh</h3>
</body>
<script>
</script>
</html>
至此,Web项目集成Spring Mvc 大功告成,我们把Web项目部署到Tomcat 服务器上,成功启动Tomcat服务器后,在浏览器输入访问路径:http://localhost:8080/test/sayHello.
当出现 如下图的结果时,就代表Web项目集成了Spring MVC
小结:这里出问题的话,就在检查检查配置文件是否出错,还有就是多查百度,多交流
第四步 之后再使用springmvc整合MyBatis
然后再集成MyBatis框架,把集成Mybatis框架所需要的依赖包添加到pom.xml文件中,具体代码如下:
<!--mybatis start!-->
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.6</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.9</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.4.6</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.3.2</version>
</dependency>
<!--mybatis end -->
<!--junit-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>5.0.4.RELEASE</version>
</dependency>
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts-tiles</artifactId>
<version>1.3.8</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.0.4.RELEASE</version>
</dependency>
其次,在/src/main/resources目录下创建jdbc.properties配置文件,具体代码如下:
最后在 applicationContext.xml配置文件中添加如下的配置,具体的代码如下:
<!--1、配置数据库相关参数-->
<context:property-placeholder location="classpath:jdbc.properties" ignore-unresolvable="true"/>
<!--2.数据源 druid -->
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"
init-method="init" destroy-method="close">
<property name="driverClassName" value="${jdbc.driverClassName}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
</bean>
<!--3、配置SqlSessionFactory对象-->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<!--注入数据库连接池-->
<property name="dataSource" ref="dataSource"/>
<!--扫描sql配置文件:mapper需要的xml文件-->
<property name="mapperLocations" value="classpath:mapper/*.xml"/></bean>
<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
<constructor-arg index="0" ref="sqlSessionFactory" />
</bean>
<!-- 扫描basePackage下所有以@MyBatisDao注解的接口 -->
<bean id="mapperScannerConfigurer" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
<property name="basePackage" value="com.ay.dao"/>
</bean>
**
**
小结: 这个地方容易出现错误的 有 配置文件,配置数据库报错,主要原因有 以下几点: 1 你使用的是 阿里云的 镜像文件,但是你的maven仓库里面 并没有添加 那一段代码,这个自己去网上找,这里我就不说了 。2 你下载的jar包并没有把它放到你的项目中去,你只是下载,并没有加载进来, 3 和数据库连接不上,最有可能的就是 你创建的数据库名字 和你 在 项目中 jdbc文件中的 数据库名 不匹配,这个好好检查,还有就是版本问题。
**
接下来 就是比较重要的一步:配置数据库相关的代码:
**
1.打开 数据库, 先进行测试3直接使用localHost_3306这个数据库,然后右键,重新建一个数据库
然后在 /src/main/java/com.ay.model 目录下创建数据库的表的对应的
实体类对象AyUser,具体代码如下:
package com.ay.model;
import java.io.Serializable;
public class AyUser implements Serializable {
private Integer id;
private String name;
private String password;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
实体类对象创建完成以后,在 /src/main/java/com.ay.dao目录下创建对应的DAO对象
AyUserDao, AyUserDao是一个接口,提供findAll方法用来查询所有的用户。AyUserfDao ,具体代码如下:
package com.ay.dao;
import com.ay.model.AyUser;
import org.springframework.stereotype.Repository;
import java.util.List;
@Repository
public interface AyUserDao {
List<AyUser> findAll();
}
接口类AyUserDao编写方法之后,在/src/main/java/com.ay.service目录下创建对应的服务层接口AyUserService,提供了一个查询所有用户的方法findAll(),具体代码如下:
package com.ay.service;
import com.ay.model.AyUser;
import java.util.List;
public interface AyUserService {
List<AyUser> findAll();
}
服务层接口AyUserService开发完成以后,在/src/main/java/com.ay.service.impl开发对应的服务层实现类AyUserServiceImpl,实现类的主要是注入AyUserDao接口,并实现findAll()方法,在findAll()方法中调用AyUserDao的findAll()方法,具体的代码如下所示:
package com.ay.service.impl;
import com.ay.dao.AyUserDao;
import com.ay.model.AyUser;
import com.ay.service.AyUserService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
@Service
public class AyUserServiceImpl implements AyUserService{
@Resource
private AyUserDao ayUserDao;
public List<AyUser> findAll(){
return ayUserDao.findAll();
}
}
服务层实现类AyUserServiceImpl开发完成以后,在/src/main/java/com.ay.controller目录下创建控制层类AyUserController,并注入服务层接口。AyUserController类只有一个 findAll()方法.在AyUserController类上添加映射路径/user,在findAll()方法上添加映射路径/fingAll.
package com.ay.controller;
import com.ay.model.AyUser;
import com.ay.service.AyUserService;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import javax.annotation.Resource;
import java.util.List;
@Controller
@RequestMapping(value = "/user")
public class AyUserController {
@Resource
private AyUserService ayUserService;
@GetMapping("/findAll")
public String findAll (Model model){
List<AyUser> ayUserList= ayUserService.findAll();
for (AyUser ayUser : ayUserList){
System.out.println("id: " + ayUser.getId());
System.out.println("name: " + ayUser.getName());
}
return "hello";
}
}
最后在/src/main/resources/mapper目录下创建AyUserMapper.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">
<mapper namespace="com.ay.dao.AyUserDao">
<sql id="userField">
a.id as "id",
a.name as "name",
a.password as "password"
</sql>
<!--获取所用用户-->
<select id="findAll" resultType="com.ay.model.AyUser">
select
<include refid="userField"/>
from ay_user a
</select>
</mapper>
到这里,Web应用集成Spring , Spring MVC , MyBatis 已经全部完成,现在重新启动 Tomcat服务器,在浏览器中输入访问地址: http://localhost:8080/user/findAll. 如果能看到 下面的结果,说明已经整合完成。
看到这两个图,就表示已经完成了,这就是一个 有关 spring , springmvc mybatis 三个框架的整合,也是我第一个真正意义上的SSM项目,突破了从0到1 的那个极限,让这些看似没有关联却又相息的代码输出我所期待的结果,让我值得铭记,也有过放弃,也有过挣扎,还好看到了结果,还好,就在坚持一下,就在坚持一下,就在坚持一下下慢慢的磨出来的一个项目,还好不负所望! 项目跑起来,这是第一步,下一步要做的就是搞清楚,它是怎么运行的。然后在总结反思一下,这个项目就算是 大功告成了,有这一个成功的项目,通过举一反三,就能够知道,要是做别的SSM项目,它的思路也是这样,先怎么样,后怎么样,对我的帮助很大,明天再接着搞这个 第二步,它是如何运行的,搞清楚它的一个工作流程,不断锤炼,反思,达到事半功倍的效果,加油!这个项目只是一个项目。