1. 程式人生 > >SSM整合教程(MAVEN,相當的詳細,細節)

SSM整合教程(MAVEN,相當的詳細,細節)

目錄

六,控制層測試和檢視層測試

七,注意事項

九,關於資料庫:自己建立一個數據庫,建立表,以及修改資料來源。

前言:跟著我的思路走,應該可以成功的完成一個SSM框架的整合

  使用maven來構建專案的話,首先不用自己去導包之類的,使用eclipse中自帶的maven或者你下載的maven都行,之前的文章也都瞭解關於maven知識。第一步主要做的事情就是修改jdk的版本。

這是我剛構建的maven專案的目錄結構(J2SE-1.5),其中就確實了java和test,不需要我們去自己建立,修改版本號就可以。

還以一個地方就是這兒

這兩個地方改完之後我們的maven專案就算完成了,完成之後的目錄就夠是這樣的。

這裡報錯的原因是,index.jsp報錯,因為我們沒有匯入servlet的依賴,但是沒有任何的影響,接下來就是我們要做的正經事情。

首先我們來理一下這裡邊我們到底要新增多少依賴。

第一組:spring web ,spring webmvc ,spring jdbc

第二組:mybatis , mybatis spring 

第三組: servlet , jstl , mysql connector(必須或者 oracle的驅動),json

第三組呢,主要是方便學習用的,可有可無。

看一下主要的依賴。

<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.j2ee</groupId>
	<artifactId>ProSSM</artifactId>
	<packaging>war</packaging>
	<version>0.0.1-SNAPSHOT</version>
	<name>ProSSM Maven Webapp</name>
	<url>http://maven.apache.org</url>
	<dependencies>
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>3.8.1</version>
			<scope>test</scope>
		</dependency>
		<!-- spring web -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-web</artifactId>
			<version>5.0.8.RELEASE</version>
		</dependency>

		<!-- spring web mvc -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-webmvc</artifactId>
			<version>5.0.8.RELEASE</version>
		</dependency>

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

		<!-- mybatis -->
		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis</artifactId>
			<version>3.4.6</version>
		</dependency>

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

		<!-- servlet -->
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>javax.servlet-api</artifactId>
			<version>4.0.1</version>
			<scope>provided</scope>
		</dependency>
		<!-- jstl -->
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>jstl</artifactId>
			<version>1.2</version>
		</dependency>

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

		<dependency>
			<groupId>com.alibaba</groupId>
			<artifactId>fastjson</artifactId>
			<version>1.2.32</version>
		</dependency>

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



	</dependencies>
	<build>
		<finalName>ProSSM</finalName>
	</build>
</project>

當然這些依賴全部新增儲存之後,我們來看一下Jar包

在resources的檔案下,建立spring.xml

    1.各種xsd檔案的url
    2.自動掃秒的包(包中是類的使用自動掃描  是介面的使用bean掃描)
    3.資料來源    
    4.會話工廠
    5.事務管理
    6.試圖解析器

以上就是我們基本上要新增的內容。spring.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    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/mvc
       http://www.springframework.org/schema/mvc/spring-mvc.xsd
       http://www.springframework.org/schema/tx
       http://www.springframework.org/schema/tx/spring-tx.xsd">
       
      <!-- 檢視解析器 -->
      <bean id="idvr" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
      	<property name="suffix" value=".jsp" />
        <property name="prefix" value="/" />
      </bean>
      
      <!-- 資料來源 -->
      <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
      	<property name="driverClassName" value="com.mysql.jdbc.Driver" />
      	<property name="url" value="jdbc:mysql://localhost:3306/democ" />
      	<property name="username" value="root" />
      	<property name="password" value="a123456" />
      </bean>
 
      <!-- 會話工廠 -->
      <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
      		<property name="dataSource" ref="dataSource"></property>
<property name="mapperLocations" value="classpath:mapper/*.xml"/>
      </bean>
      
      <!-- 事務管理 -->
      <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
      	<property name="dataSource" ref="dataSource" />
      </bean>
      <!-- 通過註解 -->
      <tx:annotation-driven transaction-manager="transactionManager"/>
      <!-- 自動掃描 -->
      <mvc:annotation-driven />
      <context:annotation-config/>
      <context:component-scan base-package="bizImpl"/>
      <context:component-scan base-package="controller"/>
      
      <!-- 掃描mapper的內容  因為mapper是介面    代理類  需要sqlSessionFactory引數-->
      <bean id="msc" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
      	<property name="basePackage" value="mapper" />
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
      </bean>

