一、基本环境搭建

1、新建一个Maven项目,不使用模板

2、在pom.xml文件中设置打包格式为war

<packaging>war</packaging>

3、在Project Structure -> Modules中设置webapp目录以及web.xml文件位置java培训

4、导入相关的依赖

<dependencies>
<!-- junit -->

<dependency>
  <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.12</version>
</dependency>
<!-- 数据库驱动 -->
<dependency>
  <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.47</version>
</dependency>
<!-- 数据库连接池 -->
<dependency>
  <groupId>com.mchange</groupId>
    <artifactId>c3p0</artifactId>
    <version>0.9.5.2</version>
</dependency>

<!-- Servlet - jsp -->
<dependency>
  <groupId>javax.servlet</groupId>
    <artifactId>servlet-api</artifactId>
    <version>2.5</version>
</dependency>
<dependency>
  <groupId>javax.servlet.jsp</groupId>
    <artifactId>jsp-api</artifactId>
    <version>2.2</version>
</dependency>
<dependency>
  <groupId>javax.servlet</groupId>
    <artifactId>jstl</artifactId>
    <version>1.2</version>
</dependency>

<!-- MyBatis -->
<dependency>
  <groupId>org.mybatis</groupId>
    <artifactId>mybatis</artifactId>
    <version>3.5.2</version>
</dependency>
<dependency>
  <groupId>org.mybatis</groupId>
    <artifactId>mybatis-spring</artifactId>
    <version>2.0.2</version>
</dependency>

<!-- Spring -->
<dependency>
  <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>5.1.9.RELEASE</version>
</dependency>

<dependency>

  <groupId>org.springframework</groupId>
    <artifactId>spring-jdbc</artifactId>
    <version>5.1.9.RELEASE</version>
</dependency>

</dependencies>

5、在pom.xml中设置过滤器,使静态资源可以导出

<build>
<resources>

  <resource>
      <directory>src/main/java</directory>
        <includes>
          <include>**/*.properties</include>
            <include>**/*.xml</include>
        </includes>
        <filtering>false</filtering>
    </resource>
    <resource>
        <directory>src/main/resources</directory>
        <includes>
          <include>**/*.properties</include>
            <include>**/*.xml</include>
        </includes>
        <filtering>false</filtering>
    </resource>
</resources>

</build>

6、在Edit Configuration中配置Tomcat

7、建立基本结构和框架配置

 

mybatis-config.xml MyBatis配置文件
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE configuration PUBLIC="-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3config.dtd">
<configuration>


<!-- 配置数据源,交给Spring去做 -->

<!-- 给包起别名 -->
<typeAliases>
  <package name="com.banmao.pojo"/>
</typeAliases>

<mappers>
    <mapper resource="com/wzy/dao/BooksMapper.xml"/>
</mappers>

</configuration>

applicationContext.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"
   xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">


<import resource="spring-dao.xml"/>
<import resource="spring-service.xml"/>
<import resource="spring-mvc.xml"/>

</beans>

二、整合MyBatis

1、数据库配置文件:database.properties

jdbc.driver=com.mysql.jdbc.Driver

如果使用的是MySQL8.0+ 增加一个时区的配置:&serverTimezone=Asia/Shanghai

jdbc.url=jdbc:mysql://localhost:3306/ssmbuild?useSSL=true&useUnicode=true&characterEncoding=utf8
jdbc.username=root
jdbc.password=root

2、pojo包下:Books实体类

public class Books {

private Integer bookID;
private String bookName;
private Integer bookCounts;
private String detail;

// getter & setter 方法
// toString方法

}

3、dao包下:BookMapper接口

public interface BookMapper {

// 增加一本书
int addBook(Books books);

// 删除一本书
int deleteBookById(int id);

// 更新一本书
int updateBook(Books books);

// 查询一本书
Books queryBookById(int id);

// 查询所有书
List<Books> queryAllBooks(); 

}

4、dao包下:BookMapper.xml

<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE mapper PUBLIC="-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.wzy.dao.BookMapper">

