天天看點

使用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**

繼續閱讀