SSM(Spring+Spring MVC+MyBatis)框架整合详细步骤(非基于Maven)

时间:2020-02-09 20:47:34 类型:JAVA
字号:    

因为 Spring MVC 是 Spring 框架中的一个子模块,所以 Spring 与 SpringMVC 之间不存在整合的问题。实际上,SSM 框架的整合只涉及 Spring 与 MyBatis 的整合以及 Spring MVC 与 MyBatis 的整合。

详细步骤如下:

  1. 创建应用ssmDemo并导入相关 JAR 包

    1>MyBatis 框架所需的 JAR 包

         MyBatis 框架所需的 JAR 包包括它的核心包和依赖包

    2>Srping框架所需要的JAR包

        Spring 框架所需的 JAR 包包括它的核心模块 JAR、AOP 开发使用的 JAR、JDBC 和事务的 JAR 包

    3> MyBatis 与 Spring 整合的中间 JAR 包  mybatis-spring-2.0.3.jar

    4> 数据库驱动 JAR 包   mysql-connector-java-5.1.39-bin.jar

    5> 数据源所需的 JAR 包

         在整合时使用的是 DBCP 数据源,需要准备 DBCP 和连接池的 JAR 包

        commons-dbcp2-2.7.0.jar

        下载地址: http://mirror.bit.edu.cn/apache//commons/dbcp/binaries/commons-dbcp2-2.7.0-bin.tar.gz

        commons-pool2-2.8.0.jar

         下载地址:http://mirror.bit.edu.cn/apache//commons/pool/binaries/commons-pool2-2.8.0-bin.tar.gz

     

    6> Spring MVC 的相关 JAR 包

    spring-web-5.2.3.RELEASE.jar  和 spring-webmvc-5.2.3.RELEASE.jar

    7.  事务管理相关的JAR包

         aspectjrt-1.8.7.jar,   aspectjweaver.jar

    8> spring mvc返回json格式需要引入的jar

          11.jpg

    最终所有的JAB包如下:

    1.jpg

  2.  创建数据库及表格

       

  3. CREATE DATABASE `ssmone` CHARACTER SET 'utf8' COLLATE 'utf8_general_ci';
      CREATE TABLE `user` (
      `uid` tinyint(2) NOT NULL,
      `uname` varchar(20) DEFAULT NULL,
      `usex` varchar(10) DEFAULT NULL,
      PRIMARY KEY (`uid`)
      ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  4. 创建持久化类

    在 src 目录下创建一个名为 com.po 的包,并在该包中创建一个 PO 类 MyUser。具体代码如下


  5. package com.po;
    
    public class MyUser {
    	    private Integer uid;
    	    private String uname;
    	    private String usex;
    	    public Integer getUid() {
    	        return uid;
    	    }
    	    public void setUid(Integer uid) {
    	        this.uid = uid;
    	    }
    	    public String getUname() {
    	        return uname;
    	    }
    	    public void setUname(String uname) {
    	        this.uname = uname;
    	    }
    	    public String getUsex() {
    	        return usex;
    	    }
    	    public void setUsex(String usex) {
    	        this.usex = usex;
    	    }
    	    @Override
    	    public String toString() { // 为了方便查看结果,重写了toString方法
    	        return "User[uid=" + uid + ",uname=" + uname + ",usex=" + usex + "]";
    	    }
    }

  5. 创建 Dao 层

  在 src 目录下创建一个名为 com.dao 的包,并在该包中创建一个名为 UserDao 的接口。具体代码如下:

package com.dao;
import java.util.List;

import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;
import com.po.MyUser;
@Repository("userDao")
@Mapper
/*
* 使用Spring自动扫描MyBatis的接口并装配 (Spring将指定包中所有被注解标注的接口自动装配为Mybatis的映射接口
*/
public interface UserDao {
    /**
     * 接口方法对应的SQL映射文件UserMapper.xml中的id
     */
    public MyUser selectUserById(Integer uid);
    public List<MyUser> selectAllUser();
    public int addUser(MyUser user);
    public int updateUser(MyUser user);
    public int deleteUser(Integer uid);
}

  6.  创建 Controller 层

  在 src 目录下创建一个名为 com.controller 的包,并在该包中创建一个名为 UserController 的控制器类。具体代码如下:

package com.controller;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

import com.dao.UserDao;
import com.po.MyUser;
@Controller("userController")
public class UserController {
    @Autowired
    private UserDao userDao;

	@RequestMapping("/select")
    public String test(Model model) {
        // 查询一个用户
        MyUser auser = userDao.selectUserById(1);
        System.out.println(auser);
        System.out.println("============================");
        // 添加一个用户
        MyUser addmu = new MyUser();
        addmu.setUname("庄子");
        addmu.setUsex("男");
        int add = userDao.addUser(addmu);
        System.out.println("添加了" + add + "条记录");
        System.out.println("============================");
        // 修改一个用户
        MyUser updatemu = new MyUser();
        updatemu.setUid(1);
        updatemu.setUname("老子");
        updatemu.setUsex("男");
        int up = userDao.updateUser(updatemu);
        System.out.println("修改了" + up + "条记录");
        System.out.println("============================");
        // 删除一个用户
        int dl = userDao.deleteUser(9);
        System.out.println("删除了" + dl + "条记录");
        System.out.println("============================");
        // 查询所有用户
        List<MyUser> list = userDao.selectAllUser();
        for (MyUser myUser : list) {
            System.out.println(myUser);
        }
        List<MyUser> list1 = userDao.selectAllUser();
        model.addAttribute("userList", list1);
        return "user/userList";
    }
}

7.    创建用户信息显示页面

  在 WEB-INF 目录下创建文件夹views/user,并在该文件夹下user创建用户信息显示页面 userList. jsp。具体代码如下:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>显示用户信息</title>
</head>
<body>
    用户信息
    <br>
    <c:forEach items="${userList }" var="user">
    ${user.uid }&nbsp;&nbsp;&nbsp;&nbsp;
    ${user.uname }&nbsp;&nbsp;&nbsp;&nbsp;
    ${user.usex }<br>
    </c:forEach>
</body>
</html>

8.  创建相关配置文件

     1> web.xml

      在 WEB-INF 目录下创建 web.xml 文件,并在该文件中实例化 ApplicationContext 容器、启动 Spring 容器、配置 DispatcherServlet 以及配置字符编码过滤器。具体代码如下:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
 xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee 
 http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
  id="WebApp_ID" version="4.0">
  <display-name>ssmDemo</display-name>
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
  <!-- 实例化ApplicationContext容器 -->
    <context-param>
        <!-- 加载src目录下的 applicationContext-*.xml文件-->
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:applicationContext.xml</param-value>
    </context-param>
    <filter>
        <filter-name>encodingFilter</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>
        <init-param>
            <param-name>forceEncoding</param-name>
            <param-value>true</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>encodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
    <servlet>
        <servlet-name>spring</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:springmvc-servlet.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>spring</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
    <!-- ContextLoaderListener的作用就是启动Web容器时,自动装配ApplicationContext.xml的配置信息。
              因为它实现了ServletContextListener这个接口,在web.xml配置这个监听器,启动容器时,就会默认执行它实现的方法。 -->
    <listener>
        <listener-class>
            org.springframework.web.context.ContextLoaderListener
        </listener-class>
    </listener>
</web-app>

 2> springmvc-servlet.xml

      在 src目录下创建Spring MVC的核心配置文件 springmvc-servlet.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:mvc="http://www.springframework.org/schema/mvc"
    xmlns:p="http://www.springframework.org/schema/p" 
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="
        http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context-3.0.xsd
        http://www.springframework.org/schema/mvc
        http://www.springframework.org/schema/mvc/spring-mvc.xsd">
    <!-- 使用扫描机制扫描包 -->
    <context:component-scan base-package="com.controller" />
    <mvc:annotation-driven >
           <!-- 消息转换器 -->
           <mvc:message-converters register-defaults="true">
               <bean class="org.springframework.http.converter.StringHttpMessageConverter">
                   <property name="supportedMediaTypes" value="text/html;charset=UTF-8"/>
               </bean>
           </mvc:message-converters>
        </mvc:annotation-driven>
    <!-- annotation-driven用于简化开发的配置,注解DefaultAnnotationHandlerMapping和AnnotationMethodHandlerAdapter -->
    <!-- 完成视图的对应 -->
    <!-- 对转向页面的路径解析。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> applicationContext.xml

        在 src 目录下创建 Spring 的配置文件 applicationContext.xml,在该文件中配置数据源、添加事务支持、开启事务注解、配置 MyBatis 工厂、进行 Mapper 代理开发以及指定扫描包。具体代码如下:

<?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:aop="http://www.springframework.org/schema/aop"
    xmlns:p="http://www.springframework.org/schema/p"
    xmlns:tx="http://www.springframework.org/schema/tx"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="  
            http://www.springframework.org/schema/beans
            http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
            http://www.springframework.org/schema/aop 
            http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
            http://www.springframework.org/schema/tx
            http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
            http://www.springframework.org/schema/context
            http://www.springframework.org/schema/context/spring-context-3.0.xsd">
    <!--配置数据源 -->
    <bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource"
        destroy-method="close" scope="singleton">
        <property name="driverClassName" value="com.mysql.jdbc.Driver" />
        <property name="url"
            value="jdbc:mysql://localhost:3306/ssmone?characterEncoding=utf8" />
        <property name="username" value="root" />
        <property name="password" value="root" />
        <property name="maxTotal" value="30" />
        <property name="maxIdle" value="10" />
        <property name="initialSize" value="5" />
    </bean>
    <!-- 添加事务支持 -->
    <bean id="txManager"
        class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource" />
    </bean>
    <!-- 开启事务注解 -->
    <tx:annotation-driven transaction-manager="txManager" />
    <!-- 配置mybitas工厂,同时指定数据源,并与MyBatis完美整合 -->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource" />
        <!-- configLocation的属性值为Mybatis的核心配置文件 -->
        <!--  <property name="configLocation" value="classpath:mybatis-config.xml" /> -->
         <!-- 所有配置的mapper文件 -->
        <property name="mapperLocations" value="classpath:com/mybatis/*.xml" />
    </bean>
    <!-- Mapper代理开发,使用Spring自动扫描Mybatis的接口并装配 -->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <!-- mybatis-spring组件的扫描器 -->
        <property name="basePackage" value="com.dao" />
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
    </bean>
</beans>

    4> 在 com.mybatis 文件夹中创建 SQL 映射文件 UserMapper.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.dao.UserDao">
    <!--根据uid查询一个用户信息 -->
    <select id="selectUserById" parameterType="Integer" resultType="com.po.MyUser">
        select * from user where uid = #{uid}
    </select>
    <!-- 查询所有用户信息 -->
    <select id="selectAllUser" resultType="com.po.MyUser">
        select * from user
    </select>
    <!-- 添加一个用户,#{uname}为 com.mybatis.po.MyUser 的属性值 -->
    <insert id="addUser" parameterType="com.po.MyUser">
    insert into user (uname,usex) values(#{uname},#{usex})
    </insert>
    <!--修改一个用户 -->
    <update id="updateUser" parameterType="com.po.MyUser">
        update user set uname = #{uname},usex = #{usex} where uid = #{uid}
    </update>
    <!-- 删除一个用户 -->
    <delete id="deleteUser" parameterType="Integer">
        delete from user where uid = #{uid}
    </delete>
</mapper>

9.  发布运行应用程序

     2.jpg

相关: 通过eclipse创建基于maven的ssm(Spring+SpringMVC+Mybayts)框架

配置信息下载:

ssm配置.zip

 

注配置文件包目录与上文不一致

<