基于IDEA很详细的SSM整合全过程

在网上看到一些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;

第一步:搭建环境

  1. 编译工具: Intellij IDEA 2017.3.7
  2. Maven: apache-maven-3.3.9
  3. Tomcat:apache-tomcat-8.5.11
  4. MySql:5.6
  5. Navicat:一种数据库可视化工具
  6. Spring :5.0.4
  7. 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项目,它的思路也是这样,先怎么样,后怎么样,对我的帮助很大,明天再接着搞这个 第二步,它是如何运行的,搞清楚它的一个工作流程,不断锤炼,反思,达到事半功倍的效果,加油!这个项目只是一个项目。

  • 6
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

烟花易冷,夜未凉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值