今天進行了SSM框架的整合,遇到了很多的錯誤,但所幸都有解決,以下為基礎的整合步驟,後續待完善 1.SSM整合所需要: spring的jar(包含tx)、springmvc的jar、mybatis.jar、mybatis-spring.jar、tomcat、commons-dbcp.jar等 2.創 ...
今天進行了SSM框架的整合,遇到了很多的錯誤,但所幸都有解決,以下為基礎的整合步驟,後續待完善
1.SSM整合所需要:
spring的jar(包含tx)、springmvc的jar、mybatis.jar、mybatis-spring.jar、tomcat、commons-dbcp.jar等
2.創建Maven項目
這裡選擇如下圖,否則Maven創建可能不成功 Name:archetypeCatalog Value:internal
然後一直next,最後Maven項目創建成功,如下圖
3.更改web.xml文件,由於預設的是web2.3,這個版本有點老了,這裡我選擇用4.0
這樣web的版本就更改了
4.導入所需要的依賴jar包
<dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope> </dependency> <!--springmvc--> <!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>4.3.18.RELEASE</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> <scope>provided</scope> </dependency> <!--mybatis--> <!--Mysql--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.16</version> </dependency> <!--Mybatis--> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.2</version> </dependency> <!--Log4j--> <!-- https://mvnrepository.com/artifact/log4j/log4j --> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency> <!--dbcp--> <dependency> <groupId>commons-dbcp</groupId> <artifactId>commons-dbcp</artifactId> <version>1.4</version> </dependency> <!--Mybatis與Spring整合jar--> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>1.3.2</version> </dependency> <!--增加事務支持--> <!-- https://mvnrepository.com/artifact/org.springframework/spring-tx --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-tx</artifactId> <version>4.3.18.RELEASE</version> </dependency> <!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>4.3.18.RELEASE</version> </dependency> </dependencies>
註意:IDEA中的Maven項目需要指定讀取資源路徑,否則可能無法讀取資源(.properties、Mapper)
<build> <resources> <!--指定xml文件位置--> <resource> <directory>src/main/java</directory> <includes> <include>**/*.properties</include> <include>**/*.xml</include> </includes> <!--這裡寫成true會造成編譯註釋錯誤--> <filtering>false</filtering> </resource> <!--指定xml文件位置--> <resource> <directory>src/main/resource</directory> <includes> <include>**/*.properties</include> <include>**/*.xml</include> </includes> <!--這裡寫成true會造成編譯註釋錯誤--> <filtering>false</filtering> </resource> </resources> </build>
5.建立需要的包,如dao、service、controller、並根據資料庫建立對應的類
6.配置Mybatis-config.xml、spring-dao.xml、spring-service.xml、spring-mvc.xml、applicationContext.xml(這裡,我將文件分開其實除了Mybatis-config.xml,其餘都可以整合一起寫)
6.1、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="logImpl" value="log4j"/> </settings> <!--取別名--> <typeAliases> <package name="com.study.pojo"/> </typeAliases> <mappers> <package name="com.study.dao"/> </mappers> </configuration>
6.2、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 "> <context:component-scan base-package="com.study.dao.impl"/> <context:property-placeholder location="classpath:db.properties"/> <!--配置數據源--> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"> <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> <!--生成sqlsessionfactory--> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource"/> <property name="configLocation" value="classpath:mybatis-config.xml"/> </bean> <!--生成方法--> <bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate"> <constructor-arg index="0" ref="sqlSessionFactory"/> </bean> </beans>
6.3、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" 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 "> <import resource="spring-dao.xml"/> <context:component-scan base-package="com.study.service.impl"/> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource"/> </bean> </beans>
6.4、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:mvc="http://www.springframework.org/schema/mvc" 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/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd "> <!--配置掃描器--> <context:component-scan base-package="com.study.controller"/> <mvc:annotation-driven/> <!--靜態--> <mvc:default-servlet-handler/> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/jsp/"/> <property name="suffix" value=".jsp"/> </bean> </beans>
6.5、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" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd "> <import resource="spring-mvc.xml"/> <import resource="spring-dao.xml"/> <import resource="spring-service.xml"/> </beans>
6.6、db.properties(使用的dbcp數據連接池,不整合時候可以不加jdbc但是整合後不在前面加上jdbc就會出現錯誤)
jdbc.driver=com.mysql.cj.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/自己的資料庫名字?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&failOverReadOnly=false jdbc.username=賬戶 jdbc.password=密碼
6.7、log4j.properties(這個可以網上找)
log4j.rootLogger=DEBUG,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.org.apache=INFO
至此,配置文件基本整合完畢
7、根據需求,在對應層面編寫對應的代碼
提示:
Controller層的註解為@Controller
Service層的註解為 @Service
Dao層的註解為 @Repository
8、關於maven導包問題
建議:儘量使用Maven進行導包,如果手動導包可能會出現一些莫名的錯誤
9、問題總結
Ⅰ、在創建Maven項目的時候有兩點需要註意:①.需要指定資源文件路徑、也就是在pom.xml文件的build中添加指定。②.在進行導包的時候儘量使用Maven進行導包
Ⅱ、註解的使用,不同的層使用不同的註解(@Controller、@Service、@Repository),但是這些註解都來自同一個父註解,可以自行網上查看
Ⅲ、關於在配置文件中必須配置的屬性(大概):①.DispatcherServlet(SpringMVC的核心) ②、dataSource(數據源)③、DataSourceTransactionManager(事務支持,沒這個整合會出錯)④、SqlSessionFactoryBean(獲取sqlsessionFactory)⑤、SqlSessionTemplate
關於後臺傳Json到前端亂碼問題:
解決方式一:在RequestMapping中添加produces = "application/json;charset=utf- 8"
@RequestMapping(value = "/a",produces = "application/json;charset=utf- 8")
解決方式二:在<mvc:annotation-driven>中加入如下代碼
<!--配置掃描器--> <context:component-scan base-package="com.study.controller"/> <mvc:annotation-driven> <!--解決Json亂碼問題--> <mvc:message-converters register-defaults="true"> <bean class="org.springframework.http.converter.StringHttpMessageConverter"> <property name="supportedMediaTypes" value="text/html;charset=UTF-8" /> </bean> <bean id="jacksonMessageConverter" class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"> <property name="objectMapper"> <bean class="org.springframework.http.converter.json.Jackson2ObjectMapperFactoryBean"> <property name="failOnEmptyBeans" value="false"/> </bean> </property> </bean> </mvc:message-converters> </mvc:annotation-driven>
附:有問題歡迎大家指出