SSM_基於傳統web項目,ssmweb項目
本次搭建SSM為傳統web項目結構:
jar包資訊:
spring為:4.3.14版本,該版本已經包含了@RestController註解
springmvc 註解@ResponseBody依賴版本:
jackson-annotations-2.6.5.jar
jackson-core-2.6.5.jar
jackson-databind-2.6.5.jar
mybatis:3.4.6版本
mybatis提供的整合包:mybatis-spring-1.3.1.jar
項目結構圖如下:
編譯後的項目如下:
說明:源碼路徑對應為編譯後的WEB-INF/classes
1、配置web.xml
1.1 配置IOC容器監聽器
1.2 配置web容器在啟動時傳遞的上下文參數,這裡傳遞spring的設定檔
1.3 配置springmvc
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_4_0.xsd" version="4.0"> <!--容器啟動時,容器初始化的一些參數--> <context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/applicationContext.xml</param-value> </context-param> <!--IOC監聽器,當web容器啟動時,載入context-param標籤中的spring設定檔--> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <servlet> <servlet-name>dispatcher</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <!--注意此處填寫的url路徑,否則可能訪問controller報404--> <servlet-mapping> <servlet-name>dispatcher</servlet-name> <url-pattern>*.form</url-pattern> </servlet-mapping></web-app>
1.4 配置IOC容器:
1.4.1 配置資料來源
1.4.2 整合MyBatis,即注入sqlSession
1.4.3 配置自動注入mapper介面執行個體,配置交易管理
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:P="http://www.springframework.org/schema/p" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <bean id="t_01" class="com.sxlg.spring.T_01_imp"></bean> <!--引用第三方提供的資料來源 1.dbcp資料來源,destroy-method="close" 確保spring容器關閉時,資料來源關閉。 commons-dbcp-1.4.jar commons-pool-1.5.4.jar 2.C3P0資料來源,3P0是一個開放原始碼的JDBC資料來源實現項目。 --> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <!--mysql-connector-java-5.1.45.jar--> <property name="driverClassName" value="com.mysql.jdbc.Driver" /> <property name="url" value="jdbc:mysql://127.0.0.1:3306/match" /> <property name="username" value="root" /> <property name="password" value="123456" /> </bean> <!-- 配置session 1.位於mybatis提供的整個mybatis-spring.jar中 2.spring和MyBatis完美整合,不需要mybatis的配置對應檔 --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <!--引用資料來源--> <property name="dataSource" ref="dataSource"/> <!--載入mybatis的設定檔--> <property name="configLocation" value="WEB-INF/mybatis-config.xml" /> <!-- 自動掃描mapping.xml檔案 除了讓spring自動去掃描,也可以採用mybatis的原始配置方法, 在設定檔中載入sql的對應檔 --> <property name="mapperLocations" value="WEB-INF/mappers/*.xml"></property> </bean> <!--可以將指定包下面的mapper介面執行個體化成一個spring bean , 就可以直接注入,不需要擷取執行個體了--> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="com.ssm.dao" /> <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/> </bean> <!-- (交易管理)transaction manager, use JtaTransactionManager for global tx --> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource" /> </bean></beans>
1.5 添加Mybatis設定檔
由於spring已經整合了MyBatis,所以mybatis檔案不需要進行任何處理,代碼如下:
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD SQL Map Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration></configuration>
2 測試,編寫controller
關於sqlSession的擷取,存在兩種方式:
2.1 利用mybatis-spring-1.3.1.jar提供的SqlSessionTemplate進行資料庫操作。
2.2 讓IOC容器直接注入mapper介面的執行個體,擷取sqlSession,進行資料庫操作。
此處採用方式2:
@Autowired IGirlDao iGirlDao; @RequestMapping(value = {"/demo"},method = RequestMethod.GET) public List<Girl> method() { List<Girl> result = iGirlDao.selectAll(); return result; }