1.1 Maven整合SSM框架簡介
1.1.1 SSM框架整合概述
- 利用Maven整合SSM框架的思路
1.在對每個框架整合之前都需要先在Maven的pom.xml配置文件中導入相關的依賴
2.導入完依賴接着再在pom.xml配置文件中導入相關插件
3.整合各個框架對應的配置文件,把與創建對象相關交給Spring即整合到spring.xml中
4.重新整個各個框架的核心配置文件
- 注意點:
1.每整合完一個框架都要做相應的測試,防止一次性整合完,出現錯誤難以排查
2.本文以創建一個web項目為例
3.本文用的是eclipse的neon版本工具進行整合
4.配置文件放在src/main/resources目錄下
1.2 Maven整合SSM框架整合詳解
1.2.1 在eclipse中創建一個工程
- 創建工程詳解
1.創建一個Maven工程,選擇骨架webapp,填寫好坐標三要素


2.因為webapp骨架缺少src/main/java文件結構,所以需要添加該文件結構
3.如果創建的是普通java骨架,其會缺少src/main/resource文件結構
4.創建完了,項目目錄結構如下:

5.在maven的pom.xml中添加所需的插件,如source生成插件,編譯插件,Tomcat插件
1 <project xmlns="http://maven.apache.org/POM/4.0.0"
2 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
4 <modelVersion>4.0.0</modelVersion>
5 <groupId>cn.baidu</groupId>
6 <artifactId>UER-ORDER-SSM</artifactId>
7 <packaging>war</packaging>
8 <version>0.0.1-SNAPSHOT</version>
9 <name>UER-ORDER-SSM Maven Webapp</name>
10 <url>http://maven.apache.org</url>
11 <dependencies>
12 <dependency>
13 <groupId>junit</groupId>
14 <artifactId>junit</artifactId>
15 <version>3.8.1</version>
16 <scope>test</scope>
17 </dependency>
18 </dependencies>
19 <build>
20 <finalName>UER-ORDER-SSM</finalName>
21 <!-- source插件 -->
22 <plugins>
23 <plugin>
24 <groupId>org.apache.maven.plugins</groupId>
25 <artifactId>maven-compiler-plugin</artifactId>
26 <configuration>
27 <source>1.8</source>
28 <target>1.8</target>
29 <encoding>UTF-8</encoding>
30 </configuration>
31 </plugin>
32 <!-- Tomcat插件整合SpringMVC的時候補充 -->
33 </plugins>
34 </build>
35 </project>
6.注意:
-
- maven插件資源,將當前maven工程進行compile編譯時加載,完成java1.8,1.7的使用,這里統一使用1.8的版本
- 往下整合關於pom.xml文件的配置內容,本人只給出需要添加的部分,讀者往上面代碼中添加即可
1.2.2 將Spring框架整合到Maven中
- 整體思路
1.先在pom.xml文件中導入Spring框架所依賴的資源
2.然后編寫spring的核心配置文件,spring.xml,該配置文件進行包掃描,打開注解配置
3.往下的整合只要跟創建對象,對象管理相關的配置都在spring.xml文件中配置
4.編寫測試代碼,測試整合是否成功
- 先在Pom.xml文件中導入Spring框架的依賴資源
1.導入spring-context依賴資源,但是依賴具有傳遞性,導入該資源可能也會引入其他依賴資源
1 <dependency>
2 <groupId>org.springframework</groupId>
3 <artifactId>spring-context</artifactId>
4 <version>4.3.7.RELEASE</version>
5 </dependency>
- 編寫Spring的核心配置文件spring.xml
1.將spring.xml配置文件放到src/main/resources目錄下
2.在src目錄下的資源在編譯的時候都會將字節碼加載到target/classes中
3.在配置文件中會經常看見"classpath:xxx.xml"路徑來讀取文件,而classpath路徑是什么位置?
4.在maven項目中classpath路徑默認src/main/resource路徑
5.往后跟創建對象相關的配置需要放在spring的核心配置文件中,用於創建bean對象
1 <?xml version="1.0" encoding="UTF-8"?>
2 <beans xmlns="http://www.springframework.org/schema/beans"
3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4 xmlns:aop="http://www.springframework.org/schema/aop"
5 xmlns:tx="http://www.springframework.org/schema/tx"
6 xmlns:p="http://www.springframework.org/schema/p"
7 xmlns:util="http://www.springframework.org/schema/util"
8 xmlns:context="http://www.springframework.org/schema/context"
9 xmlns:mvc="http://www.springframework.org/schema/mvc"
10 xsi:schemaLocation=" 11 http://www.springframework.org/schema/beans 12 http://www.springframework.org/schema/beans/spring-beans.xsd 13 http://www.springframework.org/schema/aop 14 http://www.springframework.org/schema/aop/spring-aop.xsd 15 http://www.springframework.org/schema/tx 16 http://www.springframework.org/schema/tx/spring-tx.xsd 17 http://www.springframework.org/schema/util 18 http://www.springframework.org/schema/util/spring-util.xsd 19 http://www.springframework.org/schema/context 20 http://www.springframework.org/schema/context/spring-context.xsd 21 http://www.springframework.org/schema/mvc 22 http://www.springframework.org/schema/mvc/spring-mvc.xsd">
23
24 <!-- 開啟包掃描 -->
25 <context:component-scan base-package="cn.baidu"></context:component-scan>
26 <!-- 開啟注解DI -->
27 <context:annotation-config></context:annotation-config>
28
29 </beans>
- 編寫測試代碼,測試maven整合spring框架是否成功
1.依據三層架構建好目錄結構

