天天看点

使用Intellij IEDA搭建ssm+mysql框架

ssm框架即spring+springMVC +mybatis,今天主要介绍如何将其整合。

准备工作:请确保你的jdk、idea、mysql、maven已经安装好,并且相关环境变量设置成功。

1.创建maven项目

打开idea,新建项目。

使用Intellij IEDA搭建ssm+mysql框架
使用Intellij IEDA搭建ssm+mysql框架
使用Intellij IEDA搭建ssm+mysql框架
使用Intellij IEDA搭建ssm+mysql框架

此时工程创建成功,等待maven将工程生成。

以下是生成的工程目录,及其pom中的数据,pom中的数据还需要调整下。

使用Intellij IEDA搭建ssm+mysql框架
使用Intellij IEDA搭建ssm+mysql框架

2. 修改下工程的目录结构

成功后的目录结构应该是如下的样子:

使用Intellij IEDA搭建ssm+mysql框架
  • 打开project structure
    使用Intellij IEDA搭建ssm+mysql框架
    使用Intellij IEDA搭建ssm+mysql框架
    在src上新建目录。
    使用Intellij IEDA搭建ssm+mysql框架
    使用Intellij IEDA搭建ssm+mysql框架

    这样就创建了测试的目录。

    按照此方法在main和test上创建resources、java目录,如图:

    使用Intellij IEDA搭建ssm+mysql框架
    下面修改目录的源,鼠标移动到main目录下的java目录上,右键选择sources即可,
    使用Intellij IEDA搭建ssm+mysql框架

    按照上面的方法,分别

    修改main目录下resources,右键选择resources;

    修改test目录下的java,右键选择tests;

    修改test目录下的resources,右键test resources。

    修改完成如图:

    使用Intellij IEDA搭建ssm+mysql框架
    然后点击APPLY,再点击ok,则目录结构修改完成。

3. 配置pom

向pom中添加依赖,及其pom的相关配置,如下代码:

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.itlaobing</groupId>
  <artifactId>ssm</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>war</packaging>

  <name>ssm Maven Webapp</name>
  <!-- FIXME change it to the project's website -->
  <url>http://www.example.com</url>

  <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>
    <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>

    <spring.version>4.3.13.RELEASE</spring.version>
    <jackson.version>2.9.3</jackson.version>
  </properties>

  <dependencies>

    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
      <scope>test</scope>
    </dependency>

    <!-- 提供 Servlet 编译环境 -->
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>3.1.0</version>
      <scope>provided</scope>
    </dependency>

    <!-- 提供 JSP 支持环境(自定义标签) -->
    <dependency>
      <groupId>javax.servlet.jsp</groupId>
      <artifactId>javax.servlet.jsp-api</artifactId>
      <version>2.3.1</version>
      <scope>provided</scope>
    </dependency>

    <!-- 提供 JSTL 支持 -->
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>jstl</artifactId>
      <version>1.2</version>
    </dependency>

    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-api</artifactId>
      <version>1.7.25</version>
    </dependency>

    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-log4j12</artifactId>
      <version>1.7.25</version>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>log4j</groupId>
      <artifactId>log4j</artifactId>
      <version>1.2.17</version>
    </dependency>

    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>5.1.45</version>
    </dependency>

    <!-- 使用阿里巴巴提供的 druid 数据源支持-->
    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>druid</artifactId>
      <version>1.1.6</version>
    </dependency>

    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.4.5</version>
    </dependency>

    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis-spring</artifactId>
      <version>1.3.1</version>
    </dependency>

    <!-- Spring Context -->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>4.3.13.RELEASE</version>
    </dependency>

    <!-- Spring JDBC -->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-jdbc</artifactId>
      <version>4.3.13.RELEASE</version>
    </dependency>

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

    <!--Spring MVC 对 JSON 的支持需要依赖 jackson -->
    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-core</artifactId>
      <version>${jackson.version}</version>
    </dependency>

    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-annotations</artifactId>
      <version>${jackson.version}</version>
    </dependency>

    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-databind</artifactId>
      <version>${jackson.version}</version>
    </dependency>

    <!-- 启用校验支持 -->
    <dependency>
      <groupId>org.hibernate</groupId>
      <artifactId>hibernate-validator</artifactId>
      <version>5.0.2.Final</version>
    </dependency>

  </dependencies>

  <build>
    <!-- 使用当前工程的 artifactId 当作 finalName  -->
    <finalName>ssm</finalName>
    <plugins>
      <plugin>
        <groupId>org.apache.tomcat.maven</groupId>
        <artifactId>tomcat7-maven-plugin</artifactId>
        <version>2.2</version>
        <configuration>
          <port>80</port>
          <path>/</path>
          <uriEncoding>UTF-8</uriEncoding>
        </configuration>
      </plugin>
    </plugins>
  </build>

