1.創建項目
1)打開Eclipse,點擊File --> New --> Other

2)輸入maven,找到Maven Project

3)然后一直按Next,直到出現一下界面:

4)輸入web后點擊Aftifact Id為maven-archetype-webapp的選項,然后繼續Next

5)然后輸入你的Group Id和項目名,點擊finish

6)項目創建好之后可能會出現如下情況:

這是因為項目中缺少Tomcat有關jar包導致的,接下來我們就來解決這個問題,右鍵單擊項目,選擇Build Path --> Add Library --> Server Runtime,然后點擊Next


然后選擇你要的Tomcat容器,點擊Finish

這個時候問題就解決了

7)更改Dynamic Web Module和jdk版本號。更改之前是這樣的:

而我電腦里配的Java環境是jdk1.8的,Tomcat的版本是9.0,可以將Dynamic Web Module版本改成3.1,但是不能直接在上面更改,接下來我就詳細講一下怎么更改這兩個版本:
- 首先找到你那個項目所在的路徑,打開那個項目文件夾之后找到.settings文件夾,這個在你那里也可能被隱藏,記得打開顯示隱藏文件夾的選項

- 然后進入.settings文件夾,找到org.eclipse.wst.common.project.facet.core.xml文件

- 打開文件后改成你對應的版本
更改前》》》》》》》》

更改后》》》》》》》

- 然后回到eclipse中,找到web.xml文件,將其修改為(對應Dynamic Web Module修改后的版本,我這里是3.1):
<?xml version="1.0" encoding="UTF-8"?> <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"> </web-app>
- 第四部修改pom.xml文件(對應修改后的jdk版本),將其修改為:
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> </plugins> </build>
- 最后右擊項目,選擇Maven --> Update Project

彈出界面后勾選你當前的項目點擊OK即可
2.導入SSM項目所需要的jar包
<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.test</groupId> <artifactId>ssm</artifactId> <packaging>war</packaging> <version>0.0.1-SNAPSHOT</version> <name>ssm Maven Webapp</name> <url>http://maven.apache.org</url> <properties> <!-- Spring版本號 --> <spring.version>4.3.8.RELEASE</spring.version> </properties> <dependencies> <!-- Spring相關包 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-aop</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${spring.version}</version> </dependency> <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> <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> <!-- AOP相關包 --> <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjrt</artifactId> <version>1.8.0</version> </dependency> <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjweaver</artifactId> <version>1.8.0</version> </dependency> <!-- MyBatis相關包 --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.3.0</version> </dependency> <!-- MySQL相關包 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.26</version> </dependency> <!-- 數據庫連接池 --> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.0.20</version> </dependency> <!-- Spring集成MyBatis --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>1.2.3</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> <version>2.5.2</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.5.2</version> </dependency> <!-- JSP標准標簽庫 --> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency> <!-- 日志相關包 --> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.21</version> </dependency> <!-- 單元測試相關包 --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> <!-- spring對測試框架的簡單封裝功能 --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>${spring.version}</version> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> </plugins> </build> </project>
3.完善項目結構
相信大家細心的話都會發現,之前創建的項目目錄少了一些東西:src/main/java 、src/test/java 、src/test/resources

如果大家的情況和我一樣的話,首先我們右擊項目,選擇 Build Path --> Configure Build Path,進入界面將有錯誤的文件Remove后點擊Apply And Close

然后右擊項目,選擇 New --> Source Folder

輸入名字后點擊Finish,依次將缺失的幾個補齊

補齊之后,再右擊項目,選擇 Build Path --> Configure Build Path,進入界面,找到先前補齊的文件,更改Output Folder輸出路徑



依次更改好之后點擊Apply And Close

將以上步驟做好之后,再右擊項目 ,選擇Properties,找到Deployment Assembly,移除以下兩個文件夾后點擊Apply And Close

4.創建配置文件

