1. 程式人生 > >超級詳細的新手在Idea中使用maven配置Spring+springmvc+mybatis(SSM)框架步驟

超級詳細的新手在Idea中使用maven配置Spring+springmvc+mybatis(SSM)框架步驟

首先呢我們需要準備一些東西:tomact建議用最新的,當然沒有最新的也用tomact8以上。jdk:1.8,idea2018年版,maven是用的3.0以上。
下面開始詳細描述步驟:
一:建立maven-web專案
1.點選新建一個project,idea的project是一個很大的範疇。
這裡寫圖片描述

2.選擇建立一個maven專案;
記住把那個create from arch type打上勾,然後使用系統提供的骨架,選擇maven-arch type-web app這一個骨架。點選next
這裡寫圖片描述

3.填寫好grouple和artifactld,.就是自己取個名字就行。當然慣例呢是專案分組分類,然後後面就是自己域名倒置(我自己就是自己的部落格名了)
這裡寫圖片描述


4.使用預設的就行,也可以選用自己安裝的maven,點選next
這裡寫圖片描述
5.填寫專案名:(紅點1處),選擇儲存地址(紅點2處),書寫模組名(紅點3處),如果用慣了eclipse的人可能習慣workspace,這裡的module就相當於eclipse裡面的一個專案。一般操作都是以模組為單位的,至於本身project只是一個說明,這是一個組裡面的,沒有什麼實際意義。最後點選finish完成。此時我們需要等待一會,等待maven下載骨架。
這裡寫圖片描述
6.骨架建立完畢:下面的build success 顯示建立成功。
這裡寫圖片描述
二進行pom.xml的一些設定和配置相應檔案資訊。
1、引入專案依賴的jar包
(1)spring的jar包
(2)springmvc的jar包
(3)mybatis的jar包
(4)資料庫連線池,驅動包
(5)其他(jstl,servlet-api,junit)(先引入必須的jar包,後面的jar包需要的時候再引入)
自己需要的jar包就去裡面引用,搜尋就好。自己選擇的版本儘量一樣。如果不知道jar包的可以直接複製我的jar包程式碼。當讓我的也只是包含了一些基本的東西而已,具體程式碼需要的需要大家自己去新增。
Maven的網站:
http://mvnrepository.com/

這裡寫圖片描述
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>ssm</groupId
>
<artifactId>com.liuyunei</artifactId> <packaging>war</packaging> <version>1.0-SNAPSHOT</version> <name>com.liuyunei Maven Webapp</name> <url>http://maven.apache.org</url> <!--引入專案依賴的jar包 --> <!-- SpringMVC、Spring --> <!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc --> <dependencies> <!--引入pageHelper分頁外掛 --> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>5.0.0</version> </dependency> <!-- MBG --> <!-- https://mvnrepository.com/artifact/org.mybatis.generator/mybatis-generator-core --> <dependency> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-core</artifactId> <version>1.3.5</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>4.3.7.RELEASE</version> </dependency> <!-- 返回json字串的支援 --> <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind --> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.8.8</version> </dependency> <!--JSR303資料校驗支援;tomcat7及以上的伺服器, tomcat7以下的伺服器:el表示式。額外給伺服器的lib包中替換新的標準的el --> <!-- https://mvnrepository.com/artifact/org.hibernate/hibernate-validator --> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-validator</artifactId> <version>5.4.1.Final</version> </dependency> <!-- Spring-Jdbc --> <!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>4.3.7.RELEASE</version> </dependency> <!--Spring-test --> <!-- https://mvnrepository.com/artifact/org.springframework/spring-test --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>4.3.7.RELEASE</version> </dependency> <!-- Spring面向切面程式設計 --> <!-- https://mvnrepository.com/artifact/org.springframework/spring-aspects --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aspects</artifactId> <version>4.3.7.RELEASE</version> </dependency> <!--MyBatis --> <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.4.2</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> <!-- 資料庫連線池、驅動 --> <!-- https://mvnrepository.com/artifact/c3p0/c3p0 --> <dependency> <groupId>c3p0</groupId> <artifactId>c3p0</artifactId> <version>0.9.1</version> </dependency> <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.41</version> </dependency> <!-- (jstl,servlet-api,junit) --> <!-- https://mvnrepository.com/artifact/jstl/jstl --> <dependency> <groupId>jstl</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency> <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api --> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.0.1</version> <scope>provided</scope> </dependency> <!-- junit --> <!-- https://mvnrepository.com/artifact/junit/junit --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> </dependency> </dependencies> <build> <finalName>com.liuyunei</finalName> </build> </project>

