1. 程式人生 > >eclipse + maven 配置 SSM 專案環境(適用於 idea)

eclipse + maven 配置 SSM 專案環境(適用於 idea)

idea 編輯器自己新建一個 maven 專案後,其他的照著下面做就行。

開始寫教程前,我已經建立了一個用於 web 開發的 maven 專案了,所以還不會建立 maven 專案的同學,可以看我的上一篇部落格,教程比較簡單的,跟著一步步做就行,很適合小白看的:https://blog.csdn.net/weidong_y/article/details/80781839

接下來,我們就來開始配置 SSM 環境了!!!

本教程配置是以為平時寫專案的習慣配置的。不習慣這樣的配置的話,可以自己改。

1.我們先看下新建好的 maven 專案的目錄結構:

如上圖,src/main/java 放的後期寫的 java 程式碼。src/main/resourcces

放的是一些配置檔案。

然後我們在 src/main/java 下建立幾個寫專案時候需要用到的包,如下

圖:

包名解釋:

com.controller : 用來寫一些控制層的程式碼

com.service : 用來存放一些服務介面

com.service.impl : 用來存放介面實現類

com.pojo : 存放對應資料庫表的實體類

com.dao : 跟資料庫有關的操作介面類

接著在根目錄下建立一個 src/main/resources/spring 的 source Folder 

來存放 spring 的相關配置檔案。還有一個 src/main/resources/mapper 

的 source Folder 用來存放跟資料庫有關的 xml 檔案。如果不知道有什麼

用,就先建著,後面測試的時候就知道怎麼用了。

2.使用 maven 引入 jar 包

我們使用 maven 來線上下載 jar 包的話,只需要在 pom.xml 檔案中配置一下就行,我的 pom.xml 是整理過的,所有直接貼程式碼給大家,大家也可以直接複製貼上使用哦。首先開啟你專案的 pom.xml 檔案,然後看到下圖紅色方框內,把這段程式碼直接刪除掉,然後把下面的程式碼全部複製貼上到紅色方框的位置。別放錯位置!!!

關於 pom.xml 檔案中有關 jar 包的下載連結哪裡來,可以參考下面這個網

<properties>
	<spring.version>4.3.7.RELEASE</spring.version>
</properties>
	
<dependencies>
	<!-- 單元測試 -->
	<dependency>
		<groupId>junit</groupId>
		<artifactId>junit</artifactId>
		<version>4.12</version>
		<scope>test</scope>
	</dependency>
		
	<!-- 日誌的配置 -->
	<!-- https://mvnrepository.com/artifact/ch.qos.logback/logback-classic -->
	<dependency>
		<groupId>ch.qos.logback</groupId>
		<artifactId>logback-classic</artifactId>
		<version>1.2.3</version>
	</dependency>
		
    <!-- Spring 配置 -->
	<!-- 1)Spring核心 -->
	<dependency>
		<groupId>org.springframework</groupId>
		<artifactId>spring-core</artifactId>
		<version>${spring.version}</version>
	</dependency>
	<dependency>
		<groupId>org.springframework</groupId>
		<artifactId>spring-beans</artifactId>
		<version>${spring.version}</version>
	</dependency>
	<dependency>
		<groupId>org.springframework</groupId>
		<artifactId>spring-context</artifactId>
		<version>${spring.version}</version>
	</dependency>
	<!-- 2)Spring DAO層 -->
	<dependency>
		<groupId>org.springframework</groupId>
		<artifactId>spring-jdbc</artifactId>
		<version>${spring.version}</version>
	</dependency>
	<dependency>
		<groupId>org.springframework</groupId>
		<artifactId>spring-tx</artifactId>
		<version>${spring.version}</version>
	</dependency>
	<!-- 3)Spring web -->
	<dependency>
		<groupId>org.springframework</groupId>
		<artifactId>spring-web</artifactId>
		<version>${spring.version}</version>
	</dependency>
	<dependency>
		<groupId>org.springframework</groupId>
		<artifactId>spring-webmvc</artifactId>
		<version>${spring.version}</version>
	</dependency>
	<!-- 4)Spring test -->
	<dependency>
		<groupId>org.springframework</groupId>
		<artifactId>spring-test</artifactId>
		<version>${spring.version}</version>
	</dependency>
		
	<!-- 下面是跟 spring 相關的一些 jar 包配置 -->
	<!-- Servlet Web -->
	<dependency>
		<groupId>javax.servlet</groupId>
		<artifactId>javax.servlet-api</artifactId>
		<version>3.1.0</version>
	</dependency>
		
	<!-- json 解析 -->
	<!-- https://mvnrepository.com/artifact/com.google.code.gson/gson -->
	<dependency>
		<groupId>com.google.code.gson</groupId>
		<artifactId>gson</artifactId>
		<version>2.8.0</version>
	</dependency>
		
	<!-- Map 工具類,對標準java Collection 的擴充套件 spring-core.jar 需commons-collections.jar -->
	<dependency>
		<groupId>commons-collections</groupId>
		<artifactId>commons-collections</artifactId>
		<version>3.2</version>
	</dependency>
		
	<!-- DAO: MyBatis -->
	<dependency>
		<groupId>org.mybatis</groupId>
		<artifactId>mybatis</artifactId>
		<version>3.4.2</version>
	</dependency>
	<dependency>
		<groupId>org.mybatis</groupId>
		<artifactId>mybatis-spring</artifactId>
		<version>1.3.1</version>
	</dependency>
		
	<!-- 資料庫 -->
	<dependency> 
		<groupId>mysql</groupId>
		<artifactId>mysql-connector-java</artifactId>
		<version>5.1.37</version>
	</dependency>

    <!-- 資料庫連線池 -->
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>druid</artifactId>
        <version>1.1.10</version>
    </dependency>
		