2.編寫控制層測試程序
1 package cn.baidu.controller; 2
3 import org.springframework.beans.factory.annotation.Autowired; 4 import org.springframework.stereotype.Controller; 5
6 import cn.baidu.service.HelloService; 7
8 @Controller 9 public class HelloController { 10
11 // 注入service層對象
12 @Autowired 13 private HelloService helloService; 14
15 public String sayHi(String name){ 16 // 調用對應service層的方法
17 return helloService.sayHi(name); 18 } 19
20 }
3.編寫業務邏輯層的接口
1 package cn.baidu.service; 2
3 //service層的接口
4 public interface HelloService { 5
6 public String sayHi(String name); 7
8 }
4.編寫業務層的實現類
1 package cn.baidu.service; 2
3 import org.springframework.beans.factory.annotation.Autowired; 4 import org.springframework.stereotype.Service; 5
6 import cn.baidu.mapper.HelloMapper; 7
8 @Service 9 public class HelloServiceImp implements HelloService{ 10
11 // 注入持久層對象
12 @Autowired 13 private HelloMapper helloMapper; 14 @Override 15 public String sayHi(String name) { 16 // 調用持久層方法
17 return helloMapper.sayHi(name); 18 } 19
20 }
5.編寫持久層接口
1 package cn.baidu.mapper; 2
3 public interface HelloMapper { 4
5 public String sayHi(String name); 6
7 }
6.編寫持久層實現類
1 package cn.baidu.mapper; 2
3 import org.springframework.stereotype.Repository; 4
5 @Repository 6 public class HelloMapperImp implements HelloMapper{ 7
8 @Override 9 public String sayHi(String name) { 10 return "Hi,歡迎測試Spring框架的搭建情況"; 11 } 12
13 }
7.編寫測試類,測試整合情況
1 package cn.baidu.test; 2
3 import org.junit.Test; 4 import org.springframework.context.ApplicationContext; 5 import org.springframework.context.support.ClassPathXmlApplicationContext; 6
7 import cn.baidu.controller.HelloController; 8
9 public class TestHello { 10
11 @Test 12 public void test(){ 13
14 // 初始化Spring容器
15 ApplicationContext context = new ClassPathXmlApplicationContext("spring.xml"); 16 // 獲取控制層對象
17 HelloController helloController = context.getBean(HelloController.class); 18 // 調用控制層方法
19 String str = helloController.sayHi("譚小傑"); 20 System.out.println(str); 21
22 } 23
24 }
7.出現如下結果說明測試成功