</beans>

平時我們可能不需要引數之類的,因為他自動會去載入 XXX-servlet.xml在WEB_INF目錄下,這次我們來自己指定。

<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
  <display-name>Archetype Created Web Application</display-name>
  <servlet>
  	<servlet-name>ssm</servlet-name>
  	<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  	<!-- 直接找專案中尋找spring.xml -->
  	<init-param>
  		<param-name>contextConfigLocation</param-name>
  		<param-value>classpath:spring.xml</param-value>
  	</init-param>
  </servlet>
  <servlet-mapping>
  	<servlet-name>ssm</servlet-name>
  	<url-pattern>*.spring</url-pattern>
  </servlet-mapping>
</web-app>

 五,測試

說一下測試的要點

1.mysql資料庫中democ資料庫,在配置資料來源的時候就可以看到。

2.bean 包 biz包 bizImpl包 mapper包 

3.bean -----------------UserInfo(POJO)

4.biz--------------------- biz Interface

5.bizImpl---------------biz interface instance class

6.mapper--------------mapperXML,mapper interface

7.test

先看目錄結構: 其中的類,介面 我已經解釋過了

實現:
 

package bean;

public class UserInfo {
	private Integer userId;
	private String userName;
	private String userSex;
	private Integer userAge;
	private String userAddress;
	
	public UserInfo() {
	}


	public Integer getUserId() {
		return userId;
	}

	public void setUserId(Integer userId) {
		this.userId = userId;
	}

	public String getUserName() {
		return userName;
	}

	public void setUserName(String userName) {
		this.userName = userName;
	}

	public String getUserSex() {
		return userSex;
	}

	public void setUserSex(String userSex) {
		this.userSex = userSex;
	}

	public String getUserAddress() {
		return userAddress;
	}
	
	

	public Integer getUserAge() {
		return userAge;
	}


	public void setUserAge(Integer userAge) {
		this.userAge = userAge;
	}


	public void setUserAddress(String userAddress) {
		this.userAddress = userAddress;
	}

	@Override
	public String toString() {
		return "UserInfoBean [userId=" + userId + ", userName=" + userName + ", userSex=" + userSex + ", userAddress="
				+ userAddress + "]";
	}
	
	
}
package biz;

/**
 * 業務介面
 */
import java.util.List;

import bean.UserInfo;

public interface UserBiz {

	/**
	 * 查詢所有的使用者
	 */
	public List<UserInfo> findAllUser();
	
}
package bizImpl;

import java.util.List;

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

import bean.UserInfo;
import biz.UserBiz;
import mapper.User;

@Service
public class UserInfoImpl implements UserBiz{

	@Autowired
	private User um;
	
	//全查詢 進行業務包裝
	public List<UserInfo> findAllUser() {
		return um.findAllUser();
	}

}
package mapper;

import java.util.List;

import bean.UserInfo;

public interface User {
	
	public List<UserInfo> findAllUser();
	
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC
 "-//mybatis.org//DTD Mapper 3.0//EN"
 "http://mabatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="mapper.User">
	<select id="findAllUser" resultType="bean.UserInfo">
		SELECT * FROM USERINFO
	</select>
</mapper>
import java.util.List;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;

import bean.UserInfo;
import biz.UserBiz;
import bizImpl.UserInfoImpl;

public class Test {
	
	public static void main(String[] args) {
		/**
		 * 先使用這樣的方式測試 , 只要查詢資料 就會返回一個集合 檢視集合的長度 ,我們會檢測出 持久城的錯誤。
		 */
		ApplicationContext bean = new FileSystemXmlApplicationContext("src/main/resources/spring.xml");
		//代理
		UserBiz ub=bean.getBean("userInfoImpl",UserInfoImpl.class);
		List<UserInfo> list = ub.findAllUser();
		System.out.println(list.size());
	}

}

結果:

大功告成,接下來就是書寫cotroller層的東西。你可以選擇使用AJAX方式(esayUI)或者其他方式來實現,基本上已經完成。

六,控制層測試和檢視層測試

使用很簡單的方式是來測試

使用esayUI   查詢esayUI的包新增進來 ,編寫html

最終的目錄結構:

完成。

七,注意事項

1.各個jar包的版本號,需要注意,我在整合的過程中版本號讓我很難受。

2.關於mapper的注意事項很多

3.關於easyUI的url

4.在spring.xml中各個部分需要注意

5.在不清楚的情況下,可以直接複製到程式碼,整合是成功的!或者下載專案。