SSM框架的整合
在分别学习了Spring,SpringMVC和Mybatis三大框架之后,接下来最重要的就是这三大框架的整合,那话不多说,直接进入正题。
1添加jar包
Spring框架的jar包
SpringMVC框架的jar包
Mybatis框架的jar包
Oracle或者Mysql的驱动包
C3P0的数据源框架
Log4j
Junit
Mybatis和Spring框架集成的jar包:mybatis-spring-1.3.0.jar
jstl
具体如下图所示
2配置Web.xml
设置首页
<welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list>
配置过滤器,解决乱码问题
<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>forceEncoding</param-name> <param-value>false</param-value> </init-param> </filter> <filter-mapping> <filter-name>CharacterEncodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <filter-mapping> <filter-name>CharacterEncodingFilter</filter-name> <url-pattern>*.jsp</url-pattern> </filter-mapping>
加载Spring配置文件,项目启动时,创建ApplicationContext对象,实现对项目同一管理,同时配置Spring的监听器,监听当前正在被使用的对象,管理对象的生命周期
<context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spring-common.xml</param-value> </context-param> <!-- spring监听,负责监听当前项目正在使用的bean对象 --> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener>
配置SpringMVC的前置控制器DispatcherServlet,最先获取页面的请求,加载SpringMVC配置的文件
<!-- 配置springmvc前置控制器: 最先获取用户请求,通过调配其他对象,完成一次请求和响应 --> <servlet> <servlet-name>springmvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <!-- springmvc-servlet.xml默认的存放位置是WEB-INF文件夹下 如果想改变文件的存放路径, 就使用init-param节点重新指定路径 ,springmvc-servlet.xml文件名中的springmvc是web.xml中 配置DispatcherServlet的servlet-name的值 ,如果移动springmvc的配置文件,则可以修改文件名 --> <param-value>classpath:springmvc-common.xml</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>springmvc</servlet-name> <!-- url-pattern属性是整个SpringMVC框架的请求的总规则, 请求格式必须先符合这个规则,才能进入SpringMVC框架 然后还要符合springmvc-servlet.xml文件中某个控制器bean的name属性格式 --> <url-pattern>/</url-pattern> </servlet-mapping>
3 配置jdbc.properties
配置设置连接数据库的配置信息,若使用Oracle则配置Oracle,若使用Mysql,则配置mysql;这里以Mysql为例
url=jdbc:mysql://localhost:3306/order_system uname=root upwd= driver=com.mysql.jdbc.Driver
4 配置Spring-Common.xml文件
加载jdbc.properties,为Spring注入数据源对象,提供访问数据库的参数
<!-- 加载jdbc.properties资源文件 --> <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="locations"> <list> <value>classpath:jdbc.properties</value> </list> </property> </bean>
注入数据源对象(采用C3P0数据源框架)
<!-- 注入数据源对象 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="user" value="${uname}"></property>
<property name="password" value="${upwd}"></property>
<property name="driverClass" value="${driver}"></property>
<property name="jdbcUrl" value="${url}"></property>
</bean>
注意:这里仅仅设置了资源文件中的键对应的值是多少,还可以设置很多高级属性,若想了解,情参照C3P0文档!
注入mybatis的核心对象sqlSessionFactory,实现数据操作,并交给Spring管理
<!-- 注入mybatis的核心对象sqlSessionFactory,交给spring管理 --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean" > <!-- sqlSessionFactory依赖dataSource --> <property name="dataSource" ref="dataSource"></property> <!-- 加载mybatis的配置文件 --> <property name="configLocation" value="classpath:mybatis-config.xml"></property> <!--配置mybatis分页插件 --> <property name="plugins"> <bean class="com.github.pagehelper.PageHelper"> <!-- 指定当前执行的sql语句的类型: mysql --> <property name="properties" value="dialect=mysql"></property> </bean> </property> </bean>
注意:这里多配了一个分页插件,关于这个分页插件若明白,请听下回分解!
指定Spring框架扫描所有需要注入sqlSessionFactory的接口
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.dao"></property>
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" ></property>
</bean>
注入事务管理对象,并且开启注解实现事务管理的功能
<!-- 注入Spring事务管理对象 -->
<bean id="a"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<!-- 事务管理对象依赖数据源对象 -->
<property name="dataSource" ref="dataSource"></property>
</bean>
<!-- 开启使用注解实现事务控制的功能 指定自定义事务管理对象 -->
<tx:annotation-driven transaction-manager="a" />
5 配置SpringMVC-common.xml文件
设置所有编写有注解的类所在包的范围
<context:component-scan base-package="com"></context:component-scan>
设置controller业务处理完毕后跳转路径的规则 注入视图解析器
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <!-- 在ModelAndView对象中设置的ViewName的前后追加字符串,拼成完成的路径 --> <property name="prefix" value="/WEB-INF/jsp/"></property> <property name="suffix" value=".jsp"></property> </bean>
若自己有业务需求,也可以在里面配置,例如配置全局的转换器和自定义的拦截器等
<!-- 配置全局的类型转换器 --> <bean id="myConverter" class="org.springframework.context.support.ConversionServiceFactoryBean"> <property name="converters"> <set> <bean class="com.util.MyDateConverter"></bean> </set> </property> </bean> <!-- 注册自定义的拦截器 --> <mvc:interceptors> <mvc:interceptor> <mvc:mapping path="/user/*"/> <bean class="com.interceptor.UserInterceptor"></bean> </mvc:interceptor> </mvc:interceptors> <mvc:interceptors> <mvc:interceptor> <mvc:mapping path="/admin/*"/> <bean class="com.interceptor.AdminInterceptor"></bean> </mvc:interceptor> </mvc:interceptors>
接下来的就是一些比较简单和常规操作了
6 配置log4j
log4j.rootLogger=INFO, Console #Console DEBUG 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
7配置mybatis-config.xml
<!-- 设置mybatis自动匹配属性与列名的模式 --> <settings> <setting name="autoMappingBehavior" value="FULL"/> </settings> <!-- 给实体类命别名 --> <typeAliases> <!-- name="com.entity" 指定实体类所在的包的全称 --> <package name="com.entity"/> <package name="com.dao"/> </typeAliases> <!-- 加载所有的接口映射文件 --> <mappers> <mapper resource="com/mapper/AdminMapper.xml" /> <mapper resource="com/mapper/CatelogMapper.xml" /> <mapper resource="com/mapper/EmailMapper.xml" /> <mapper resource="com/mapper/FoodMapper.xml" /> <mapper resource="com/mapper/MessageMapper.xml" /> <mapper resource="com/mapper/NoticeMapper.xml" /> <mapper resource="com/mapper/OrderMapper.xml" /> <mapper resource="com/mapper/OrdermMapper.xml" /> <mapper resource="com/mapper/UserMapper.xml" /> </mappers>
8 编写实体类,接口,service层以及实现层,controller层等等