简单记录搭建SSM(Spring+Spring MVC+Mybatis)整合

业务层

View: 数据显示

Controller: 业务控制(执行成功怎么处理,执行失败怎么处理)

Service: 业务处理

Model: 数据库相关实体类(增删改查)

工程搭建

第一步 创建Maven web工程

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

点击finish创建完毕工程

第二步 导入SSM整合所需包

这边我们使用maven导入

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
        <junit.version>4.9</junit.version>
        <spring.version>4.3.10.RELEASE</spring.version>
        <mybatis.version>3.1.0</mybatis.version>
        <mybatis.spring.version>1.3.1</mybatis.spring.version>
        <druid.version>1.1.0</druid.version>
        <mysql.version>8.0.15</mysql.version>
        <jstl.version>1.2</jstl.version>
        <log4j.version>1.2.17</log4j.version>
        <fastjson.version>1.2.35</fastjson.version>
        <slf4j.version>1.7.25</slf4j.version>
        <jackson.version>1.9.13</jackson.version>
        <commons-fileupload.version>1.3.3</commons-fileupload.version>
        <commons-io.version>2.5</commons-io.version>
        <commons-codec.version>1.10</commons-codec.version>
        <aspectjweaver.version>1.8.10</aspectjweaver.version>
    </properties>

    <dependencies>
        <!-- Junit测试 -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>${junit.version}</version>
            <scope>test</scope>
        </dependency>

        <!-- spring包 core、web、oxm、tx、jdbc、webmvc、aop、context、test -->
        <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>
            <scope>test</scope>
        </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>${mybatis.spring.version}</version>
        </dependency>

        <!-- 导入Mysql数据库链接jar包 -->
        <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>${mysql.version}</version>
        </dependency>

        <!-- druid数据源 -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>${druid.version}</version>
        </dependency>

        <!-- JSTL标签类 -->
        <dependency>
            <groupId>jstl</groupId>
            <artifactId>jstl</artifactId>
            <version>${jstl.version}</version>
        </dependency>
        <!-- 日志文件管理包 -->
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>${log4j.version}</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>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>${fastjson.version}</version>
        </dependency>



        <!-- json和bean之间相互转换 -->
        <dependency>
            <groupId>org.codehaus.jackson</groupId>
            <artifactId>jackson-core-asl</artifactId>
            <version>${jackson.version}</version>
        </dependency>
        <dependency>
            <groupId>org.codehaus.jackson</groupId>
            <artifactId>jackson-mapper-asl</artifactId>
            <version>${jackson.version}</version>
        </dependency>
        <!-- 上传组件包 -->
        <dependency>
            <groupId>commons-fileupload</groupId>
            <artifactId>commons-fileupload</artifactId>
            <version>${commons-fileupload.version}</version>
        </dependency>
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>${commons-io.version}</version>
        </dependency>
        <dependency>
            <groupId>commons-codec</groupId>
            <artifactId>commons-codec</artifactId>
            <version>${commons-codec.version}</version>
        </dependency>


        <dependency>
            <groupId>org.aspectj</groupId>
            <artifactId>aspectjweaver</artifactId>
            <version>${aspectjweaver.version}</version>
        </dependency>

        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>4.0.0-b07</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>com.github.pagehelper</groupId>
            <artifactId>pagehelper</artifactId>
            <version>4.1.6</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/javax.mail/javax.mail-api -->
        <dependency>
            <groupId>javax.mail</groupId>
            <artifactId>javax.mail-api</artifactId>
            <version>1.5.6</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/com.sun.mail/javax.mail -->
        <dependency>
            <groupId>com.sun.mail</groupId>
            <artifactId>javax.mail</artifactId>
            <version>1.5.6</version>
        </dependency>

        <dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
            <version>3.0.0</version>
            <type>jar</type>
        </dependency>
    </dependencies>

依次创建maven规则文件夹,基本项目结构:

在这里插入图片描述

第三步 配置Spring MVC

3.1 在resources文件夹底下创建conf文件夹,在里面添加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"
       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-4.0.xsd
                            http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd">
</beans>

在这里插入图片描述

在这里插入图片描述

3.2 根据工程结构创建java文件夹中的包,如下图所示

在这里插入图片描述

3.3 在controller文件夹中添加一个简易的controller类,HelloController
package com.ljn.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

@Controller
@RequestMapping("hello")
public class HelloController {
    @RequestMapping("/hello.html")
    public ModelAndView hello(String name,Integer age) {
        return new ModelAndView("/main.jsp");
    }
}
3.4 修改配置文件
在web.xml中配置mvc
<servlet>
  <servlet-name>mvc</servlet-name>
  <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  <init-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:conf/mvc.xml</param-value>
  </init-param>
  <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
  <servlet-name>mvc</servlet-name>
  <url-pattern>/</url-pattern>
</servlet-mapping>
3.5 简单测试

在web下写一个main.jsp

<%--
  Created by IntelliJ IDEA.
  User: alisa
  Date: 2019/4/7
  Time: 21:29
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>

<h1>Hello main</h1>

</body>
</html>

修改index.jsp

<%--
  Created by IntelliJ IDEA.
  User: alisa
  Date: 2019/4/7
  Time: 21:02
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<h1>hello index</h1>
<a href="/hello/hello.html?name=hhh&age=30">hello.html</a>
</body>
</html>

修改HelloController

package com.ljn.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

@Controller
@RequestMapping("hello")
public class HelloController {
    @RequestMapping("/hello.html")
    public ModelAndView hello(String name,Integer age) {
        System.out.println(name);
        System.out.println(age);
        return new ModelAndView("/main.jsp");
    }
}

启动服务

访问站点

在这里插入图片描述

在这里插入图片描述

查看控制台

在这里插入图片描述