</project>
           

添加依赖后,更新maven,下载jar

使用Intellij IEDA搭建ssm+mysql框架

更新完成后如下:

使用Intellij IEDA搭建ssm+mysql框架

4.创建spring、springMVC配置文件

  • 创建 IoC 配置文件 (beans.xml)

在main下的resources上创建beans.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: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.xsd
                              http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">

    </beans>
           
  • 创建springMVC配置文件( 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:p="http://www.springframework.org/schema/p"
          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.xsd
                             http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">


   </beans>
           

5. 编辑 web.xml ,添加监听器、过滤器、Servlet等组件

<?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_3_1.xsd"
         id="WebApp_ID" version="3.1">

    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:beans.xml</param-value>
    </context-param>

    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

    <!-- ******************************************************************************************* -->

    <filter>
        <filter-name>CharacterEncodingFilter</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>CharacterEncodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
        <dispatcher>REQUEST</dispatcher>
        <dispatcher>INCLUDE</dispatcher>
        <dispatcher>FORWARD</dispatcher>
    </filter-mapping>

    <!-- ******************************************************************************************* -->

    <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: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>

</web-app>
           

6.分包

在main下java上创建包(package),目录结构如下图:

使用Intellij IEDA搭建ssm+mysql框架

7.创建控制器

在包controller上创建java类,命名为UserController。

package com.itlaobing.web.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

@Controller
@RequestMapping("/user/**")
public class UserController {

    @RequestMapping( path = "/sign-up" , method = RequestMethod.GET)
    public String signUpPage() {
        return "sign-up" ;
    }

}
           

8.创建jsp页面 sign-up.jsp

在WEB-INF下新建目录,命名为views,在views下新建sign-up.jsp文件。

使用Intellij IEDA搭建ssm+mysql框架

在sign-up.jsp文件中添加如下代码:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>注册</title>

</head>
<body>

<h2>注册</h2>

<div>
    <form action="${ pageContext.request.contextPath }/user/sign-up" method="post">
        <input type="text" name="username" >
        <input type="text" name="password" >
        <input type="submit" value="注册">
    </form>
</div>

</body>
</html> 
           

9.编辑mvc.xml

在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:p="http://www.springframework.org/schema/p"
       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.xsd
                             http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">

        <!--试图解析器-->
        <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
            <property name="prefix" value="/WEB-INF/views/" />
            <property name="suffix" value=".jsp" />
        </bean>

        <!--注解扫描-->
        <context:component-scan base-package="com.itlaobing.web.controller" />
        <mvc:annotation-driven  />
</beans>
           

10.测试

启动 tomcat

使用Intellij IEDA搭建ssm+mysql框架

点击tomcat7:run即启动。

然后在浏览器地址栏输入: http://localhost:80/user/sign-up 即可。

使用Intellij IEDA搭建ssm+mysql框架

11.创建 UserMapper 接口

在mapper上创建UserMapper接口,代码如下:

package com.itlaobing.mapper;

import org.springframework.stereotype.Repository;

@Repository
public interface UserMapper {

}
           

12.创建UserService接口及其实现类,并注入UserMapper

在service包上创建UserService接口,代码如下:

package com.itlaobing.service;

public interface UserService {

}
           

在service包上创建包impl,然后在impl包上创建接口的实现类UserServiceImpl,并自动注入UserMapper ,代码如下:

package com.itlaobing.service.impl;

import com.itlaobing.mapper.UserMapper;
import com.itlaobing.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class UserServiceImpl implements UserService {

    @Autowired
    private UserMapper userMapper;

}
           

13.为UserController 注入 UserService

将UserService自动注入到UserController里面,代码如下:

package com.itlaobing.web.controller;

import com.itlaobing.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import javax.servlet.http.HttpServletRequest;

@Controller
@RequestMapping("/user/**")
public class UserController {

    @Autowired
    private UserService userService;

    @RequestMapping( path = "/sign-up" , method = RequestMethod.GET)
    public String signUpPage(HttpServletRequest request) {


        return "sign-up" ;
    }

}
           

14.在 beans.xml 中扫描组件

在resources下的 beans.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:p="http://www.springframework.org/schema/p"
       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.xsd
                              http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd">

    <!-- 建议分包扫描各个组件 -->
    <context:component-scan base-package="com.itlaobing.mapper" />
    <context:component-scan base-package="com.itlaobing.service" />
    <context:component-scan base-package="com.itlaobing.web.controller" />


</beans>
           

15.创建实体类和数据库及其数据表

实体类:在entity上创建User实体类,代码如下:

package com.itlaobing.entity;

import java.io.Serializable;

public class User implements Serializable {

    private Integer id ;
    private String username ;
    private String password ;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }
}
           