log4j.properties文件:
#USE THIS SETTING FOR OUTPUT MYBATIS`s SQL ON THE CONSOLE
log4j.rootLogger=INFO, Console
#Console
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n
log4j.logger.java.sql.ResultSet=INFO
log4j.logger.org.apache=INFO
log4j.logger.java.sql.Connection=DEBUG
log4j.logger.java.sql.Statement=DEBUG
log4j.logger.java.sql.PreparedStatement=DEBUG
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.zqz.pojo" /> </typeAliases> </configuration>
spring-mvc.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.xsd"> <!-- 啟動自動掃描 --> <context:component-scan base-package="com.zqz.*" /> <!-- 注冊MVC注解驅動 --> <mvc:annotation-driven /> <!-- 靜態資源可訪問的設置方式 --> <mvc:default-servlet-handler /> <!-- 配置視圖解析器,可以顯式設置,也可以不設置,不設置會依據SpringMVC的默認設置 --> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/jsp/" /> <property name="suffix" value=".jsp" /> </bean> <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"> <property name="messageConverters"> <list> <ref bean="jsonHttpMessageConverter" /> </list> </property> </bean> <bean id="jsonHttpMessageConverter" class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"> <property name="supportedMediaTypes"> <list> <value>application/json;charset=UTF-8</value> </list> </property> </bean> </beans>
spring-mybatis.xml文件:
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:context="http://www.springframework.org/schema/context" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 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 "> <!-- 指定掃描的包,對應service的實現類的包 --> <context:component-scan base-package="com.zqz.students.service.impl" /> <!-- 定義數據源Bean --> <!-- Druid --> <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource"> <property name="url" value="jdbc:mysql://localhost:3306/students?useUnicode=true&characterEncoding=UTF-8" /> <property name="username" value="debian-sys-maint" /> <property name="password" value="kzM7KVhkozRHJGp5" /> </bean> <!-- 注冊SqlSessionFactoryBean --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> <!-- 自動掃描mappers.xml文件 --> <property name="mapperLocations" value="classpath*:com/zqz/dao/*.xml" /> <property name="configLocation" value="classpath:mybatis-config.xml"></property> </bean> <!-- DAO接口所在包名,Spring會自動查找其下的類 --> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="com.zqz.dao" /> <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" /> </bean> </beans>
spring-tx.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/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/aop http://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd"> <!-- 開啟AOP注解掃描 --> <aop:aspectj-autoproxy proxy-target-class="true" /> <!-- 事務管理器,依賴於數據源 --> <bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource" /> </bean> <!-- 編寫通知:對事務進行增強(通知),需要編寫對切入點和具體執行事務細節 --> <tx:advice id="txAdvice" transaction-manager="txManager"> <tx:attributes> <!-- 為切入點方法添加事務詳情 name:方法名,*表示任意方法名稱 propagation:設置傳播行為 isolation:設置隔離級別 read-only:是否只讀 --> <tx:method name="add*" propagation="REQUIRED" isolation="DEFAULT" read-only="false" rollback-for="Exception" /> <tx:method name="delete*" propagation="REQUIRED" isolation="DEFAULT" read-only="false" rollback-for="Exception" /> <tx:method name="update*" propagation="REQUIRED" isolation="DEFAULT" read-only="false" rollback-for="Exception" /> </tx:attributes> </tx:advice> <!-- 設置AOP,讓Spring自動對目標生成代理,需要使用AspectJ表達式 --> <aop:config proxy-target-class="true"> <!-- 切面:整合切入點和通知 --> <aop:advisor advice-ref="txAdvice" pointcut="within(com.zqz.controller..*)" /> </aop:config> </beans>
最后還有web.xml文件:
<?xml version="1.0" encoding="UTF-8"?> <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"> <context-param> <param-name>contextConfigLocation</param-name> <param-value> classpath*:/spring-mybatis.xml, classpath*:/spring-tx.xml </param-value> </context-param> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <listener> <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class> </listener> <servlet> <servlet-name>springServlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath*:spring-mvc.xml</param-value> </init-param> <load-on-startup>2</load-on-startup> </servlet> <servlet-mapping> <servlet-name>springServlet</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> <session-config> <session-timeout>20</session-timeout> </session-config> </web-app>
到這里整合也就完成了,只剩編寫具體的業務代碼了
