二、SSM整合
整合的思路就从项目的整体结构、配置文件和实现类入手,因为只是搭建一个SSM环境,业务功能只写了一个,还请见谅。
项目的整体结构
Maven项目采用了约定的形式:
- src/main/java 存放java文件
- src/main/resources 存放配置文件
- src/test/java 存放测试类
- src/test/resources 存放测试类的资源文件
- pom.xml Maven的配置文件
这个小项目采用的是spring4.2.3+MyBatis3.2.6版本,应该算是比较新的,Maven项目刚开始做的话我觉得pom.xml文件配置比较麻烦,不知道具体使用哪个依赖包,导致Maven工程老是不成功,这也是初学者的一个麻烦点,虽然不是难点,咋这里,我给出pom.xml的所有配置。
<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/xsd/maven-4.0.0.xsd"> <modelVersion></modelVersion> <groupId>ssm4</groupId> <artifactId>ssm4</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>war</packaging> <name>ssm4</name><description/> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <spring.version>4.2.3.RELEASE</spring.version> <junit.version>4.11</junit.version> <mybatis.version>3.2.6</mybatis.version> <mysql.version>5.1.37</mysql.version> <servlet-api.version>3.0-alpha-1</servlet-api.version> <jsp-api.version>2.2</jsp-api.version> <jstl.version>1.2</jstl.version> <ojdbc14.version>10.2.0.4.0</ojdbc14.version> <fastjson.version>1.1.39</fastjson.version> <commons-dbcp2.version>2.0</commons-dbcp2.version> <commons-pool2.version>2.2</commons-pool2.version> <commons-logging.version>1.1.3</commons-logging.version> <commons-io.version>1.3.2</commons-io.version> <commons-lang3.version>3.3.1</commons-lang3.version> <commons-fileupload.version>1.2.1</commons-fileupload.version> <log4j.version>1.2.17</log4j.version> <slf4j.version>1.7.6</slf4j.version> <dom4j.version>1.6.1</dom4j.version> <jfreechart.version>1.0.17</jfreechart.version> <shiro.version>1.2.3</shiro.version> <aspectjweaver.version>1.7.4</aspectjweaver.version> <bonecp.version>0.8.0.RELEASE</bonecp.version> <druid.version>1.0.4</druid.version> <c3p0.version>0.9.5.1</c3p0.version> <testng.version>6.8.8</testng.version> <freemarker.version>2.3.20</freemarker.version> <velocity.version>1.7</velocity.version> <tapestry.version>5.3.7</tapestry.version> <asm.version>4.2</asm.version> <cglib.version>3.1</cglib.version> </properties> <build> <plugins> <plugin> <artifactId>maven-compiler-plugin</artifactId> <version>2.3.2</version> <configuration> <source>1.7</source> <target>1.7</target> </configuration> </plugin> <plugin> <artifactId>maven-war-plugin</artifactId> <version>2.2</version> <configuration><version>3.1</version> <failOnMissingWebXml>false</failOnMissingWebXml> </configuration> </plugin> </plugins> </build> <dependencies> <!-- junit --> <dependency><groupId>junit</groupId> <artifactId>junit</artifactId> <version>${junit.version}</version> <scope>test</scope> </dependency> <!-- Spring相关包含springmvc --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>${spring.version}</version> </dependency> <ependency> <groupId>org.springframework</groupId> <artifactId>spring-context</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-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-aop</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-tx</artifactId> <version>${spring.version}</version> </dependency> <dependency><groupId>org.springframework</groupId> <artifactId>spring-orm</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jms</artifactId> <version>${spring.version}</version> </dependency> <!-- mybaits :包含整合spring --> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>${mybatis.version}</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>1.2.2</version> </dependency> <dependency> <groupId>org.mybatis.caches</groupId> <artifactId>mybatis-ehcache</artifactId> <version>1.0.2</version> </dependency> <!-- JDBC驱动 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>${mysql.version}</version> </dependency> <!-- 数据源 --> <!-- 日志库 --> <dependency> <groupId>commons-logging</groupId> <artifactId>commons-logging</artifactId> <version>${commons-logging.version}</version> </dependency> <dependency><groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>${log4j.version}</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>${slf4j.version}</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>${slf4j.version}</version> </dependency> <!-- 依赖的WEB类库 --> <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>jsp-api</artifactId> <version>${jsp-api.version}</version> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>${servlet-api.version}</version> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>${jstl.version}</version> </dependency> <!-- 依赖的测试类库 --> <dependency><groupId>org.springframework</groupId><artifactId>spring-test</artifactId><version>${spring.version}</version></dependency> <dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>${junit.version}</version></dependency><dependency><groupId>org.testng</groupId><artifactId>testng</artifactId><version>${testng.version}</version></dependency> <!-- 依赖的公共类库 --><dependency><groupId>org.apache.commons</groupId><artifactId>commons-io</artifactId><version>${commons-io.version}</version></dependency> <dependency> <groupId>org.apache.commons</groupId><artifactId>commons-lang3</artifactId><version>${commons-lang3.version}</version></dependency> <dependency><groupId>org.apache.commons</groupId><artifactId>commons-collections4</artifactId><version>4.0</version></dependency> <>dependency><groupId>org.kuali.commons</groupId><artifactId>commons-beanutils</artifactId><version>1.8.3-kuali-4</version></dependency> <!-- 其他 --> <dependency><groupId>org.aspectj</groupId><artifactId>aspectjweaver</artifactId><version>${aspectjweaver.version}</version></dependency> <dependency><groupId>dom4j</groupId><artifactId>dom4j</artifactId><version>${dom4j.version}</version></dependency> <dependency><groupId>com.mchange</groupId><artifactId>c3p0</artifactId><version>${c3p0.version}</version></dependency> </dependencies> </project>
Spring和MyBatis进行整合
spring和MyBatis整合的配置文件
<!-- 自动扫描 --> <context:component-scan base-package="cn.shopin.manage"> </context:component-scan> <!-- 引入配置文件 --> <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="location" value="classpath:jdbc.properties"> </property> </bean> <!-- 配置dataSource --><bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <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> <!-- spring和myBatis整合 --><bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource"ref="dataSource"> </property> <!-- 自动扫描mapper.xml文件 --> <property name="mapperLocations" value="classpath*:cn/shopin/manage/mapper/*.xml"></property></bean> <!-- 扫描mybatis的mapper文件,和接口,产生代理对象 --> <!-- DAO接口所在包名,Spring会自动查找其下的类 --><bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="cn.shopin.manage.mapper"> </property> <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property> </bean> <!-- (事务管理)transaction manager, use JtaTransactionManager for global tx --> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource"></property> </bean>
MyBatis的映射文件
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="cn.shopin.ssm.mapper.PersonMapper"> <select id="listAll" resultType="cn.shopin.ssm.domain.Person"> select * from person </select> </mapper>
MyBatis的配置文件
因为和spring进行了整合,MyBatis的配置文件基本上不用写其他信息。
<?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></configuration>
到这里,spring和MyBatis就算是整合完成。
Spring和springmvc整合
springmvc是包含在spring中的,基本上是不需要单独在配置什么。
<!-- 处理器,处理器映射器,处理器适配器,视图解析器,注解扫描 --> <context:component-scanB base-package="cn.shopin.ssm.web.controller"> </context:component-scan> <mvc:annotation-driven></mvc:annotation-driven> <bean id="jspView" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/pages"/> <property name="suffix" value=".jsp"> </property> </bean>
Controller层:
@Controller public class PersonController { @Resource PersonService personService; @RequestMapping("person/listAll.action") public String listAll(Model model){ List personList = personService.listAll(); model.addAttribute("personList", personList); return"/person/jPersonList"; } }
web.xml文件的配置:
<context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath*:spring/spring-mybatis.xml</param-value> </context-param> <listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <servlet><servlet-name>springmvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath*:springmvc/springmvc-servlet.xml</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>springmvc</servlet-name> <url-pattern>*.action</url-pattern> </servlet-mapping> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list>
运行效果: