总结
干啥啥不行,追求编程第一名!!
小提示:在做ssm集成时,最好每个关键点进行测试,不要一口气直接整合完毕,不然你会哭的!
三大框架的集成
Mybatis:基于ORM的数据库持久化框架
SpringMvc:表现层【controller + 页面】的框架
Spring:基于IOC和AOP的容器框架,用来整合其他框架
集成思路
集成核心思想:
把当前框架的核心类,交给Spring管理(IOC)。
例如Mybatis中的SqlSession、SqlSssionFactory这样就不用每次都创建这些对象了
集成步骤
1.集成准备:
- 创建web工程
- 部署项目:将工程根目录路径复制到server.xml中
- 创建index.jsp并测试
- 导包:详见链接:https://pan.baidu.com/s/1x5Ju4JC2DkCmt4mvV1VFdA
提取码:ikjs
2.Spring
- 检查Spring的Jar包是否导入
- 创建资源文件夹目录resources【Source Folder】
- 创建Spring的配置文件applicationContext.xml
3.Spring + Mybatis:
- 创建数据库,导入表
- 编写属性文件jdbc.properties 放在文件夹(resources)中
- 将属性文件交给spring管理
- 将连接池对象交给spring管理
- 编写实体类Xxx domain包
- 创建XxxMapper接口 mapper包
- 配置mapper映射文件 (文件名同XxxMapper接口,里面写的是sql语句)
- spring管理sqlSessionFactory
- spring管理mapper接口
- 写service层 需在applicationContext.xml中配置 service包的扫描包路径
4.Spring+Mybatis+SpringMvc:
-
web.xml中配置 :
监听器listener
加载加载applicationContext.xml核心配置文件
前端控制器dispatcherServlet
加载spring-mvc.xml核心配置文件文件
过滤器Filter -
resources文件夹下创建spring-mvc.xml并配置:
静态资源放行
扫描包路径 controller层
让@requestMapping生效
视图解析器 -
编写Controller
各配置文件具体内容
1.web.xml
- 监听器 、 加载applicationcontext.xml
- 核心前端控制器 、加载spring-mvc.xml核心配置文件
- 过滤器
<!--1.1 监听器 -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- 加载applicationContext.xml核心配置文件 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
<!-- 1.2配置核心控制器 -->
<servlet>
<servlet-name>dispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- 加载springmvc核心配置文件 -->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring-mvc.xml</param-value>
</init-param>
<!-- 启动即加载 优先级 -->
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcherServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<!--1.3配置过滤器Filter 处理字符集编码问题 -->
<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>
2.spring-mvc.xml
- 开启注解扫描 controller层
- 放行静态资源
- 让注解@requestMapping生效
- 视图解析器
<!-- 1.开启注解扫描!! -->
<context:component-scan base-package="cn.itsource.controller"></context:component-scan>
<!-- 2.放行静态资源 -->
<mvc:default-servlet-handler />
<!-- 3.让@requestMapping生效 -->
<mvc:annotation-driven />
<!-- 4.配置视图解析器 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
3.applicationContext.xml
- 加载jdbc.properties
- spring管理数据库 BasicDataSource
- 将sqlSessionFactory交给spring管理
- 将Mapper接口交给spring管理
- 扫描包路径 service层
<!-- 1.加载属性配置文件 -->
<context:property-placeholder location="classpath:jdbc.properties" />
<!-- 2.Spring管理数据库BasicDataSource -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="${jdbc.driverClassName}"></property>
<property name="url" value="${jdbc.url}"></property>
<property name="username" value="${jdbc.username}"></property>
<property name="password" value="${jdbc.password}"></property>
</bean>
<!-- 3.将SqlSessionFactory交给Spring去管理 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<!-- 注入数据源,因为获取连接之后,才能打开会话 -->
<property name="dataSource" ref="dataSource"></property>
<!-- 配置别名 -->
<property name="typeAliasesPackage" value="cn.itsource.domain"></property>
<!-- 加载所有的mapper文件 -->
<property name="mapperLocations" value="classpath:cn/itsource/mapper/*Mapper.xml"></property>
</bean>
<!-- 4.将Mapper接口交给Spring去管理 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<!-- 指定mapper接口的包路径 -->
<property name="basePackage" value="cn.itsource.mapper"></property>
</bean>
<!-- 5.扫描包路径 -->
<context:component-scan base-package="cn.itsource.service" />
</beans>