1.2.3 將Mybatis框架整合至Maven中
- 整合思路
1.Mybatis框架主要有兩個配置文件,一個是mybatis配置文件和xxxMapper.xml(核心)配置文件
2.映射配置文件中主要配置數據源,用於創建與數據庫連接的對象和配置核心配置文件的映射
3.有以上兩個文件的配置內容可知,數據源的配置移到spring.xml配置文件中
4.MyBatis框架需要創建sqlSession對象執行sql語句,獲取執行結果
5.所以在spring.xml文件中配置sqlSession的bean,用於創建Session對象
6.MyBatis需要mapper接口,需要在spring.xml配置對應的bean利用動態代理創建其接口的實現類
7.編寫mybatis-config.xml配置文件,里面添加一些mybatis的功能
8.編寫xxxMapper.xml配置文件,定義好namespace和定義所需的sql語句
- 在pom.xml配置文件中導入Mybatis框架所需的依賴資源
1.配置數據源需要連接池依賴,jdbc依賴和數據庫類型依賴
2.本文用的連接池是阿里巴巴的druid,數據庫用的是MySQL
1 <!-- 連接池依賴 -->
2 <dependency>
3 <groupId>com.alibaba</groupId>
4 <artifactId>druid</artifactId>
5 <version>1.0.14</version>
6 </dependency>
7 <!-- jdbc依賴 -->
8 <dependency>
9 <groupId>org.springframework</groupId>
10 <artifactId>spring-jdbc</artifactId>
11 <version>4.3.7.RELEASE</version>
12 </dependency>
13 <!-- mysql依賴 -->
14 <dependency>
15 <groupId>mysql</groupId>
16 <artifactId>mysql-connector-java</artifactId>
17 <version>5.0.8</version>
18 </dependency>
19 <!-- mybatis依賴資源 -->
20 <dependency>
21 <groupId>org.mybatis</groupId>
22 <artifactId>mybatis</artifactId>
23 <version>3.4.5</version>
24 </dependency>
25 <!-- mybatis-spring依賴資源 -->
26 <dependency>
27 <groupId>org.mybatis</groupId>
28 <artifactId>mybatis-spring</artifactId>
29 <version>1.3.1</version>
30 </dependency>
- 在spring.xml中配置對應的bean
1.配置數據源的bean標簽,該標簽主要數用於創建連接數據庫對象
1 <!-- 配置數據源 -->
2 <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
3 <!-- 4個屬性,數據庫驅動,URL,用戶名和密碼 -->
4 <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
5 <property name="url" value="jdbc:mysql:///mssm"/>
6 <property name="username" value="root"/>
7 <property name="password" value="root"/>
8 </bean>
2.配置sqlSession的bean標簽,該標簽用於創建session對象,用於執行sql語句和獲取執行結果
1 <!-- 配置sqlSession,動態代理實現持久層sqlSession接口實現的對象 -->
2 <bean id="sqlSession" class="org.mybatis.spring.SqlSessionFactoryBean">
3 <!-- 綁定數據源即獲取connection對象 -->
4 <property name="dataSource" ref="dataSource"/>
5 <!-- 加載mybatis的獨立配置文件 -->
6 <property name="configLocation" value="classpath:mybatis-config.xml"/>
7 <!-- 掃描映射xxxMapper.xml映射文件 -->
8 <property name="mapperLocations"value="classpath:mapper/*.xml"/>
9 </bean>
10 <!-- 配置mapper接口的掃描配置用於創建mapper接口的實現類 -->
11 <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
12 <property name="basePackage" value="cn.baidu.mapper"/>
13 </bean>
- 編寫mybatis-config.xml配置文件
1.在src/main/resources目錄下編寫mybatis-config.xml配置文件
1 <?xml version="1.0" encoding="UTF-8" ?>
2 <!DOCTYPE configuration 3 PUBLIC "-//mybatis.org//DTD Config 3.0//EN" 4 "http://mybatis.org/dtd/mybatis-3-config.dtd">
5 <configuration>
6 <!-- 打開駝峰命名設置,用於封裝持久層數據對象的內容-->
7 <settings>
8 <setting name="mapUnderscoreToCamelCase" value="true"/>
9 </settings>
10
11 </configuration>
- 編寫xxxMapper.xml配置文件
1.在src/main/resources/mapper目錄下配置對應的xxxMapper.xml文件,將sql語句添加其中
1 <?xml version="1.0" encoding="UTF-8"?>
2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 3 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
4 <mapper namespace="cn.baidu.mapper.StudentMapper">
5 </mapper>
- 編寫測試代碼,測試Mybatis整合是否成功
1.在連接的數據庫中建立mssm數據庫,創建student表格,其有如下字段和數據
1 //創建表 2 create table student(id varchar(225),name varchar(225)); 3 //添加數據 4 insert into student values('a','王重陽'),('b','歐陽鋒'),('c','黃葯師');
2.編寫一個用於封裝數據的domain類
1 package cn.baidu.domain; 2 3 public class Student { 4 5 // 定義屬性 6 private String id; 7 private String name; 8 // 定義構造方法 9 public Student(){} 10 public Student(String id, String name) { 11 super(); 12 this.id = id; 13 this.name = name; 14 } 15 // 定義getter和sett方法 16 public String getId() { 17 return id; 18 } 19 public void setId(String id) { 20 this.id = id; 21 } 22 public String getName() { 23 return name; 24 } 25 public void setName(String name) { 26 this.name = name; 27 } 28 @Override 29 public String toString() { 30 return "Student [id=" + id + ", name=" + name + "]"; 31 } 32 33 }
3.編寫控制層代碼
1 package cn.baidu.controller; 2
3 import org.springframework.beans.factory.annotation.Autowired; 4 import org.springframework.stereotype.Controller; 5
6 import cn.baidu.domain.Student; 7 import cn.baidu.service.StudentService; 8
9 @Controller 10 public class StudentController { 11
12 @Autowired 13 private StudentService studentService; 14 public Student queryStudentById(String id){ 15 return studentService.queryStudentById(id); 16 } 17
18 }
4.編寫業務層接口
1 package cn.baidu.service; 2
3 import cn.baidu.domain.Student; 4
5 public interface StudentMapper { 6
7 public Student queryOne(String id); 8 }
5.編寫業務層的實現類
1 package cn.baidu.service; 2
3 import org.springframework.beans.factory.annotation.Autowired; 4 import org.springframework.stereotype.Service; 5
6 import cn.baidu.domain.Student; 7
8 @Service 9 public class StudentServiceImp implements StudentService{ 10
11 @Autowired 12 private StudentMapper studentMapper; 13
14 @Override 15 public Student queryStudentById(String id) { 16 return studentMapper.queryOne(id); 17 } 18
19 }
6.編寫studentMapper.xml文件,把寫入查詢sql語句
1 <?xml version="1.0" encoding="UTF-8"?>
2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 3 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
4 <mapper namespace="cn.baidu.mapper.StudentMapper">
5 <select id="queryOne" resultType="cn.baidu.domain.Student">
6 select * from student where id=#{id}; 7 </select>
8 </mapper>
7.編寫對應的Mapper配置文件對應的接口
1 package cn.baidu.mapper; 2
3 import cn.baidu.domain.Student; 4
5 public interface StudentMapper { 6
7 public Student queryOne(String id); 8 }
8.編寫測試類,測試是否整合成功
1 package cn.baidu.test; 2
3 import org.junit.Test; 4 import org.springframework.context.ApplicationContext; 5 import org.springframework.context.support.ClassPathXmlApplicationContext; 6
7 import cn.baidu.controller.StudentController; 8 import cn.baidu.domain.Student; 9
10 public class StudentTest { 11
12 @Test 13 public void test(){ 14
15 // 初始化Spring容器
16 ApplicationContext context = new ClassPathXmlApplicationContext("spring.xml"); 17 // 獲取控制層對象
18 StudentController studentController = context.getBean(StudentController.class); 19 // 調用控制層方法
20 Student student = studentController.queryStudentById("c"); 21 System.out.println(student); 22
23 } 24
25
26 }
9.出現如下結果,說明Mybatis整合成功

1.2.4 將SpringMVC框架整合到Maven中
- 整體思路
1.在pom.xml文件中導入SpringMVC框架所需要的依賴資源和插件
2.在web.xml文件中創建前端控制器即dispatcherServlet
3.編寫springmvc的核心配置文件spring-mvc.xml,用於配置視圖解析器和打開mvc注解
4.如有一些靜態資源的訪問,也可在spring-mvc.xml文件中配置
- 在pom.xml配置文件中導入Tomcat插件
1.對於web項目,所有的內容都是由Tomcat容器啟動的,所以需要引入Tomcat插件
1 <!-- 引入Tomcat插件 -->
2 <plugin>
3 <groupId>org.apache.tomcat.maven</groupId>
4 <artifactId>tomcat7-maven-plugin</artifactId>
5 <version>2.2</version>
6 <!-- Tomcat的啟動配置 -->
7 <configuration>
8 <!-- 端口號訪問路徑默認80端口 -->
9 <port>80</port>
10 <!-- 應用程序的訪問路徑 -->
11 <path>/</path>
12 <!-- 接收數據編解碼的格式為utf-8 -->
13 <uriEncoding>utf-8</uriEncoding>
14 <useBodyEncodingForURI>utf-8</useBodyEncodingForURI>
15 </configuration>
16 </plugin>
注:如果不想引入Tomcat插件,將項目打成war包扔至外部Tomcat也可以,這里選擇導入插件
- 導入SpringMVC所需要的依賴
1.SpringMVC需要導入spring-web和spring-webmvc依賴
2.有時為了將對象轉化成json字符串,還需要Jackson依賴
1 <!-- 引入spring-web依賴 -->
2 <dependency>
3 <groupId>org.springframework</groupId>
4 <artifactId>spring-web</artifactId>
5 <version>4.3.7.RELEASE</version>
6 </dependency>
7 <!-- 引入spring-webMVC依賴 -->
8 <dependency>
9 <groupId>org.springframework</groupId>
10 <artifactId>spring-webmvc</artifactId>
11 <version>4.3.7.RELEASE</version>
12 </dependency>
13 <!-- 引入Jackson依賴 -->
14 <dependency>
15 <groupId>com.fasterxml.jackson.core</groupId>
16 <artifactId>jackson-core</artifactId>
17 <version>2.8.8</version>
18 </dependency>
19 <dependency>
20 <groupId>com.fasterxml.jackson.core</groupId>
21 <artifactId>jackson-databind</artifactId>
22 <version>2.8.8</version>
23 </dependency>
- 在Tomcat啟動加載的web.xml文件中,配置dispacherservlet
1.在dispacherservlet的配置中初始化spring*.xml文件,使得服務器加載spring的所有配置內容
2.讓服務器加載所有配置內容的目的是使得各層的注解生效,web.xml配置如下
1 <!DOCTYPE web-app PUBLIC 2 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" 3 "http://java.sun.com/dtd/web-app_2_3.dtd" >
4 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
5 xmlns="http://java.sun.com/xml/ns/javaee"
6 xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
7 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">
8 <display-name>Archetype Created Web Application</display-name>
9 <!-- 創建dispachersevlet -->
10 <servlet>
11 <servlet-name>springmvc</servlet-name>
12 <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
13 <!-- 配置初始化參數,使得Tomcat啟動的時候,加載spring*.xml文件 -->
14 <init-param>
15 <param-name>contextConfigLocation</param-name>
16 <param-value>classpath:spring*.xml</param-value>
17 </init-param>
18 </servlet>
19 <servlet-mapping>
20 <servlet-name>springmvc</servlet-name>
21 <url-pattern>/*</url-pattern>
22 </servlet-mapping>
23 <welcome-file-list>index.html</welcome-file-list>
24 </web-app>
- 在src/main/resources目錄下編寫spring-mvc.xml文件
1.文件中開啟mvc注解生效配置和視圖解析器的配置
1 <?xml version="1.0" encoding="UTF-8"?>
2 <beans xmlns="http://www.springframework.org/schema/beans"
3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4 xmlns:aop="http://www.springframework.org/schema/aop"
5 xmlns:tx="http://www.springframework.org/schema/tx"
6 xmlns:p="http://www.springframework.org/schema/p"
7 xmlns:util="http://www.springframework.org/schema/util"
8 xmlns:context="http://www.springframework.org/schema/context"
9 xmlns:mvc="http://www.springframework.org/schema/mvc"
10 xsi:schemaLocation=" 11 http://www.springframework.org/schema/beans 12 http://www.springframework.org/schema/beans/spring-beans.xsd 13 http://www.springframework.org/schema/aop 14 http://www.springframework.org/schema/aop/spring-aop.xsd 15 http://www.springframework.org/schema/tx 16 http://www.springframework.org/schema/tx/spring-tx.xsd 17 http://www.springframework.org/schema/util 18 http://www.springframework.org/schema/util/spring-util.xsd 19 http://www.springframework.org/schema/context 20 http://www.springframework.org/schema/context/spring-context.xsd 21 http://www.springframework.org/schema/mvc 22 http://www.springframework.org/schema/mvc/spring-mvc.xsd">
23 <!-- 靜態資源html js css訪問 -->
24 <mvc:resources location="/" mapping="/**"/>
25 <!-- springmvc開啟所有注解功能的標簽 -->
26
27 <mvc:annotation-driven/>
28
29 <!-- 視圖解析的前后綴 -->
30 <bean id="viewResovler"
31 class="org.springframework.web.servlet.view.InternalResourceViewResolver">
32 <!-- 前后綴拼接 -->
33 <property name="prefix" value="views/"/>
34 <property name="suffix" value=".html"></property>
35 </bean>
36 <!-- 以下配置可以解決springmvc返回數據的編解碼問題 -->
37 <bean class="org.springframework.http.converter.StringHttpMessageConverter">
38 <property name="supportMediaTypes" value="text/html;charset=utf-8"></property>
39 </bean>
40 </beans>
- 編寫測試代碼,測試SpringMvc整合是否成功
1.測試代碼實現的功能需求:通過瀏覽器,傳遞一個get的請求參數id=a/b/c
2.項目返回一個從數據庫查詢的student對象,頁面的瀏覽器展示
3.在整合mybatis測試代碼的基礎上,編寫該測試代碼,把之前的test類刪除
4.修改控制層的代碼,如下,其他的與mybatis測試代碼一致,不再展示
1 package cn.baidu.controller; 2
3 import org.springframework.beans.factory.annotation.Autowired; 4 import org.springframework.stereotype.Controller; 5 import org.springframework.web.bind.annotation.RequestMapping; 6 import org.springframework.web.bind.annotation.ResponseBody; 7
8 import cn.baidu.domain.Student; 9 import cn.baidu.service.StudentService; 10
11
12 @Controller 13 public class StudentController { 14
15 @Autowired 16 private StudentService studentService; 17
18 // 以下兩個注解,他們的作用分別是:將以下的方法變成處理器 19 // RequestBody是實現將返回的對象變成json字符串,展示在瀏覽器端
20 @RequestMapping("queryStudent") 21 @ResponseBody 22 public Student queryStudentById(String id){ 23 return studentService.queryStudentById(id); 24 } 25
26 }
5.啟動當前工程,運行Tomcat插件,在maven build中創建一個運行命令:goals:tomcat7:run


6.運行debuge/run的maven build的命令,啟動Tomcat出現如下信息說明啟動成功

7.在瀏覽器測試訪問localhost/queryStudent?id=a,出現如下的結果說明整合成功

8.完成了以上內容說明maven整合的SSM框架已將全部整合完畢
1.3 SSM框架整合總結
1.3.1 SSM框架整合整體配置文件和目錄結構展示
- 目錄結構如下:
1.磁盤中的目錄結構如下

2.eclipse中的目錄結構如下

- 整體配置文件
1.pom.xml整體配置文件
1 <project xmlns="http://maven.apache.org/POM/4.0.0" 2 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 3 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 4 <modelVersion>4.0.0</modelVersion> 5 <groupId>cn.baidu</groupId> 6 <artifactId>UER-ORDER-SSM</artifactId> 7 <packaging>war</packaging> 8 <version>0.0.1-SNAPSHOT</version> 9 <name>UER-ORDER-SSM Maven Webapp</name> 10 <url>http://maven.apache.org</url> 11 <dependencies> 12 <dependency> 13 <groupId>junit</groupId> 14 <artifactId>junit</artifactId> 15 <version>3.8.1</version> 16 <scope>test</scope> 17 </dependency> 18 <dependency> 19 <groupId>org.springframework</groupId> 20 <artifactId>spring-context</artifactId> 21 <version>4.3.7.RELEASE</version> 22 </dependency> 23 <!-- 連接池依賴 --> 24 <dependency> 25 <groupId>com.alibaba</groupId> 26 <artifactId>druid</artifactId> 27 <version>1.0.14</version> 28 </dependency> 29 <!-- jdbc依賴 --> 30 <dependency> 31 <groupId>org.springframework</groupId> 32 <artifactId>spring-jdbc</artifactId> 33 <version>4.3.7.RELEASE</version> 34 </dependency> 35 <!-- mysql依賴 --> 36 <dependency> 37 <groupId>mysql</groupId> 38 <artifactId>mysql-connector-java</artifactId> 39 <version>5.0.8</version> 40 </dependency> 41 <!-- mybatis依賴資源 --> 42 <dependency> 43 <groupId>org.mybatis</groupId> 44 <artifactId>mybatis</artifactId> 45 <version>3.4.5</version> 46 </dependency> 47 <!-- mybatis-spring依賴資源 --> 48 <dependency> 49 <groupId>org.mybatis</groupId> 50 <artifactId>mybatis-spring</artifactId> 51 <version>1.3.1</version> 52 </dependency> 53 <!-- 引入spring-web依賴 --> 54 <dependency> 55 <groupId>org.springframework</groupId> 56 <artifactId>spring-web</artifactId> 57 <version>4.3.7.RELEASE</version> 58 </dependency> 59 <!-- 引入spring-webMVC依賴 --> 60 <dependency> 61 <groupId>org.springframework</groupId> 62 <artifactId>spring-webmvc</artifactId> 63 <version>4.3.7.RELEASE</version> 64 </dependency> 65 <!-- 引入Jackson依賴 --> 66 <dependency> 67 <groupId>com.fasterxml.jackson.core</groupId> 68 <artifactId>jackson-core</artifactId> 69 <version>2.8.8</version> 70 </dependency> 71 <dependency> 72 <groupId>com.fasterxml.jackson.core</groupId> 73 <artifactId>jackson-databind</artifactId> 74 <version>2.8.8</version> 75 </dependency> 76 </dependencies> 77 <build> 78 <finalName>UER-ORDER-SSM</finalName> 79 <!-- source插件 --> 80 <plugins> 81 <plugin> 82 <groupId>org.apache.maven.plugins</groupId> 83 <artifactId>maven-compiler-plugin</artifactId> 84 <configuration> 85 <source>1.8</source> 86 <target>1.8</target> 87 <encoding>UTF-8</encoding> 88 </configuration> 89 </plugin> 90 <!-- 引入Tomcat插件 --> 91 <plugin> 92 <groupId>org.apache.tomcat.maven</groupId> 93 <artifactId>tomcat7-maven-plugin</artifactId> 94 <version>2.2</version> 95 <!-- Tomcat的啟動配置 --> 96 <configuration> 97 <!-- 端口號訪問路徑默認80端口 --> 98 <port>80</port> 99 <!-- 應用程序的訪問路徑 --> 100 <path>/</path> 101 <!-- 接收數據編解碼的格式為utf-8 --> 102 <uriEncoding>utf-8</uriEncoding> 103 <useBodyEncodingForURI>utf-8</useBodyEncodingForURI> 104 </configuration> 105 </plugin> 106 </plugins> 107 </build> 108 </project>
2.web.xml整體配置文件
1 <!DOCTYPE web-app PUBLIC 2 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" 3 "http://java.sun.com/dtd/web-app_2_3.dtd" > 4 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 5 xmlns="http://java.sun.com/xml/ns/javaee" 6 xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 7 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5"> 8 <display-name>Archetype Created Web Application</display-name> 9 <!-- 創建dispachersevlet --> 10 <servlet> 11 <servlet-name>springmvc</servlet-name> 12 <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 13 <!-- 配置初始化參數,使得Tomcat啟動的時候,加載spring*.xml文件 --> 14 <init-param> 15 <param-name>contextConfigLocation</param-name> 16 <param-value>classpath:spring*.xml</param-value> 17 </init-param> 18 </servlet> 19 <servlet-mapping> 20 <servlet-name>springmvc</servlet-name> 21 <url-pattern>/*</url-pattern> 22 </servlet-mapping> 23 <welcome-file-list>index.html</welcome-file-list> 24 </web-app>
3.spring.xml整體配置文件
1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns="http://www.springframework.org/schema/beans" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xmlns:aop="http://www.springframework.org/schema/aop" 5 xmlns:tx="http://www.springframework.org/schema/tx" 6 xmlns:p="http://www.springframework.org/schema/p" 7 xmlns:util="http://www.springframework.org/schema/util" 8 xmlns:context="http://www.springframework.org/schema/context" 9 xmlns:mvc="http://www.springframework.org/schema/mvc" 10 xsi:schemaLocation=" 11 http://www.springframework.org/schema/beans 12 http://www.springframework.org/schema/beans/spring-beans.xsd 13 http://www.springframework.org/schema/aop 14 http://www.springframework.org/schema/aop/spring-aop.xsd 15 http://www.springframework.org/schema/tx 16 http://www.springframework.org/schema/tx/spring-tx.xsd 17 http://www.springframework.org/schema/util 18 http://www.springframework.org/schema/util/spring-util.xsd 19 http://www.springframework.org/schema/context 20 http://www.springframework.org/schema/context/spring-context.xsd 21 http://www.springframework.org/schema/mvc 22 http://www.springframework.org/schema/mvc/spring-mvc.xsd"> 23 24 <!-- 開啟包掃描 --> 25 <context:component-scan base-package="cn.baidu"></context:component-scan> 26 <!-- 開啟注解DI --> 27 <context:annotation-config></context:annotation-config> 28 <!-- 配置數據源 --> 29 <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"> 30 <!-- 4個屬性,數據庫驅動,URL,用戶名和密碼 --> 31 <property name="driverClassName" value="com.mysql.jdbc.Driver"/> 32 <property name="url" value="jdbc:mysql:///mssm"/> 33 <property name="username" value="root"/> 34 <property name="password" value="041X"/> 35 </bean> 36 <!-- 配置sqlSession,動態代理實現持久層sqlSession接口實現的對象 --> 37 <bean id="sqlSession" class="org.mybatis.spring.SqlSessionFactoryBean"> 38 <!-- 綁定數據源即獲取connection對象 --> 39 <property name="dataSource" ref="dataSource"/> 40 <!-- 加載mybatis的獨立配置文件 --> 41 <property name="configLocation" value="classpath:mybatis-config.xml"/> 42 <!-- 掃描映射xxxMapper.xml映射文件 --> 43 <property name="mapperLocations" value="classpath:mapper/*.xml"/> 44 </bean> 45 <!-- 配置mapper接口的掃描配置用於創建mapper接口的實現類 --> 46 <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> 47 <property name="basePackage" value="cn.baidu.mapper"/> 48 </bean> 49 50 </beans>
4.mybatis-config.xml整體配置文件
1 <?xml version="1.0" encoding="UTF-8" ?> 2 <!DOCTYPE configuration 3 PUBLIC "-//mybatis.org//DTD Config 3.0//EN" 4 "http://mybatis.org/dtd/mybatis-3-config.dtd"> 5 <configuration> 6 <!-- 打開駝峰命名設置,用於封裝持久層數據對象的內容--> 7 <settings> 8 <setting name="mapUnderscoreToCamelCase" value="true"/> 9 </settings> 10 11 </configuration>
5.spring-mvc.xml整體配置文件
1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns="http://www.springframework.org/schema/beans" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xmlns:aop="http://www.springframework.org/schema/aop" 5 xmlns:tx="http://www.springframework.org/schema/tx" 6 xmlns:p="http://www.springframework.org/schema/p" 7 xmlns:util="http://www.springframework.org/schema/util" 8 xmlns:context="http://www.springframework.org/schema/context" 9 xmlns:mvc="http://www.springframework.org/schema/mvc" 10 xsi:schemaLocation=" 11 http://www.springframework.org/schema/beans 12 http://www.springframework.org/schema/beans/spring-beans.xsd 13 http://www.springframework.org/schema/aop 14 http://www.springframework.org/schema/aop/spring-aop.xsd 15 http://www.springframework.org/schema/tx 16 http://www.springframework.org/schema/tx/spring-tx.xsd 17 http://www.springframework.org/schema/util 18 http://www.springframework.org/schema/util/spring-util.xsd 19 http://www.springframework.org/schema/context 20 http://www.springframework.org/schema/context/spring-context.xsd 21 http://www.springframework.org/schema/mvc 22 http://www.springframework.org/schema/mvc/spring-mvc.xsd"> 23 <!-- 靜態資源html js css訪問 --> 24 <mvc:resources location="/" mapping="/**"/> 25 <!-- springmvc開啟所有注解功能的標簽 --> 26 27 <mvc:annotation-driven/> 28 29 <!-- 視圖解析的前后綴 --> 30 <bean id="viewResovler" 31 class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 32 <!-- 前后綴拼接 --> 33 <property name="prefix" value="views/"/> 34 <property name="suffix" value=".html"></property> 35 </bean> 36 <!-- 以下配置可以解決springmvc返回數據的編解碼問題 --> 37 <bean class="org.springframework.http.converter.StringHttpMessageConverter"> 38 <property name="supportMediaTypes" value="text/html;charset=utf-8"></property> 39 </bean> 40 </beans>
6.xxxMapper.xml整體配置文件,此配置文件多變,以下只是范例
1 <?xml version="1.0" encoding="UTF-8"?> 2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 3 "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> 4 <mapper namespace="cn.baidu.mapper.StudentMapper"> 5 <select id="queryOne" resultType="cn.baidu.domain.Student"> 6 select * from student where id=#{id}; 7 </select> 8 </mapper>
1.3.2 SSM整合易錯點
- 錯誤調試思路
1.在做整合的時候不免出現各種各樣的錯誤,大多都是不細心造成的
2.所以在遇見錯誤的時候,保持耐心,慢慢捋一捋思路
3.以下是本人調試錯誤的一些思路,僅供參考
-
- SSM框架整合出現異常,一般都是由前一個異常引起后面異常的拋出,所以查看異常的時候,查看報錯的第一句(第一句內容比較長)
- 例如報如下錯誤:出現異常按照以下紅色字體標識往下找,通常找到最后一行即可找到出錯導致的原因,或者某些關鍵字,按照其提示的關鍵字,自己到對應的地方仔細檢查,排查錯誤
-
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'studentController': Unsatisfied dependency expressed through field 'studentService'; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'studentServiceImp': Unsatisfied dependency expressed through field 'studentMapper'; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'studentMapper' defined in file [E:\workspace_v1\ORDER-USER-SSM\target\classes\cn\baidu\mapper\StudentMapper.class]: Unsatisfied dependency expressed through bean property 'sqlSessionFactory'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sqlSession' defined in class path resource [applicationContext.xml]: Invocation of init method failed; nested exception is org.springframework.core.NestedIOException: Failed to parse mapping resource: 'file [E:\workspace_v1\ORDER-USER-SSM\target\classes\mapper\studentMapper.xml]'; nested exception is org.apache.ibatis.builder.BuilderException: Error parsing Mapper XML. Cause: org.apache.ibatis.builder.BuilderException: Error resolving class. Cause: org.apache.ibatis.type.TypeException: Could not resolve type alias 'Student'. Cause: java.lang.ClassNotFoundException: Cannot find class: Student
-
錯誤原因:配置文件找不到Student類,說明在填寫配置文件全路徑可能寫錯了
- 解決方法:重新對Student類進行檢查,檢查配置文件中Student類的路徑是否寫正確
- 整合過程可能出現的普遍性錯誤
1.在添加pom內容的時候,工程可能會出現一個紅叉子,查看problem內容標簽,會報如下錯誤
-
- Description Resource Path Location TypeProject configuration is not up-to-date with pom.xml. Select:Maven->Update Project... from the project context menu or use QuickFix. ORDER-USER-SSM line1 Maven Configuration Problem
- 出錯原因:每當修改pom.xml文件時,工程可能會出現一個紅叉子,查看problem標簽會報出以上的錯誤
- 解決方法:更新maven項目即可

1.4 SSM框架開發用戶支付積分的單體系統
1.4.1 接口文件的介紹
- 為什么需要接口文件
- 作為后端開發人員,可以不具備前端的技術的(可以具備),但是必須能夠讀懂接口文件,因為接口文件是前端與后端的交流互通的文件(后端之間也有接口文件)
- 接口文件是為了協調工作中的各種信息溝通需要的一種規范文檔,前端的所有數據,信息交換規范都定義在接口文件中
- 接口文件的意義
- 在大型的團隊中,能夠實現高效的溝通
- 在團隊開發中接口文件是一種規范文檔,所以責任划分清晰
- 接口文件的格式
- 本文以以下項目的接口文件為例
- 實現用戶積分查詢功能和訂單支付積分的接口文件


- 接口文件分析:
- 通過請求地址,和請求參數就可以知道處理器要處理哪個訪問地址,即RequestMapping("/user/query/point")
- 通過請過請求參數就可以知道處理器要接收的參數
- 通過返回數據就可以知道處理器處理請求之后,要返回響應的數據類型
1.4.2 編寫一個利用SSM框架搭建的具有頁面效果的單體系統
- 項目需求
1.能夠查詢用戶的積分數:本文的前端頁面已經把user的id寫死
2.點擊訂單支付,完成訂單支付,根據用戶的支付金額和積分邏輯對用戶進行積分的增加
- 准備前端頁面數據的靜態文件
1.為了方便本文的前端頁面的請求數據是寫死的,本文所需的前端的資源會打包至文件中
2.添加前端資源到webapp目錄下,框住的為添加的前端資源,其目錄結構如下:
3.源文件資源:https://i.cnblogs.com/Files.aspx

- 向數據庫中添加數據
1.在mssm中創建t_user表格,現有如下字段和數據
1 //鍵表 2 //表中有用戶id,用戶名,用戶密碼,用戶的現有積分和用戶的等級 3 //0代表普通用戶 4 create table t_user (user_id varchar(255) primary key,user_name varchar(255),user_password varchar(255),points int,lev int); 5 //添加數據 6 insert into t_user values('1','Mr.Piao','123',0,0);
2.在mssm中創建t_order表格,現有如下字段和數據
1 create table t_order(order_id varchar(255)primary key,order_money int,user_id varchar(255)); 2 insert into values('a',5000,'1'),('b',6000,'1'),('c',9000,'1');
- 根據數據庫的表,編寫封裝數據的domain類
1.編寫User類,根據在框架中設置的駝峰命令
2.類中的屬性駝峰命名對應數據庫中類似user_id字段名稱"_"后面的字母的首字母變大寫
1 package cn.baidu.domain; 2 3 public class User { 4 private String userId; 5 private String userPassword; 6 private String userName; 7 private Integer points; 8 private Integer lev; 9 10 public User(){} 11 public User(String userId, String userPassword, String userName, Integer points, Integer lev) { 12 super(); 13 this.userId = userId; 14 this.userPassword = userPassword; 15 this.userName = userName; 16 this.points = points; 17 this.lev = lev; 18 } 19 20 public String getUserId() { 21 return userId; 22 } 23 24 public void setUserId(String userId) { 25 this.userId = userId; 26 } 27 28 public String getUserPassword() { 29 return userPassword; 30 } 31 32 public void setUserPassword(String userPassword) { 33 this.userPassword = userPassword; 34 } 35 36 public String getUserName() { 37 return userName; 38 } 39 40 public void setUserName(String userName) { 41 this.userName = userName; 42 } 43 44 public Integer getPoints() { 45 return points; 46 } 47 48 public void setPoints(Integer points) { 49 this.points = points; 50 } 51 52 public Integer getLev() { 53 return lev; 54 } 55 56 public void setLev(Integer lev) { 57 this.lev = lev; 58 } 59 60 @Override 61 public String toString() { 62 return "User [userId=" + userId + ", userPassword=" + userPassword + ", userName=" + userName + ", points=" 63 + points + ", lev=" + lev + "]"; 64 } 65 66 67 }
3.編寫Order類
1 package cn.baidu.domain; 2 3 public class Order { 4 5 private String orderId; 6 private Integer orderMoney; 7 private String userId; 8 9 public Order(){} 10 public Order(String orderId, Integer orederMoney, String userId) { 11 super(); 12 this.orderId = orderId; 13 this.orderMoney = orederMoney; 14 this.userId = userId; 15 } 16 17 public String getOrderId() { 18 return orderId; 19 } 20 21 public void setOrderId(String orderId) { 22 this.orderId = orderId; 23 } 24 25 public Integer getOrederMoney() { 26 return orderMoney; 27 } 28 29 public void setOrederMoney(Integer orederMoney) { 30 this.orderMoney = orederMoney; 31 } 32 33 public String getUserId() { 34 return userId; 35 } 36 37 public void setUserId(String userId) { 38 this.userId = userId; 39 } 40 41 @Override 42 public String toString() { 43 return "Order [orderId=" + orderId + ", orederMoney=" + orderMoney + ", userId=" + userId + "]"; 44 } 45 46 47 }
- 根據接口文件編寫查詢用戶積分功能的代碼
1.編寫控制層代碼
1 package cn.baidu.controller; 2
3 import org.springframework.beans.factory.annotation.Autowired; 4 import org.springframework.stereotype.Controller; 5 import org.springframework.web.bind.annotation.RequestMapping; 6 import org.springframework.web.bind.annotation.ResponseBody; 7
8 import cn.baidu.domain.User; 9 import cn.baidu.service.UserService; 10
11 @Controller 12 public class UserController { 13
14 @Autowired 15 private UserService userService; 16
17 // 用戶積分的查詢,由前端頁面分析結果可知,請求地址為/user/query/point 18 // 前端的請求參數為:String userId 19 // 前端需要的返回數據是:對象json字符,而且對象至少有一個屬性points
20 @RequestMapping("/user/query/point") 21 @ResponseBody 22 public User queryUserPoint(String userId){ 23 return userService.queryUserPoint(userId); 24 } 25 }
2.編寫業務層接口代碼
1 package cn.baidu.service; 2
3 import cn.baidu.domain.User; 4
5 public interface UserService { 6
7 public User queryUserPoint(String userId); 8
9 }
3.編寫業務層實現類代碼
1 package cn.baidu.service; 2
3 import org.springframework.beans.factory.annotation.Autowired; 4 import org.springframework.stereotype.Service; 5
6 import cn.baidu.domain.User; 7 import cn.baidu.mapper.UserMapper; 8
9 @Service 10 public class UserServiceImp implements UserService{ 11
12 @Autowired 13 private UserMapper userMapper; 14
15 @Override 16 public User queryUserPoint(String userId) { 17
18 return userMapper.queryOne(userId); 19 } 20
21 }
4.編寫UserMapper接口類
1 package cn.baidu.mapper; 2
3 import cn.baidu.domain.User; 4
5 public interface UserMapper { 6
7 public User queryOne(String userId); 8 //更新用戶積分的方法,后面會用到
9 public void updateUserPoint(Integer money); 10
11 }
5.編寫UserMapper映射文件
1 <?xml version="1.0" encoding="UTF-8"?>
2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 3 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
4 <mapper namespace="cn.baidu.mapper.UserMapper">
5 <select id="queryOne" resultType="cn.baidu.domain.User">
6 select * from t_user where user_id=#{userId}; 7 </select>
8 <!-- 更新用戶積分的sql語句 -->
9 <update id="updateUserPoint" parameterType="int">
10 update t_user set points=points+#{money} where user_id=1; 11 </update>
12 </mapper>
- 根據接口文件訂單支付與積分的修改
1.編寫控制層代碼
1 package cn.baidu.controller; 2
3 import org.springframework.beans.factory.annotation.Autowired; 4 import org.springframework.stereotype.Controller; 5 import org.springframework.web.bind.annotation.RequestMapping; 6 import org.springframework.web.bind.annotation.ResponseBody; 7
8 import cn.baidu.service.OrderService; 9
10 @Controller 11 public class OrderController { 12
13 @Autowired 14 private OrderService orderService; 15
16 @RequestMapping("/order/pay") 17 @ResponseBody 18 public Integer orderPay(String orderId){ 19
20 // 通過異常來判斷是否支付成功,有異常說明支付失敗,1表示成功,其他數表示支付失敗
21 try { 22 // 調用業務層完成支付增加積分
23 orderService.orderPay(orderId); 24 return 1; 25 } catch (Exception e) { 26 e.printStackTrace(); 27 return 0; 28 } 29 } 30
31 }
2.編寫業務層接口代碼
1 package cn.baidu.service; 2
3 public interface OrderService { 4
5 public void orderPay(String orderId); 6
7 }
3.編寫業務層代碼
1 package cn.baidu.service; 2 3 import org.springframework.beans.factory.annotation.Autowired; 4 import org.springframework.stereotype.Service; 5 6 import cn.baidu.domain.Order; 7 import cn.baidu.mapper.OrderMapper; 8 import cn.baidu.mapper.UserMapper; 9 10 @Service 11 public class OrderServiceImp implements OrderService{ 12 13 @Autowired 14 private OrderMapper orderMapper; 15 @Autowired 16 private UserMapper userMapper; 17 18 // 寫支付邏輯,有異常支付失敗,沒有異常支付成功 19 @Override 20 public void orderPay(String orderId) { 21 22 // 隨便定義一個無異常的輸出 23 System.out.println("支付成功"); 24 25 // 定義積分業務邏輯,根據用戶支付的訂單價錢,增加用戶的積分 26 // 查詢訂單的信息,獲取價錢金額 27 Order order = orderMapper.queryOrder(orderId); 28 29 System.out.println(order); 30 Integer money = order.getOrederMoney(); 31 System.out.println(money); 32 // 根據獲取的用戶支付金額,修改用戶的積分 33 userMapper.updateUserPoint(money); 34 } 35 36 }
4.編寫OrderMapper接口
1 package cn.baidu.mapper; 2
3 import cn.baidu.domain.Order; 4
5 public interface OrderMapper { 6
7 public Order queryOrder(String orderId); 8
9 }
5.編寫OrderMapper映射文件
1 <?xml version="1.0" encoding="UTF-8"?>
2 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" 3 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
4 <mapper namespace="cn.baidu.mapper.OrderMapper">
5 <select id="queryOrder" resultType="cn.baidu.domain.Order">
6 select * from t_order where order_id=#{orderId}; 7 </select>
8 </mapper>
- 啟動內置Tomcat瀏覽器訪問:localhost/index.html
1.點擊支付訂單和查看積分,如果積分隨訂單支付而改變說明功能實現完成
2.數據庫的數據也會發生變化


- 注意點:
1.在測試代碼的過程中,可能會出現報500錯誤

-
- 解決方法:按照控制台的異常軌跡,可知,將spring-mvc.xml文件中的配置解決springmvc返回數據的編解碼問題的代碼注釋掉即可

2.單體系統的問題
-
- 在編寫單體系統的時候發現代碼中出現功能強耦合的問題及訂單的支付與用戶積分的更新耦合在一起了
- 此外SSM框架配置比較繁瑣,而且當出現高並發的時候,一台服務器是承受不了訪問壓力的
- 為了解決高並發和動態資源和靜態資源分離的問題就產生了nginx技術
- 為了解決功能強耦合和配置繁瑣的問題就產生了springboot
- 本人會在今后的博文中對這兩門技術進行介紹
- demo和項目的源文件資源:https://i.cnblogs.com/Files.aspx