2.這個時候maven在下載對應的jar包,所以大家就去搭建目錄結構,按照下圖搭建。那個小圖片說明mbg的位置。
這裡寫圖片描述
這裡寫圖片描述
3.配置相應的檔案資訊
(1)jdbc.properties檔案:

jdbc.jdbcUrl=jdbc:mysql://localhost:3306/ssm_crud
jdbc.driverClass=com.mysql.jdbc.Driver
jdbc.user=root
jdbc.password=root

(2)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>
      <setting name="mapUnderscoreToCamelCase" value="true"/>
   </settings>

   <typeAliases>
      <package name="com.atguigu.crud.bean"/>
   </typeAliases>

   <plugins>
      <plugin interceptor="com.github.pagehelper.PageInterceptor">
         <!--分頁引數合理化  -->
         <property name="reasonable" value="true"/>
      </plugin>
   </plugins>

</configuration>

(3)applicationContext.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:aop="http://www.springframework.org/schema/aop"
   xmlns:tx="http://www.springframework.org/schema/tx"
   xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.3.xsd
      http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
      http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.3.xsd
      http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd">

   <context:component-scan base-package="com.atguigu">
      <context:exclude-filter type="annotation"
         expression="org.springframework.stereotype.Controller" />
   </context:component-scan>

   <!-- Spring的配置檔案,這裡主要配置和業務邏輯有關的 -->
   <!--=================== 資料來源,事務控制,xxx ================-->
   <context:property-placeholder location="classpath:dbconfig.properties" />
   <bean id="pooledDataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
      <property name="jdbcUrl" value="${jdbc.jdbcUrl}"></property>
      <property name="driverClass" value="${jdbc.driverClass}"></property>
      <property name="user" value="${jdbc.user}"></property>
      <property name="password" value="${jdbc.password}"></property>
   </bean>

   <!--================== 配置和MyBatis的整合=============== -->
   <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
      <!-- 指定mybatis全域性配置檔案的位置 -->
      <property name="configLocation" value="classpath:mybatis-config.xml"></property>
      <property name="dataSource" ref="pooledDataSource"></property>
      <!-- 指定mybatis,mapper檔案的位置 -->
      <property name="mapperLocations" value="classpath:mapper/*.xml"></property>
   </bean>

   <!-- 配置掃描器,將mybatis介面的實現加入到ioc容器中 -->
   <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
      <!--掃描所有dao介面的實現,加入到ioc容器中 -->
      <property name="basePackage" value="com.atguigu.crud.dao"></property>
   </bean>

   <!-- 配置一個可以執行批量的sqlSession -->
   <bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate">
      <constructor-arg name="sqlSessionFactory" ref="sqlSessionFactory"></constructor-arg>
      <constructor-arg name="executorType" value="BATCH"></constructor-arg>
   </bean>
   <!--=============================================  -->

   <!-- ===============事務控制的配置 ================-->
   <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
      <!--控制住資料來源  -->
      <property name="dataSource" ref="pooledDataSource"></property>
   </bean>
   <!--開啟基於註解的事務,使用xml配置形式的事務(必要主要的都是使用配置式)  -->
   <aop:config>
      <!-- 切入點表示式 -->
      <aop:pointcut expression="execution(* com.atguigu.crud.service..*(..))" id="txPoint"/>
      <!-- 配置事務增強 -->
      <aop:advisor advice-ref="txAdvice" pointcut-ref="txPoint"/>
   </aop:config>

   <!--配置事務增強,事務如何切入  -->
   <tx:advice id="txAdvice" transaction-manager="transactionManager">
      <tx:attributes>
         <!-- 所有方法都是事務方法 -->
         <tx:method name="*"/>
         <!--以get開始的所有方法  -->
         <tx:method name="get*" read-only="true"/>
      </tx:attributes>
   </tx:advice>

   <!-- Spring配置檔案的核心點(資料來源、與mybatis的整合,事務控制) -->

</beans>