</dependencies>

3. jdbc.properties 的配置

src/main/resource 目錄下,新建一個 jdbc.properties ,自己填上相關資料庫的資訊:(這個基本都會了,沒什麼好講,自己改吧)

jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/o2o?useUnicode=true&characterEncoding=utf8
jdbc.username=root
jdbc.password=root

4. mybatis 相關的配置

在 src/main/resource 目錄下,新建一個 mybatis-config.xml 檔案,然後把下面的程式碼直接複製:

<?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>
	<!-- 配置全域性屬性 -->
	<settings>
		<!-- 使用jdbc的getGeneratedKeys獲取資料庫自增主鍵值 -->
		<setting name="useGeneratedKeys" value="true" />

		<!-- 使用列別名替換列名 預設:true -->
		<setting name="useColumnLabel" value="true" />

		<!-- 開啟駝峰命名轉換:Table{create_time} -> Entity{createTime} -->
		<setting name="mapUnderscoreToCamelCase" value="true" />
		
		<!-- 列印查詢語句 -->
		<setting name="logImpl" value="STDOUT_LOGGING" />
	</settings>
</configuration>

5. spring 相關的配置

如果是按照我上面的步驟建立的包名,可以直接複製貼上下面的程式碼到對應的檔案裡面,如果包名不同,可以根據程式碼中的提示來修改對應的包名的路徑。

第一步:spring-dao.xml 的配置

在 src/main/resources/spring 目錄下,新建一個 spring-dao.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"
	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">
    
	<!-- 配置整合mybatis過程 -->
	<!-- 1.配置資料庫相關引數properties的屬性:${url} -->
	<context:property-placeholder location="classpath:jdbc.properties"/>  <!-- 根據自己 jdbc.properties 的存放路徑來修改 location -->
	
    <!-- 2.資料庫連線池 -->
    <bean id="dataSource"
          class="com.alibaba.druid.pool.DruidDataSource">
        <property name="driverClassName" value="${jdbc.driver}" />
        <property name="url" value="${jdbc.url}" />
        <property name="username" value="${jdbc.username}" />
        <property name="password" value="${jdbc.password}" />
    </bean>

	<!-- 3.配置SqlSessionFactory物件 -->
	<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
		<!-- 注入資料庫連線池 -->
		<property name="dataSource" ref="dataSource" />
		<!-- 配置MyBaties全域性配置檔案:mybatis-config.xml -->
		<property name="configLocation" value="classpath:mybatis-config.xml" />  <!-- 根據自己 mybatis 的檔名字來修改 value-->
		<!-- 掃描 pojo 包 使用別名 -->
		<property name="typeAliasesPackage" value="com.pojo" />  <!-- 根據資料庫表映射出來的實體類所存放的包名來修改 value -->
		<!-- 掃描sql配置檔案:mapper需要的xml檔案 -->
		<property name="mapperLocations" value="classpath:mapper/*.xml" /> <!-- 根據跟資料庫有關的 xml 檔案所存放的目錄來修改 value -->
	</bean>

	<!-- 4.配置掃描Dao介面包,動態實現Dao介面,注入到spring容器中 -->
	<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
		<!-- 注入sqlSessionFactory -->
		<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
		<!-- 給出需要掃描Dao介面包 -->
		<property name="basePackage" value="com.dao" />  <!-- 根據操作資料庫的一些java類存放的包名來修改 value -->
	</bean>
</beans>

第二步:spring-service.xml 的配置

在 src/main/resources/spring 目錄下新建一個 spring-service.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: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">
    <!-- 掃描service包下所有使用註解的型別 -->
    <context:component-scan base-package="com.service" />  <!-- 根據自己服務介面類所存放的包名來修改 base-package -->

    <!-- 配置事務管理器 -->
    <bean id="transactionManager"
        class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <!-- 注入資料庫連線池 -->
        <property name="dataSource" ref="dataSource" />
    </bean>

    <!-- 配置基於註解的宣告式事務 -->
    <tx:annotation-driven transaction-manager="transactionManager" />