<insert id="addBook" parameterType="Books">
  insert into books (bookName, bookCounts, detail)
    values (#{bookName}, #{bookCounts}, #{detail})
</insert>

<delete id="deleteBookById" parameterType="int">
  delete from books where bookID = #{id}
</delete>


</mapper>

5、service包下:BookService接口

public interface BookService {

// 增加一本书
int addBook(Books books);

// 删除一本书
int deleteBookById(int id);

// 更新一本书
int updateBook(Books books);

// 查询一本书
Books queryBookById(int id);

// 查询所有书
List<Books> queryAllBooks(); 

}

6、service包下:BookServiceImpl实现类

public class BookServiceImpl implements BookService {

// service层调dao层:组合DAO
private BookMapper bookMapper;
public void setBookMapper(BookMapper bookMapper) {
    this.bookMapper = bookMapper;
}

public int addBook(Books books) {
    return bookMapper.addBook(books);
}

public int deleteBookById(int id) {
    return bookMapper.deleteBookById(id);
}

public int updateBook(Books boooks) {
return bookMapper.updateBook(books);
}

public Books queryBookById(int id) {
    return bookMapper.queryBookById(id);
}

public List<Books> queryAllBooks() {
    return bookMapper.queryAllBooks();
}

}

三、整合Spring

此处非常重点,建议背诵(开玩笑,直接复制就行了

1、配置Spring整合MyBatis,数据源使用c3p0连接池

2、编写Spring整合Mybatis的相关配置文件:spring-dao.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"
   xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">


<!-- 1.关联数据库配置文件 -->
<context:property-placeholder location="classpath:database.properties"/>


<!-- 2.连接池 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
    <property name="driverClass" value="${jdbc.driver}"/>
    <property name="jdbcUrl" value="${jdbc.url}"/>
    <property name="user" value="${jdbc.username}"/>
    <property name="password" value="${jdbc.password}"/>


    <!-- c3p0连接池的私有属性 -->
    <property name="maxPoolSize" value="30"/>
    <property name="minPoolSize" value="10"/>
    <!-- 关闭连接后不自动commit -->
    <property name="autoCommitOnClose" value="false"/>
    <!-- 获取连接超时时间 -->
    <property name="checkoutTimeout" value="10000"/>
    <!-- 当获取连接失败重试次数 -->
    <property name="acquireRetryAttempts" value="2"/>
</bean>


<!-- 3.sqlSessionFactory -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    <!-- 注入数据库连接池 -->
    <property name="dataSource" ref="dataSource"/>
    <!-- 配置MyBatis全局配置文件 mybatis-cinfig.xml -->
    <property name="configLocation" value="classpath:mybatis-config.xml"/>
</bean>


<!-- 4.配置扫描Dao接口包,动态实现Dao接口注入到spring容器中 -->
<!-- 解释:http://www.cnblog.com/jpfss/7799806.html-->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    <!-- 注入sqlSessionFactory -->
    <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
    <!-- 要扫描的dao包 -->
    <property name="basePackage" value="com.banmao.dao"/>
</bean>

</beans>

3、Spring整合service层

<?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"
   xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">


<!-- 1.扫描service下的包 -->
<context:component-scan base-package="com.banmao.service"/>


<!-- 2.将我们的所有业务类,注入到Spring,可以通过配置,或者注解实现 -->
<bean id="BookServiceImpl" class="com.banmao.service.impl.BookServiceImpl">
    <property name="bookMapper" ref="bookMapper"/>
</bean>


<!-- 3.声明式事务配置 -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <!-- 注入数据源 -->
    <property name="dataSource" ref="dataSource"/>
</bean>


<!-- 4.aop事务支持!-->



</beans>

Spring就是个大杂烩!!!!

四、整合Spring MVC

1、web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"

     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
     version="4.0">


<!-- DispatchServlet -->
<servlet>
    <servlet-name>springmvc</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:applicationContext.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>springmvc</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>


<!-- 乱码过滤 -->
<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>
</filter>
<filter-mapping>
    <filter-name>encodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>


<!-- Session过期时间 -->
<session-config>
    <session-timeout>15</session-timeout>
</session-config>

</web-app>

2、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:mvc="http://www.springframework.org/schema/mvc"
   xmlns:context="http://www.springframework.org/schema/context"
   xsi:schemaLocation="http://www.springframework.org/schema/beans
   http://www.springframework.org/schema/beans/spring-beans.xsd
   http://www.springframework.org/schema/mvc
   https://www.springframework.org/schema/mvc/spring-mvc.xsd
   http://www.springframework.org/schema/context
   https://www.springframework.org/schema/context/spring-context.xsd">


<!-- 1.注解驱动 -->
<mvc:annotation-driven/>
<!-- 2.静态资源过滤 -->
<mvc:default-servlet-handler/>
<!-- 3.扫描包:controller -->
<context:component-scan base-package="com.banmao.controller"/>
<!-- 4.视图解析器 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix" value="/WEB-INF/jsp/"/>
    <property name="suffix" value=".jsp"/>
</bean>

</beans>

3、Spring配置整合文件:applicationContext.xml

import导入即可

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"

   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">


<import resource="spring-dao.xml"/>
<import resource="spring-service.xml"/>
<import resource="spring-mvc.xml"/>

</beans>

五、整合Controller层和视图层

以下内容为前后端不分离,返回的数据直接显示在JSP页面上

1、BookController类编写,方法一:查询所有书籍

@Controller
@RequestMapping("/book")
public class BookController {

@Autowired
@Qualifier("BookServiceImpl")
private BookService bookService;

@RequestMapping("/allBooks")
public String list(Model model) {

   List<Books> list = bookService.queryAllBooks();
   model.addAttribute("list", list);
   return "allBooks";

}
}

2、编写首页JSP:index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
<!DOCTYPE HTML>
<html>
<head>
<title>首页</title>
</head>
<body>

<h3>
点击进入列表页
</h3>
</body>
</html>

3、书籍列表页面:allBooks.jsp

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>书籍列表</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">

</head>
<body>
<div>

   <div>
       <table>
           <thead>
           <tr>
               <th>书籍编号</th>
               <th>书籍名字</th>
               <th>书籍数量</th>
               <th>书籍详情</th>
               <th>操作</th>
           </tr>
           </thead>


           <tbody>
           <c:forEach var="book" items="${requestScope.get('list')}">
               <tr>
                   <td>${book.getBookID()}</td>
                   <td>${book.getBookName()}</td>
                   <td>${book.getBookCounts()}</td>
                   <td>${book.getDetail()}</td>
                   <td>
                       <a href="${pageContext.request.contextPath}/book/toUpdateBook?id=${book.getBookID()}">更改</a> |
                       <a href="${pageContext.request.contextPath}/book/del/${book.getBookID()}">删除</a>
                   </td>
               </tr>
           </c:forEach>
           </tbody>
       </table>
   </div>

</div>
</div>

其余方法可自己实现,不再赘述!

六、总结

实际上,Spring的配置整合能够托管许多东西,其中涵盖了MyBatis的数据源配置、Filter的乱码问题解决配置等等,这些都是机械化的配置操作,并不需要太多改变就可以复用。

因此可以将所有配置包装成模板,每次生成SSM框架项目时都可以直接使用。

但是!一定要学会Spring的理念和其与Mybatis以及Service、MVC整合的过程!


IT小尚
24 声望8 粉丝

尚硅谷IT培训学习爱好分享者