至此,Spring MVC配置完毕

第四步 配置Spring

4.1添加Service

在service文件夹中创建下面两个类

在这里插入图片描述

//HelloService
package com.ljn.service;

public interface HelloService {
    void hello();
}

//HelloServiceImp
public class HelloServiceImp implements HelloService {
    
    @Override
    public void hello() {
        
    }
}
4.2 建立mvc与service的关系

在mvc.xml中配置

<!--相当于new HelloController()-->
<bean class="com.ljn.controller.HelloController">
     <!--相当于调用了setHelloService()-->
     <property name="helloService" ref="helloService"/>
</bean>

添加spring.xml文件用来设定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: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.xsd
                            http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
                            http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd">
   
    <bean id="helloService" class="com.ljn.service.HelloServiceImp">
        
    </bean>
</beans>

在web.xml中配置spring

<!--配置Spring-->
  <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:conf/spring.xml</param-value>
  </context-param>

这边使用监听器,使得spring在最开始的时候创建对象

第五步 整合Spring和Mybatis

5.1 准备工作

添加这些文件

在这里插入图片描述

User是数据库中User表对应的实体类

User表结构

在这里插入图片描述

//User.java
package com.ljn.bean;

import java.io.Serializable;

public class User implements Serializable {
    private Integer user_id;
    private String user_name;
    private String user_pwd;

    public User() {
    }

    public Integer getUser_id() {
        return user_id;
    }

    public void setUser_id(Integer user_id) {
        this.user_id = user_id;
    }

    public String getUser_name() {
        return user_name;
    }

    public void setUser_name(String user_name) {
        this.user_name = user_name;
    }

    public String getUser_pwd() {
        return user_pwd;
    }

    public void setUser_pwd(String user_pwd) {
        this.user_pwd = user_pwd;
    }

    @Override
    public String toString() {
        return "User{" +
                "user_id=" + user_id +
                ", user_name='" + user_name + '\'' +
                ", user_pwd='" + user_pwd + '\'' +
                '}';
    }
}
//UserMapper
package com.ljn.mapper;

import com.ljn.bean.User;

import java.util.List;

public interface UserMapper {
    List<User> select_all();

    List<User> select_map();
}

5.2 配置数据源

在spring.xml中配置

<!--配置数据源-->
    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
        <property name="driverClassName" value="com.mysql.cj.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://localhost:3306/servletdemo"/>
        <property name="username" value="root"/>
        <property name="password" value="12211091"/>
    </bean>

还是在spring.xml中修改如下配置

<bean id="helloService" class="com.ljn.service.HelloServiceImp">
   <property name="dataSource" ref="dataSource"/>
</bean>

添加UserMap.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.ljn.mapper.UserMapper">
    <select id="select_all" resultType="com.ljn.bean.User">
      select * from user
    </select>
    <!--映射对象和数据库的关系-->
    <resultMap id="remap" type="hashmap">
        <id property="user_id" column="user_id"/>
        <result property="user_name" column="user_name"/>
    </resultMap>
    <select id="select_map" resultMap="remap">
        select * from user
    </select>
</mapper>

在HelloServiceImp中修改

public class HelloServiceImp implements HelloService {
    
    private UserMapper userMapper;
    private DataSource dataSource;


    public void setDataSource(DataSource dataSource) {
        this.dataSource = dataSource;
    }

    public void setUserMapper(UserMapper userMapper) {
        this.userMapper = userMapper;
    }

    @Override
    public void hello() {
        System.out.println("HelloServiceImp is hello");
        try {
            System.out.println(dataSource.getConnection());
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}
5.3这样我们就完成了数据库的连接和数据源的配置,下面我们需要构建session工厂

在HelloServiceImp中进行如下修改

public class HelloServiceImp implements HelloService {
    private SqlSessionFactory sessionFactory;
    private UserMapper userMapper;
    private DataSource dataSource;

    public void setDataSource(DataSource dataSource) {
        this.dataSource = dataSource;
    }

    public void setSessionFactory(SqlSessionFactory sessionFactory) {
        this.sessionFactory = sessionFactory;
    }

    public void setUserMapper(UserMapper userMapper) {
        this.userMapper = userMapper;
    }

    @Override
    public void hello() {
        System.out.println("HelloServiceImp is hello");
        try {
            System.out.println(dataSource.getConnection());
        } catch (SQLException e) {
            e.printStackTrace();
        }
        try {
            System.out.println(sessionFactory.openSession());
        } catch (Exception e) {
            e.printStackTrace();
        }
        List<User> users = userMapper.select_all();
        for (int i = 0; i < users.size(); i++) {
            System.out.println(users.get(i).toString());
        }
    }
}

在spring.xml中配置

<!--构建session工厂-->
<bean id="sessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    <property name="dataSource" ref="dataSource"/>
</bean>
    <bean id="helloService" class="com.ljn.service.HelloServiceImp">
    <property name="dataSource" ref="dataSource"/>
    <property name="sessionFactory" ref="sessionFactory"></property>
    <property name="userMapper" ref="UserMapper"/>
</bean>
<!--EmpMapper empMapper = session.getMapper(EmpMapper.class);-->
<bean id="UserMapper" class="org.mybatis.spring.mapper.MapperFactoryBean">
    <property name="mapperInterface" value="com.ljn.mapper.UserMapper"/>
    <property name="sqlSessionFactory" ref="sessionFactory"/>
</bean>

第六步 搭建完成,运行一下吧

在这里插入图片描述

总结

这样,一个简单的SSM开发环境就搭建完毕了,总得来说还是需要去理解各个框架之间如何建立联系,巧妙地利用好生命周期去完成开发,框架在实现地过程中大量使用了反射的思想,因此告诉我们基础知识的重要性。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值