(4)dispatcherServlet-servlet.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/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd
      http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
      http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd">

   <!--SpringMVC的配置檔案,包含網站跳轉邏輯的控制,配置  -->
   <context:component-scan base-package="com.atguigu" use-default-filters="false">
      <!--只掃描控制器。  -->
      <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
   </context:component-scan>

   <!--配置檢視解析器,方便頁面返回  -->
   <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
      <property name="prefix" value="/WEB-INF/views/"></property>
      <property name="suffix" value=".jsp"></property>
   </bean>

   <!--兩個標準配置  -->
   <!-- 將springmvc不能處理的請求交給tomcat -->
   <mvc:default-servlet-handler/>
   <!-- 能支援springmvc更高階的一些功能,JSR303校驗,快捷的ajax...對映動態請求 -->
   <mvc:annotation-driven/>

</beans>

(5)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_2_5.xsd"
   id="WebApp_ID" version="2.5">

   <!--1、啟動Spring的容器  -->
   <!-- needed for ContextLoaderListener -->
   <context-param>
      <param-name>contextConfigLocation</param-name>
      <param-value>classpath:applicationContext.xml</param-value>
   </context-param>

   <!-- Bootstraps the root web application context before servlet initialization -->
   <listener>
      <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
   </listener>

   <!--2、springmvc的前端控制器,攔截所有請求  -->
   <!-- The front controller of this Spring Web application, responsible for handling all application requests -->
   <servlet>
      <servlet-name>dispatcherServlet</servlet-name>
      <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
      <load-on-startup>1</load-on-startup>
   </servlet>

   <!-- Map all requests to the DispatcherServlet for handling -->
   <servlet-mapping>
      <servlet-name>dispatcherServlet</servlet-name>
      <url-pattern>/</url-pattern>
   </servlet-mapping>

   <!-- 3、字元編碼過濾器,一定要放在所有過濾器之前 -->
   <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>
      <init-param>
         <param-name>forceRequestEncoding</param-name>
         <param-value>true</param-value>
      </init-param>
      <init-param>
         <param-name>forceResponseEncoding</param-name>
         <param-value>true</param-value>
      </init-param>
   </filter>
   <filter-mapping>
      <filter-name>CharacterEncodingFilter</filter-name>
      <url-pattern>/*</url-pattern>
   </filter-mapping>

   <!-- 4、使用Rest風格的URI,將頁面普通的post請求轉為指定的delete或者put請求 -->
   <filter>
      <filter-name>HiddenHttpMethodFilter</filter-name>
      <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
   </filter>
   <filter-mapping>
      <filter-name>HiddenHttpMethodFilter</filter-name>
      <url-pattern>/*</url-pattern>
   </filter-mapping>
   <filter>
      <filter-name>HttpPutFormContentFilter</filter-name>
      <filter-class>org.springframework.web.filter.HttpPutFormContentFilter</filter-class>
   </filter>
   <filter-mapping>
      <filter-name>HttpPutFormContentFilter</filter-name>
      <url-pattern>/*</url-pattern>
   </filter-mapping>


</web-app>

(6)mbg.xml檔案

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration
        PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
        "http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<generatorConfiguration>

    <context id="DB2Tables" targetRuntime="MyBatis3">
        <commentGenerator>
            <property name="suppressAllComments" value="true" />
        </commentGenerator>
        <!-- 配置資料庫連線 -->
        <jdbcConnection driverClass="com.mysql.jdbc.Driver"
                        connectionURL="jdbc:mysql://localhost:3306/ssm_crud" userId="root"
                        password="root">
        </jdbcConnection>

        <javaTypeResolver>
            <property name="forceBigDecimals" value="false" />
        </javaTypeResolver>

        <!-- 指定javaBean生成的位置 -->
        <javaModelGenerator targetPackage="com.atguigu.crud.bean"
                            targetProject=".\src\main\java">
            <property name="enableSubPackages" value="true" />
            <property name="trimStrings" value="true" />
        </javaModelGenerator>

        <!--指定sql對映檔案生成的位置 -->
        <sqlMapGenerator targetPackage="mapper" targetProject=".\src\main\resources">
            <property name="enableSubPackages" value="true" />
        </sqlMapGenerator>

        <!-- 指定dao介面生成的位置,mapper介面 -->
        <javaClientGenerator type="XMLMAPPER"
                             targetPackage="com.atguigu.crud.dao" targetProject=".\src\main\java">
            <property name="enableSubPackages" value="true" />
        </javaClientGenerator>


        <!-- table指定每個表的生成策略 -->
        <table tableName="tbl_emp" domainObjectName="Employee"></table>
        <table tableName="tbl_dept" domainObjectName="Department"></table>
    </context>
</generatorConfiguration>

到此配置完畢,然後大家自己去模組裡面新增Tom act,再把專案加上去就可以運行了。