创建数据库及其数据表:

在mysql中执行以下sql语句,创建数据库及其数据表:

DROP DATABASE IF EXISTS ssm ;
CREATE DATABASE ssm CHARACTER SET utf8;
USE ssm;
DROP TABLE IF EXISTS t_users ;
 CREATE TABLE t_users (
    id INT AUTO_INCREMENT ,
    username VARCHAR() ,
    PASSWORD VARCHAR() ,
    PRIMARY KEY ( id )
 );
           

16.在UserMapper接口中添加方法

代码如下:

package com.itlaobing.mapper;

import com.itlaobing.entity.User;
import org.springframework.stereotype.Repository;

@Repository
public interface UserMapper {

    /**
     * 保存用户对象到数据库中并返回受SQL影响的纪录数目
     * @param user 需要被保存的对象
     * @return
     */
    int save( User user );

}
           

17.创建UserMapper.xml

在main下的 resources 目录中创建一个com,在com下创建文件夹itlaobing,在itlaobing下创建文件夹mapper,在mapper下创建UserMapper.xml,UserMapper.xml 的存放路径必须跟 UserMapper 接口的全限定名称一致

在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">

<!-- namespace 必须跟 UserMapper 接口的全限定名称一致 -->
<mapper namespace="com.itlaobing.mapper.UserMapper">

    <!-- id 的取值必须跟 UserMapper 中相应方法名称一致 -->
    <!-- parameterType 必须跟 UserMapper 中 save 方法的参数一致 -->
    <!-- useGeneratedKeys = "true" 表示可以通过 mybatis 获取由数据库产生的主键 -->
    <!-- keyProperty = "id" 表示将数据库产生的主键赋值给 User 对象的 id 属性中-->
    <insert id="save" parameterType="com.itlaobing.entity.User" useGeneratedKeys="true" keyProperty="id">
         INSERT INTO t_users ( username , password ) VALUES ( #{username} ,#{password} )
     </insert>

</mapper>
           

18.在UserService接口和实现类中添加方法

UserService接口代码:

package com.itlaobing.service;

import com.itlaobing.entity.User;

public interface UserService {

    int save(User user);

}
           

UserServiceImpl实现类代码:

package com.itlaobing.service.impl;

import com.itlaobing.entity.User;
import com.itlaobing.mapper.UserMapper;
import com.itlaobing.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class UserServiceImpl implements UserService {

    @Autowired
    private UserMapper userMapper;

    /**
     * @param user
     * @return i
     */
    @Override
    public int save(User user) {
        //调用mapper中的方法
        int i = userMapper.save(user);
        return i;
    }
}
           

19.在UserController中添加方法

代码如下:

package com.itlaobing.web.controller;

import com.itlaobing.entity.User;
import com.itlaobing.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import javax.servlet.http.HttpServletRequest;

@Controller
@RequestMapping("/user/**")
public class UserController {

    @Autowired
    private UserService userService;

    @RequestMapping( path = "/sign-up" , method = RequestMethod.GET)
    public String signUpPage(HttpServletRequest request) {


        return "sign-up" ;
    }

    @RequestMapping(path = "/sign-up",method = RequestMethod.POST)
    public String signUp(User user){

        int i = userService.save(user);
        //对结果判断,i>去登陆,i<去注册
        if (i>){
            return "sign-in";
        }else{
            return "sign-up";
        }
    }

}
           

20.添加登录页面

在 /WEB-INF/views/ 中创建 sign-in.jsp,代码如下:

<%@ page language="java"  pageEncoding="UTF-8"%>
<%@ page  contentType="text/html; charset=UTF-8"%>

<!DOCTYPE html>
    <html>
    <head>
        <meta charset="UTF-8">
        <title>登录</title>

    </head>
    <body>

        <h2>登录</h2>

        <div>
            <!-- 如果要实现登录操作,需要在 UserController 中添加相应的方法  -->
            <form action="${ pageContext.request.contextPath }/user/sign-in" method="post">
                <input type="text" name="username" >
                <input type="text" name="password" >
                <input type="submit" value="登录">
            </form>
        </div>

    </body>
</html>
           

21.在 beans.xml 中添加数据源支持

在main下resources下新建db.properties文件,文件的内容如下:

注意修改 数据库名称、数据库用户名、数据库密码这三项

jdbc.url = jdbc:mysql://localhost:/ssm?useUnicode=true&characterEncoding=UTF8&useSSL=true
jdbc.driver = com.mysql.jdbc.Driver
jdbc.user = root
jdbc.password =
druid.filters = stat
druid.maxActive =
druid.initialSize = 
druid.maxWait = 
druid.minIdle = 
druid.maxIdle = 
druid.timeBetweenEvictionRunsMillis = 
druid.minEvictableIdleTimeMillis = 
druid.validationQuery = SELECT 'x'
druid.testWhileIdle = true
druid.testOnBorrow = false
druid.testOnReturn = false
druid.maxOpenPreparedStatements = 
druid.removeAbandoned = true  
druid.removeAbandonedTimeout = 
druid.logAbandoned = true
           

在bean.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:p="http://www.springframework.org/schema/p"
       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.xsd
                              http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd">

    <!-- 建议分包扫描各个组件 -->
    <context:component-scan base-package="com.itlaobing.mapper" />
    <context:component-scan base-package="com.itlaobing.service" />
    <context:component-scan base-package="com.itlaobing.web.controller" />


    <!-- 读取类路径下的属性文件-->
    <context:property-placeholder location="classpath:db.properties"/>

    <!-- 使用 阿里提供的 Druid 组件来管理数据库连接 -->
    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" destroy-method="close">
        <!-- 数据库基本信息配置 -->
        <property name="url" value="${jdbc.url}" />
        <property name="username" value="${jdbc.user}" />
        <property name="password" value="${jdbc.password}" />
        <property name="driverClassName" value="${jdbc.driver}" />
        <property name="filters" value="${druid.filters}" />
        <!-- 最大并发连接数 -->
        <property name="maxActive" value="${druid.maxActive}" />
        <!-- 初始化连接数量 -->
        <property name="initialSize" value="${druid.initialSize}" />
        <!-- 配置获取连接等待超时的时间 -->
        <property name="maxWait" value="${druid.maxWait}" />
        <!-- 最小空闲连接数 -->
        <property name="minIdle" value="${druid.minIdle}" />
        <!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->
        <property name="timeBetweenEvictionRunsMillis" value="${druid.timeBetweenEvictionRunsMillis}" />
        <!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->
        <property name="minEvictableIdleTimeMillis" value="${druid.minEvictableIdleTimeMillis}" />
        <property name="validationQuery" value="${druid.validationQuery}" />
        <property name="testWhileIdle" value="${druid.testWhileIdle}" />
        <property name="testOnBorrow" value="${druid.testOnBorrow}" />
        <property name="testOnReturn" value="${druid.testOnReturn}" />
        <property name="maxOpenPreparedStatements" value="${druid.maxOpenPreparedStatements}" />
        <!-- 1800 秒,也就是 30 分钟 -->
        <property name="removeAbandonedTimeout" value="${druid.removeAbandonedTimeout}" />
        <!-- 关闭 abanded 连接时输出错误日志 -->
        <property name="logAbandoned" value="${druid.logAbandoned}" />
    </bean>


</beans>
           

22.在 beans.xml 中添加 MyBatis 支持

内容如下:

<?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:p="http://www.springframework.org/schema/p"
       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.xsd
                              http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd">

    <!-- 建议分包扫描各个组件 -->
    <context:component-scan base-package="com.itlaobing.mapper" />
    <context:component-scan base-package="com.itlaobing.service" />
    <context:component-scan base-package="com.itlaobing.web.controller" />


    <!-- 读取类路径下的属性文件-->
    <context:property-placeholder location="classpath:db.properties"/>

    <!-- 使用 阿里提供的 Druid 组件来管理数据库连接 -->
    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" destroy-method="close">
        <!-- 数据库基本信息配置 -->
        <property name="url" value="${jdbc.url}" />
        <property name="username" value="${jdbc.user}" />
        <property name="password" value="${jdbc.password}" />
        <property name="driverClassName" value="${jdbc.driver}" />
        <property name="filters" value="${druid.filters}" />
        <!-- 最大并发连接数 -->
        <property name="maxActive" value="${druid.maxActive}" />
        <!-- 初始化连接数量 -->
        <property name="initialSize" value="${druid.initialSize}" />
        <!-- 配置获取连接等待超时的时间 -->
        <property name="maxWait" value="${druid.maxWait}" />
        <!-- 最小空闲连接数 -->
        <property name="minIdle" value="${druid.minIdle}" />
        <!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->
        <property name="timeBetweenEvictionRunsMillis" value="${druid.timeBetweenEvictionRunsMillis}" />
        <!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->
        <property name="minEvictableIdleTimeMillis" value="${druid.minEvictableIdleTimeMillis}" />
        <property name="validationQuery" value="${druid.validationQuery}" />
        <property name="testWhileIdle" value="${druid.testWhileIdle}" />
        <property name="testOnBorrow" value="${druid.testOnBorrow}" />
        <property name="testOnReturn" value="${druid.testOnReturn}" />
        <property name="maxOpenPreparedStatements" value="${druid.maxOpenPreparedStatements}" />
        <!-- 1800 秒,也就是 30 分钟 -->
        <property name="removeAbandonedTimeout" value="${druid.removeAbandonedTimeout}" />
        <!-- 关闭 abanded 连接时输出错误日志 -->
        <property name="logAbandoned" value="${druid.logAbandoned}" />
    </bean>

    <!-- 提供 SqlSessionFactoryBean 配置用来创建 SqlSessionFactory 对象  -->
    <bean id="sessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource" />
        <property name="mapperLocations" value="classpath:com/itlaobing/mapper/*.xml" />
    </bean>

    <!-- 扫描 Mapper 接口所在的包 ( 为相应的接口动态创建相应的实现类 ) -->
    <bean id="mapperScannerConfigurer" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <!-- 为 MapperScannerConfigurer 注入 sqlSessionFactory  -->
        <property name="sqlSessionFactoryBeanName" value="sessionFactory" />
        <!-- 扫描 Mapper 接口所在的包 ( 就是目前的 Mapper 所在的包 ) -->
        <property name="basePackage" value="com.itlaobing.mapper" />
    </bean>


</beans>
           

23、测试

启动tomcat,在浏览器中输入 http://localhost:80/user/sign-up 打开注册页面

输入用户名,密码,确认密码后点击注册

注册成功后,去往 登录页面。( 因为没有处理登录操作,所以别点登录 )

去数据库中查询,查看新添加的数据;

24.静态资源配置

在webapp下新建文件夹assets

在 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:p="http://www.springframework.org/schema/p"
       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.xsd
                             http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">

        <!--试图解析器-->
        <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
            <property name="prefix" value="/WEB-INF/views/" />
            <property name="suffix" value=".jsp" />
        </bean>

        <!--注解扫描-->
        <context:component-scan base-package="com.itlaobing.web.controller" />
        <mvc:annotation-driven  />

        <!-- location 指定静态资源所在的位置 ( webapp/assets 目录 ) -->
        <!-- mapping 指定前端访问路径 -->
        <mvc:resources mapping="/assets/**" location="/assets/" />


</beans>
           

25.添加事务支持

在bean.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:p="http://www.springframework.org/schema/p"
       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.xsd
                              http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd">

    <!-- 建议分包扫描各个组件 -->
    <context:component-scan base-package="com.itlaobing.mapper" />
    <context:component-scan base-package="com.itlaobing.service" />
    <context:component-scan base-package="com.itlaobing.web.controller" />


    <!-- 读取类路径下的属性文件-->
    <context:property-placeholder location="classpath:db.properties"/>

    <!-- 使用 阿里提供的 Druid 组件来管理数据库连接 -->
    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" destroy-method="close">
        <!-- 数据库基本信息配置 -->
        <property name="url" value="${jdbc.url}" />
        <property name="username" value="${jdbc.user}" />
        <property name="password" value="${jdbc.password}" />
        <property name="driverClassName" value="${jdbc.driver}" />
        <property name="filters" value="${druid.filters}" />
        <!-- 最大并发连接数 -->
        <property name="maxActive" value="${druid.maxActive}" />
        <!-- 初始化连接数量 -->
        <property name="initialSize" value="${druid.initialSize}" />
        <!-- 配置获取连接等待超时的时间 -->
        <property name="maxWait" value="${druid.maxWait}" />
        <!-- 最小空闲连接数 -->
        <property name="minIdle" value="${druid.minIdle}" />
        <!-- 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 -->
        <property name="timeBetweenEvictionRunsMillis" value="${druid.timeBetweenEvictionRunsMillis}" />
        <!-- 配置一个连接在池中最小生存的时间,单位是毫秒 -->
        <property name="minEvictableIdleTimeMillis" value="${druid.minEvictableIdleTimeMillis}" />
        <property name="validationQuery" value="${druid.validationQuery}" />
        <property name="testWhileIdle" value="${druid.testWhileIdle}" />
        <property name="testOnBorrow" value="${druid.testOnBorrow}" />
        <property name="testOnReturn" value="${druid.testOnReturn}" />
        <property name="maxOpenPreparedStatements" value="${druid.maxOpenPreparedStatements}" />
        <!-- 1800 秒,也就是 30 分钟 -->
        <property name="removeAbandonedTimeout" value="${druid.removeAbandonedTimeout}" />
        <!-- 关闭 abanded 连接时输出错误日志 -->
        <property name="logAbandoned" value="${druid.logAbandoned}" />
    </bean>

    <!-- 提供 SqlSessionFactoryBean 配置用来创建 SqlSessionFactory 对象  -->
    <bean id="sessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource" />
        <property name="mapperLocations" value="classpath:com/itlaobing/mapper/*.xml" />
    </bean>

    <!-- 扫描 Mapper 接口所在的包 ( 为相应的接口动态创建相应的实现类 ) -->
    <bean id="mapperScannerConfigurer" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <!-- 为 MapperScannerConfigurer 注入 sqlSessionFactory  -->
        <property name="sqlSessionFactoryBeanName" value="sessionFactory" />
        <!-- 扫描 Mapper 接口所在的包 ( 就是目前的 Mapper 所在的包 ) -->
        <property name="basePackage" value="com.itlaobing.mapper" />
    </bean>

    <!-- 配置平台事务管理器 -->
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource" />
    </bean>

    <!-- 为注解提供 事务管理器 支持-->
    <tx:annotation-driven transaction-manager="transactionManager"/>


</beans>
           

在UserService的实现类UserServiceImpl中添加事务的注解@Transactional,代码如下:

package com.itlaobing.service.impl;

import com.itlaobing.entity.User;
import com.itlaobing.mapper.UserMapper;
import com.itlaobing.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

@Service
public class UserServiceImpl implements UserService {

    @Autowired
    private UserMapper userMapper;

    /**
     * @param user
     * @return i
  **重点内容**   */
    @Transactional
    @Override
    public int save(User user) {
        //调用mapper中的方法
        int i = userMapper.save(user);

        return i;
    }
}
           

**至此,ssm框架完全搭建完成,赶紧体验框架开发的快感吧!如有问题,请详细的描述问题信息发送邮件到[email protected],

资源文件下载地址 https://download.csdn.net/download/safdghj456/10555732**

继续阅读