</beans>

第三步:spring-web.xml 的配置

在 src/main/resources/spring 目錄下新建一個 spring-web.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"
	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-3.2.xsd">
	<!-- 配置SpringMVC -->
	<!-- 1.開啟SpringMVC註解模式 -->
	<!-- 簡化配置: (1)自動註冊DefaultAnootationHandlerMapping,AnotationMethodHandlerAdapter 
		(2)提供一些列:資料繫結,數字和日期的format @NumberFormat, @DateTimeFormat, xml,json預設讀寫支援 -->
	<mvc:annotation-driven />

	<!-- 2.靜態資源預設servlet配置 (1)加入對靜態資源的處理:js,gif,png (2)允許使用"/"做整體對映 -->
	<mvc:resources mapping="/resources/**" location="/resources/" />
	
	<!-- 配置註解驅動 -->
	<mvc:default-servlet-handler />

	<!-- 3.定義檢視解析器 -->
	<bean id="viewResolver"
		class="org.springframework.web.servlet.view.InternalResourceViewResolver">
		<property name="prefix" value="/WEB-INF/html/"></property>
		<property name="suffix" value=".html"></property>
	</bean>
	
	<!-- 4.掃描web相關的bean -->
	<!-- 配置Controller掃描 -->
	<context:component-scan base-package="com.controller" />  <!-- 根據自己 controller 類所存放的包名來修改 base-package -->
	
</beans>

第四步:web.xml 的配置

在 web.xml 中整合 spring + springmvc + mybatis 。

<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
      			http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1" metadata-complete="true">
    <display-name>Archetype Created Web Application</display-name>

    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>

    <!-- 載入spring容器 -->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:spring/spring-*.xml</param-value>  <!-- 根據自己實際的 spring 配置檔案來修改 param-value -->
    </context-param>
    <!--配置DispatcherServlet -->
    <servlet>
        <servlet-name>spring-dispatcher</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:spring/spring-*.xml</param-value>  <!-- 根據自己實際的 spring 配置檔案來修改 param-value -->
        </init-param>
    </servlet>

    <servlet-mapping>
        <servlet-name>spring-dispatcher</servlet-name>
        <!-- 預設匹配所有的請求 -->
        <url-pattern>/</url-pattern>
    </servlet-mapping>

    <!-- post亂碼過慮器 -->
    <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>
    </filter-mapping>
</web-app>

到這裡,所有的配置就完成了!!!~~~

6.驗證

第一步:

新建一個數據庫,新建一張表,並在表裡面新建幾個欄位人,然後錄上資料,方便後面測試。現在只是用來測試 SSM 是否配置成功,所有自己隨便新建一張表就行。(我這裡以一張新聞表來寫教程,大家可以根據自己的實際情況進行修改)

注意:記得修改 jdbc.properties 的對應資訊。

第二步:

在 com.pojo 包下,建立一個 News.java 類。自己定義一些與資料庫表中欄位對應的變數,並生成它們的 get 和 set 方

法。

第三步:

在 com.dao 包下新建一個 NewsDao.java 的介面,注意!!!這裡建立的是介面!!!然後定義一個查詢的介面。。

第四步:

由於使用的是 mybatis ,而 mybatis 不需要 dao 去寫一個實現類的,而是在 mybatis 裡面自動實現的,所以我們只需要做一些配置就行了。在 src/main/resources/mapper  新建一個 NewsDao.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 是指明 NewsDao.xml 與 NewsDao.java 是對應的 -->
<mapper namespace="com.dao.NewsDao">
	<select id="queryNews" resultType="com.pojo.New">
		select *
		from t_news
	</select>
</mapper>

到這裡需要注意一下:

NewsDao.xml 裡的 id 值是否能與 NewsDao.java 的介面名字對應,已經踩坑,請注意!!!

第五步:

在 com.service 包下,新建一個 NewsService.java 的介面。然後寫一個查

詢介面,如下圖:

第五步:

在 com.service.impl 包下,新建一個 NewsServiceImpl.java 的類。然後繼承 NewService 這個介面類。接著實現接口裡的方法。

注意:這裡需要打上 @Service 的註解,不然會掃描不到!!!

第六步:

在 com.controller 包下,新建一個 NewsController.java 的類,然後直接上程式碼了!注意打註解就是了!!!

我這裡是使用 Gson 工具來進行字串轉成 Json 串。已經在 pom.xml 文

件匯入相關的 jar 包了。

第七步:

開啟 tomcat ,然後在 tomcat 環境下跑這個專案。然後在瀏覽器上訪問,看!!!用 ecipse + maven 配置的 SSM 環境已經

完成了。可以開始寫專案了!!!