1. 程式人生 > >使用maven與MyEclipse整合ssm(Spring MVC、Spring、Mybatis)三大框架並實現使用者註冊(環境搭載+例項原始碼下載)

使用maven與MyEclipse整合ssm(Spring MVC、Spring、Mybatis)三大框架並實現使用者註冊(環境搭載+例項原始碼下載)

相對於ssh(Struts2、Spring、hibernate),ssm(Spring MVC、Spring、mybatis)可能會更受歡迎。本文主要分兩部分:ssm框架的整合、註冊案例的實現

所用到的框架及資料庫對應的版本:

資料庫: MySQL

Spring:3.2.8

Mybatis:3.2.8


一、資料庫準備:

建立一個名為“ssmdemo”的資料庫與使用者表,其中id為主鍵並自增長:

create DATABASE ssmdemo;
USE ssmdemo;
-- ----------------------------
-- Table structure for t_user
-- ----------------------------
DROP TABLE IF EXISTS `t_user`;
CREATE TABLE `t_user` (
  `id` bigint(20) NOT NULL auto_increment,
  `username` varchar(10) NOT NULL,
  `password` varchar(20) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of t_user
-- ----------------------------
INSERT INTO `t_user` VALUES ('1', '張三', '123456');

二、使用maven建立一個名為“SSHDemo”的javaweb專案

1.在D盤根目錄下,建立一個名為“beauxie”的資料夾,在beauxie資料夾下,開啟cmd命令視窗(按住shift鍵,右鍵點選資料夾空白處,選擇“在此處開啟命令視窗”),輸入:

mvn archetype:generate -DgroupId=com.beauxie-DartifactId=SSMDemo -DarchetypeArtifactId=maven-archetype-webapp -DinteractiveMode=false -DarchetypeCatalog=internal,如下圖所示:

成功以後,beauxie檔案目錄下多了一個名為“SSMDemo”的資料夾,檢視SSMDemo檔案,如下圖所示:

2.其實此刻檢視src資料夾,裡面是沒有src/main/java資料夾的,自己可以動手新建,但我在這裡,利用mvn命令生成一個普通的java專案(包名一定要一致),然後再把那兩個資料夾複製過來,命令如下:

 mvn archetype:generate -DgroupId=com.beauxie  -DartifactId=test1 -DinteractiveMode=false  -DarchetypeCatalog=internal

生成一個名為test1的普通java專案以後,複製src目錄下的兩個資料夾,然後直接覆蓋SSMDemo的src目錄下的main資料夾。

3.使用MAVEN命令生成可以匯入eclipse中的相關檔案

完成以上步驟,還是是無法將該專案匯入MyEclipse,因為沒有eclipse專案的相關檔案,因此使用maven命令生成相關檔案,在SSMDemo目錄下(注意不是beauxie目錄!),開啟cmd命令視窗,輸入:

mvn eclipse:eclipse

如下所示:

命令執行完以後,SSMDemo資料夾如下:

4.將該專案匯入Myeclipse中,匯入以後如下所示:

注:src/test/java用於存放測試程式碼,src/main/java用於存放主要程式碼,src/main/resources主要用於存放配置檔案。

三、搭載SSM環境

(一)SSM以及相關依賴配置

SSM的引入主要是在pom.xml檔案中配置,可以一個個來配置,也可以一次性配置完畢,依賴查詢網站:

http://mvnrepository.com/(可以在該網站中查詢各種jar的支援)
1.增加Spring與Spring MVC依賴
在pom.xml的<dependencies>下,增加以下配置:
<!-- spring與Spring MVC的依賴配置 -->
    <!-- https://mvnrepository.com/artifact/org.springframework/spring-web -->
	<dependency>
	    <groupId>org.springframework</groupId>
	    <artifactId>spring-web</artifactId>
	    <version>3.2.8.RELEASE</version>
	</dependency>
	
	<!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc -->
	<dependency>
	    <groupId>org.springframework</groupId>
	    <artifactId>spring-webmvc</artifactId>
	    <version>3.2.8.RELEASE</version>
	</dependency>
		
	<!-- https://mvnrepository.com/artifact/org.springframework/spring-tx -->
	<dependency>
	    <groupId>org.springframework</groupId>
	    <artifactId>spring-tx</artifactId>
	    <version>3.2.8.RELEASE</version>
	</dependency>
	
	<!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc -->
	<dependency>
	    <groupId>org.springframework</groupId>
	    <artifactId>spring-jdbc</artifactId>
	    <version>3.2.8.RELEASE</version>
	</dependency>
(增加以上程式碼以後,可以在SSMDemo資料夾目錄下,開啟cmd執行 mvn eclipse:eclipse 命令,執行成功以後,再在MyEclipse中重新整理專案,則會看到spring已經成功引入,也可以一次性配置完以後,再進行這個操作)
2.增加mybatis依賴
<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
	<dependency>
	    <groupId>org.mybatis</groupId>
	    <artifactId>mybatis</artifactId>
	    <version>3.2.8</version>
	</dependency>
3.增加mybatis-spring依賴
	<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis-spring -->
	<dependency>
	    <groupId>org.mybatis</groupId>
	    <artifactId>mybatis-spring</artifactId>
	    <version>1.2.2</version>
	</dependency>
4.由於涉及到資料庫操作,因此需要增加資料庫相關依賴:
<!-- https://mvnrepository.com/artifact/com.mchange/c3p0 -->
	<dependency>
	    <groupId>com.mchange</groupId>
	    <artifactId>c3p0</artifactId>
	    <version>0.9.5.2</version>
	</dependency>
	
	<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
	<dependency>
	    <groupId>mysql</groupId>
	    <artifactId>mysql-connector-java</artifactId>
	    <version>5.1.26</version>
	</dependency>
5.增加servlet與jstl標籤依賴:
<!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>javax.servlet-api</artifactId>
			<version>3.1.0</version>
		</dependency>

		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>jstl</artifactId>
			<version>1.2</version>
		</dependency>

		<dependency>
			<groupId>taglibs</groupId>
			<artifactId>standard</artifactId>
			<version>1.1.2</version>
		</dependency>
6.增加日誌列印依賴:
<!-- 日誌列印支援 -->
		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-log4j12</artifactId>
			<version>1.7.2</version>
		</dependency>
		<dependency>
			<groupId>log4j</groupId>
			<artifactId>log4j</artifactId>
			<version>1.2.17</version>
		</dependency>

所有相關依賴配置完畢,整個pom.xml檔案內容如下:
<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/maven-v4_0_0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>com.beauxie</groupId>
	<artifactId>SSMDemo</artifactId>
	<packaging>war</packaging>
	<version>1.0-SNAPSHOT</version>
	<name>SSMDemo Maven Webapp</name>
	<url>http://maven.apache.org</url>
	<dependencies>

		<!-- 測試依賴 ,預設版本是3.8.1,在這裡改為4.12 -->
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>4.12</version>
			<scope>test</scope>
		</dependency>

		<!-- spring與Spring MVC的依賴配置 -->
		<!-- https://mvnrepository.com/artifact/org.springframework/spring-web -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-web</artifactId>
			<version>3.2.8.RELEASE</version>
		</dependency>

		<!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-webmvc</artifactId>
			<version>3.2.8.RELEASE</version>
		</dependency>

		<!-- https://mvnrepository.com/artifact/org.springframework/spring-tx -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-tx</artifactId>
			<version>3.2.8.RELEASE</version>
		</dependency>

		<!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-jdbc</artifactId>
			<version>3.2.8.RELEASE</version>
		</dependency>

		<!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis</artifactId>
			<version>3.2.8</version>
		</dependency>

		<!-- https://mvnrepository.com/artifact/com.mchange/c3p0 -->
		<dependency>
			<groupId>com.mchange</groupId>
			<artifactId>c3p0</artifactId>
			<version>0.9.5.2</version>
		</dependency>

		<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>5.1.26</version>
		</dependency>

		<!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>javax.servlet-api</artifactId>
			<version>3.1.0</version>
		</dependency>

		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>jstl</artifactId>
			<version>1.2</version>
		</dependency>

		<dependency>
			<groupId>taglibs</groupId>
			<artifactId>standard</artifactId>
			<version>1.1.2</version>
		</dependency>

		<!-- 日誌列印支援 -->
		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-log4j12</artifactId>
			<version>1.7.2</version>
		</dependency>
		<dependency>
			<groupId>log4j</groupId>
			<artifactId>log4j</artifactId>
			<version>1.2.17</version>
		</dependency>

	</dependencies>
	<build>
		<finalName>SSMDemo</finalName>
		<plugins>
			<!-- jetty外掛 -->
			<plugin>
				<groupId>org.mortbay.jetty</groupId>
				<artifactId>maven-jetty-plugin</artifactId>
				<version>6.1.5</version>
			</plugin>
		</plugins>
	</build>
</project>
在SSMDemo資料夾目錄下(不是beauxie目錄!),開啟cmd執行 mvn eclipse:eclipse 命令,執行成功以後,再在MyEclipse中重新整理專案,則會看到以上配置相關的jar包,如下所示:


(二)SSM配置

1.web.xml的配置,如下:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
  <display-name>SSMDeno</display-name>
  <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:applicationContext.xml</param-value>
  </context-param>
  
  <servlet>
  	<servlet-name>spring</servlet-name>
  	<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  	<load-on-startup>1</load-on-startup>
  </servlet>
  
  <!-- 只對字尾為.do的請求進行處理 -->
  <servlet-mapping>
  	<servlet-name>spring</servlet-name>
  	<url-pattern>*.do</url-pattern>
  </servlet-mapping>
</web-app>
2.在WEB-INF目錄下(與web.xml同級),新建一個名為“spring-servlet.xml”的檔案,主要用於Spring MVC的管理內容如下:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xmlns:tx="http://www.springframework.org/schema/tx"
    xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd">

    <!-- 掃描包 -->
    <context:component-scan base-package="com.beauxie.controller"></context:component-scan>
    <mvc:annotation-driven></mvc:annotation-driven>
    
    <!-- 檢視解析器 -->
    <!-- 配置檢視解析器 -->
    <!-- json的解析器 -->
    <!-- 檔案上傳解析器 -->
</beans>

3.在src/main/resources目錄下新建一個名為“SqlMapConfig.xml”檔案,這是Spring的配置檔案,內容如下:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
  PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
  "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<typeAliases>
    <!-- 別名就是簡單類名(預設是類名,首字母小寫,比如User類的別名就是user) -->
    <package name="com.beauxie.domain"/>  
    <!-- <typeAlias type="com.beauxie.domain.User" alias="user"/>-->
</typeAliases>
</configuration>

4.在src/main/resources目錄下新建一個名為“applicationContext.xml”檔案,這是Spring的配置檔案,內容如下:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:p="http://www.springframework.org/schema/p"
	xmlns:context="http://www.springframework.org/schema/context"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd">

	<!--掃描包-->
	<context:component-scan base-package="com.beauxie"></context:component-scan>
	
	<!-- 配置資料來源 -->
	<!-- c3p0資料來源的bean -->
	<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
		<!-- jdbc:mysql://localhost:3306/ssmdemo -->
		<!-- 本地資料庫可以省略localhost:3306 -->
		<property name="jdbcUrl" value="jdbc:mysql:///ssmdemo">
		</property>
		<property name="driverClass" value="com.mysql.jdbc.Driver"></property>
		<property name="user" value="root"></property>
		<property name="password" value="root"></property>
		
		<property name="acquireIncrement" value="3"></property>
		<property name="initialPoolSize" value="10"></property>
		<property name="minPoolSize" value="2"></property>
		<property name="maxPoolSize" value="10"></property>
	</bean>
	
	<!-- sqlSessionFactory -->
	<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
		<!-- mybatis的全域性配置檔案的路徑 -->
		<property name="configLocation" value="classpath:SqlMapConfig.xml"></property>
		<property name="dataSource" ref="dataSource"></property>
	</bean>
	
	<!-- 
	mapper批量掃描,從mapper包中掃描出mapper介面,自動建立代理物件。
	遵循規範:將mapper.java和mapper.xml對映檔案保持檔名一致,並且在同一個包下面
	在spring中把自動掃描出來的介面作為bean的id(首字母小寫)
	 -->
	<!-- mapper掃描器 -->
	<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
		<!-- 指定掃描的包名
		如果掃描多個包,每個包中間用逗號分隔
		 -->
		<property name="basePackage" value="com.beauxie.dao"></property>
		<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
		
	</bean>
</beans>

至此三大框架整合完畢,為了檢查在搭載環境過程中是否存在錯誤,可以將該專案新增到伺服器中,並執行,看是否報錯。

5.使用MyEclipse執行MAVEN專案

使用MAVEN命令構建的javaweb專案是不能被MyEclipse識別的,因此是不能被直接新增到伺服器中,可以採取以下措施:

選中專案,右鍵點選“Run As”-->"Run Configurations"-->"Maven Build"-->"New_configuration ",確認“Base_directory”一欄中選中的是SSMDemo,其中Goals一欄輸入:"jettty:run"或“tomcat:run”,表示用jetty或tomcat伺服器來執行,(由於在之前已經增加過jetty外掛,所以用jetty執行也是可以的,而且jetty修改埠比較方便,啟動速度要比tomcat快)如下圖所示:


點選“Run”,執行結果如下所示:

6.埠衝突異常的解決(如果伺服器正常執行,沒有報異常,請忽略此步)

如果出現“Exception in thread "main" java.lang.IllegalStateException: port :8080 already in use!”,說明埠被佔用,如果使用jetty執行,可以在“Run Configurations”修改伺服器埠,然後再點選“Run”,如下所示:

四、案例:簡單的模仿使用者註冊

所有包以及檔案如下所示,其中在dao層開發時要特別注意,如下圖所示:

1.User類,裡面的欄位應當與t_user表中的欄位保持一致,如果不一致需要另行配置,比較麻煩,程式碼如下:

package com.beauxie.domain;

/**
 * @author Beauxie 
 * 對應t_user表,User類中的屬性儘量與t_user表中的欄位相同,除非另外配置
 */
public class User {

    private int id;// 使用者id
    private String username;// 使用者名稱
    private String password;// 使用者密碼

    public User() {
        super();
    }

    public int getId() {
        return id;
    }

    public String getUsername() {
        return username;
    }

    public String getPassword() {
        return password;
    }

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

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

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

    /**
     * 重寫toString方法,用以列印User物件
     */
    @Override
    public String toString() {
        return "User [id=" + id + ", username=" + username + ", password="
                + password + "]";
    }
    
    
}


2. 定義一個名叫"UserMapper.java"的介面,結合UserMapper.xml配置檔案對資料庫進行操作,裡面主要有兩個抽象方法,程式碼如下:
package com.beauxie.dao;

import com.beauxie.domain.User;

/**
 * UserMapper介面,結合UserMapper.xml檔案對資料庫進行操作
 * @author Beauxie
 */
public interface UserMapper {
	
	
	/**根據使用者Id查詢使用者
	 * @param id
	 * @return User
	 */
	User findUserById(int id);
	
	/**向資料庫中新增一條使用者資訊
	 * @param user
	 * @return int
	 */
	int addUser(User user);

}

3.對應的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名稱空間,是為了分類管理SQL -->
<mapper namespace="com.beauxie.dao.UserMapper">

      <!-- 根據使用者id查詢使用者資訊,這裡select標籤中的id應當與UserMapper介面中對應的方法名相同 -->
      <!-- _int 表示int型別,也可以用string,resultType是返回值型別,
                    由於在SqlMapConfig.xml中已經配置過別名,因此在這裡直接用user表示User物件-->
	<select id="findUserById" parameterType="_int"
		resultType="user">
		select * from t_user where id=#{id}
	</select>
	
	<!-- 新增一條新記錄,預設返回值是int,無法修改 -->
	<insert id="addUser" parameterType="user" >
		insert into t_user(username,password) values(#{username},#{password})
	</insert>
</mapper>
4.在src/test/java寫建一個測試類用以測試配置是否正確,程式碼如下:
package com.beauxie.user;

import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.beauxie.dao.UserMapper;
import com.beauxie.domain.User;

/**
 * @author Beauxie
 *
 */
public class UserTest {
	
	/**
	 * 測試findUserById方法
	 */
	@Test
	public void findUserById(){
		
		//載入配置檔案
		ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
		
		//生成一個代理物件
		UserMapper userMapper = context.getBean(UserMapper.class);
		
		//呼叫方法,返回一個User物件
		User user = userMapper.findUserById(1);
		
		//輸出結果
		System.out.println(user);
	}
	/**
	 * 測試addUser方法
	 */
	@Test
	public void addUser(){
		
		ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
		UserMapper userMapper = context.getBean(UserMapper.class);
		User user =new User();
		user.setUsername("李四");
		user.setPassword("123456");
		
		int result  = userMapper.addUser(user);
		
		System.out.println(result);
	}

}

5.在控制檯輸出sql語句(可以忽略此步)

在執行以上的Test類之前,可以在src/main/resources下(與applicationContext同級)增加一個名為“log4j.xml”的檔案,用以在控制檯輸出sql語句,log4j.xml程式碼如下:

<?xml version="1.0" encoding="UTF-8"?>  
<!DOCTYPE log4j:configuration PUBLIC "-//APACHE//DTD LOG4J 1.2//EN" "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
	<!-- [控制檯STDOUT] -->
	<appender name="console" class="org.apache.log4j.ConsoleAppender">
		<param name="encoding" value="UTF-8" />

		<param name="target" value="System.out" />
		<layout class="org.apache.log4j.PatternLayout">
			<param name="ConversionPattern" value="[%d{yyyy-MM-dd HH:mm:ss}][%-5p]%F:%L - %m%n" />
		</layout>
	</appender>

	<!-- 為了列印呼叫dao層的SQL語句 -->
	<logger name="com.beauxie.dao" additivity="false">

		<level value="DEBUG"></level>
		<appender-ref ref="console" />
	</logger>
	<!-- Root Logger -->
	<root>
		<!-- WARN DEBUG -->
		<level value="WARN"></level>
		<appender-ref ref="console" />
	</root>
</log4j:configuration>

6.Test類中的測試結果

findUserById方法測試結果:


addUser方法測試結果:


以上結果說明至此檔案配置沒有錯。

7.service層的UserService類程式碼如下:

package com.beauxie.service;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.beauxie.dao.UserMapper;
import com.beauxie.domain.User;

/**
 * @author Beauxie
 */
@Service//Spring管理
public class UserService {
	
	@Autowired//自動注入
	private UserMapper userMapper;
	
	/**向資料庫中新增一條使用者資訊
	 * @param user
	 * @return int
	 */
	public int addUser(User user){
		
		return userMapper.addUser(user);
	}
}

8.controller層的UserController類,程式碼如下:
package com.beauxie.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

import com.beauxie.domain.User;
import com.beauxie.service.UserService;

/**
 * @author Beauxie
 */
@Controller
public class UserController {
	
	@Autowired
	private UserService userService;
	
	/**
	 * 跳轉到msg.jsp頁面
	 * @param model 
	 * @param user 封裝前臺傳來的引數,包括username、password
	 * @return String
	 */
	@RequestMapping("/user/addUser")
	public String addUser(Model model,User user){
		
		int result = userService.addUser(user);
		
		if(result>0){
			//將提示資訊存入域中,用以前臺顯示
			model.addAttribute("msg","恭喜您,註冊成功!<br>註冊名:"+user.getUsername());
		}else{
			model.addAttribute("msg","伺服器異常,註冊失敗!");
		}
		return "/msg.jsp";
	}

}

9.index.jsp(註冊介面)中的程式碼如下:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
	String path = request.getContextPath();
	String basePath = request.getScheme() + "://"
			+ request.getServerName() + ":" + request.getServerPort()
			+ path + "/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">

<title>歡迎註冊</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->
</head>

<body>
	<!--  請求後面一定要加.do字尾,因為配置的是隻攔截所有以.do為字尾的請求!-->
	<form action="${pageContext.request.contextPath }/user/addUser.do" method="POST">
	<!-- 使用者名稱與密碼的name必須與User類中的屬性保持一致,不然不會自動裝配!-->
		使用者名稱:<input type="text" name="username"><br>
		 密  碼:<input type="password" name="password"><br>
		<input type="submit" value="註冊">
	</form>
</body>
</html>

10.msg.jsp用於訊息提示,程式碼如下:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
	String path = request.getContextPath();
	String basePath = request.getScheme() + "://"
			+ request.getServerName() + ":" + request.getServerPort()
			+ path + "/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">

<title>訊息提示</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->
</head>

<body>
	${msg }
</body>
</html>

11.結果測試

執行伺服器,開啟瀏覽器,訪問"http://localhost:8888/SSMDemo/",輸入使用者名稱與密碼,點選註冊,執行結果如下:

到此,ssm三大框架的整合及簡單的註冊案例就已經完成了。

五、總結

1.在使用MAVEN命令時,一定要主要在哪個資料夾下;

2.在pom.xml增加依賴時,注意框架的版本,建議使用統一的版本;

3.在配置三大框架時,一定要細心,往往細節問題會折騰很久;

4.在使用Mybatis框架時,dao層的介面必須以Mapper結尾;

5.對應的Mapper.xml必須與它對應的介面名相同。且存放在src/main/resources下,包名必須一致!

6.Mapper.xml中標籤中的id必須與對應介面中的抽象方法名一致!

6.不要忘記註解。

六、例項原始碼下載