SSM框架整合
SSM(Spring+SpringMVC+MyBatis)框架集由Spring、MyBatis两个开源框架整合而成(SpringMVC是Spring中的部分内容)。
Spring
Spring就像是整个项目中装配bean的大工厂,在配置文件中可以指定使用特定的参数去调用实体类的构造方法来实例化对象。也可以称之为项目中的粘合剂。
Spring的核心思想是IoC(控制反转),即不再需要程序员去显式地`new`一个对象,而是让Spring框架帮你来完成这一切。
SpringMVC
SpringMVC在项目中拦截用户请求,它的核心Servlet即DispatcherServlet承担中介或是前台这样的职责,将用户请求通过HandlerMapping去匹配Controller,Controller就是具体对应请求所执行的操作。SpringMVC相当于SSH框架中struts。
Mybatis
Mybatis是对jdbc的封装,它让数据库底层操作变的透明。Mybatis的操作都是围绕一个sqlSessionFactory实例展开的。Mybatis通过配置文件关联到各实体类的Mapper文件,Mapper文件中配置了每个类对数据库所需进行的sql语句映射。在每次与数据库交互时,通过sqlSessionFactory拿到一个sqlSession,再执行sql命令。
页面发送请求给控制器,控制器调用业务层处理逻辑,逻辑层向持久层发送请求,持久层与数据库交互,后将结果返回给业务层,业务层将处理逻辑发送给控制器,控制器再调用视图展现数据。
(摘自百度)
现在使用eclipse作为开发工具;maven作为项目管理工具;使用逆向工程连接数据库,生成表对应的实体类、mapper接口以及接口映射的sql文件,搭建一个SSM纯净版的web项目,供大家学习交流。
步骤如下:
1. 导入逆向工程,更改相关配置,运行逆向工程项目,生成项目实体类、mapper接口以及接口映射的sql文件;
2. 创建maven工程的web项目,通过pom文件导入和管理相应的jar包;
3. 编写web.xml,在web.xml中加载Spring配置文件(非必须,可整合在spring整合mybatis的配置文件中)、spring整合mybatis的配置文件、Mybatis的配置文件(非必须,可整合在spring整合mybatis的配置文件中)、SpringMVC配置文件,以及数据源文件和日志文件的配置;
4. 编写jsp页面代码;
5. 编写后端java代码,如controller、service层(dao层逆向工程生成);
6. 项目运行并访问。
现在按以上步骤进行项目搭建
一、导入逆向工程,更改相关配置,运行逆向工程项目,生成项目实体类、mapper接口以及接口映射的sql文件;
逆向工程可在mybatis官网下载,如下
相关配置的修改
运行后的目录结构
二、创建maven工程的web项目,通过pom文件导入和管理相应的jar包;
创建项目后的目录结构
pom文件依赖的管理,以及tomcat插件、编译插件的配置
pom.xml配置,相关jar的导入和管理,tomcat插件和编译插件
<build>
<finalName>maven01</finalName>
<plugins>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<port>8080</port>
<path>/ssmtest001</path>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.2</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
三、编写web.xml,在web.xml中加载Spring配置文件(非必须,可整合在spring整合mybatis的配置文件中)、spring整合mybatis的配置文件、Mybatis的配置文件(非必须,可整合在spring整合mybatis的配置文件中)、SpringMVC配置文件,以及数据源文件和日志文件的配置;
web.xml的配置,注意加载配置文件时classpath的配置
<!-- Spring和mybatis的配置文件 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring/spring-mybatis.xml,classpath:spring/applicationContext.xml</param-value>
</context-param>
<!-- Spring装配xml文件监听器 -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>classpath:log4j.properties</param-value>
</context-param>
<context-param>
<param-name>log4jRefreshInterval</param-name>
<param-value>10000</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
</listener>
<filter>
<filter-name>encoding</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>encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<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.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
spring配置文件applicationContent.xml
<!--扫描包Service实现类 -->
<context:component-scanbase-package="com.it.service"></context:component-scan>
</beans>
spring整合mybatis的配置文件spring-mybatis.xml
<!--加载数据库配置文件 -->
<context:property-placeholderlocation="classpath:db.properties"/>
<!--引入配置文件,方式二 -->
<!-- <beanid="propertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<propertyname="location" value="classpath:db.properties"/>
</bean> -->
<!--配置连接池 -->
<beanid="dataSource"class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<propertyname="driverClassName" value="${jdbc.driver}" />
<propertyname="url" value="${jdbc.url}" />
<propertyname="username" value="${jdbc.username}" />
<propertyname="password" value="${jdbc.password}" />
<!--初始化连接大小 -->
<propertyname="initialSize"value="${initialSize}"></property>
<propertyname="maxActive"value="${maxActive}"></property>
<propertyname="maxIdle"value="${maxIdle}"></property>
<propertyname="minIdle"value="${minIdle}"></property>
<propertyname="maxWait"value="${maxWait}"></property>
</bean>
<!--配置SqlSessionFactory mybatis工厂对象 -->
<beanid="sqlSessionFactoryBean"class="org.mybatis.spring.SqlSessionFactoryBean">
<propertyname="dataSource" ref="dataSource"/>
<propertyname="configLocation"value="classpath:mybatis/sqlMapConfig.xml"/>
<!--自动扫描mapping.xml文件 -->
<propertyname="mapperLocations"value="classpath:com/it/mapper/*.xml"></property>
</bean>
<beanclass="org.mybatis.spring.mapper.MapperScannerConfigurer">
<propertyname="basePackage" value="com.it.mapper"/>
</bean>
<!--配置事务 -->
<beanid="transactionManager"class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<propertyname="dataSource" ref="dataSource" />
</bean>
<!--开启注解事务 -->
<tx:annotation-driventransaction-manager="transactionManager"/>
mybatis的配置文件SqlMapConfig.xml
<!--打印SQL语句 -->
<settings>
<settingname="logImpl" value="STDOUT_LOGGING"/>
</settings>
<typeAliases>
<!--指定扫描包,会把包内所有的类都设置别名,别名的名称就是类名,大小写不敏感 -->
<packagename="com.it.pojo"/>
</typeAliases>
<!-- <plugins>
<plugininterceptor="com.github.pagehelper.PageInterceptor">
分页参数合理化
<property name="reasonable" value="true"/>
</plugin>
</plugins> -->
springmvc的配置文件,springmvc.xml
<context:component-scan base-package="com.it.controller"/>
<!-- <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"/>-->
<!-- <beanclass="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/>-->
<mvc:annotation-driven />
<beanclass="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix"value="/WEB-INF/jsp/"/>
<property name="suffix"value=".jsp"/>
</bean>
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="defaultEncoding" value="utf-8"/>
<property name="maxUploadSize"value="10485760000" />
<property name="maxInMemorySize"value="40960" />
<property name="resolveLazily"value="true"/>
</bean>
db.properties数据源的配置
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/xxxpassword=root
#定义初始连接数
initialSize=0 #定义最大连接数
maxActive=20 #定义最大空闲
maxIdle=20 #定义最小空闲
minIdle=1 #定义最长等待时间
maxWait=60000
log4j.properties日志文件的配置
log4j.rootLogger=INFO,Console,File
#定义日志输出目的地为控制台
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.Target=System.out
#可以灵活地指定日志输出格式,下面一行是指定具体的格式
log4j.appender.Console.layout= org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern=[%c]- %m%n
#文件大小到达指定尺寸的时候产生一个新的文件
log4j.appender.File =org.apache.log4j.RollingFileAppender
#指定输出目录
log4j.appender.File.File= logs/ssm.log
#定义文件最大大小
log4j.appender.File.MaxFileSize= 10MB
# 输出所以日志,如果换成DEBUG表示输出DEBUG以上级别日志
log4j.appender.File.Threshold= ALL
log4j.appender.File.layout= org.apache.log4j.PatternLayout
log4j.appender.File.layout.ConversionPattern=[%p] [%d{yyyy-MM-dd HH\:mm\:ss}][%c]%m%n
四、编写后端代码
编写controller
项目结构
五、项目启动,访问
启动采用maven中配置的tomcat插件启动
项目右键,执行,run as,maven configuration...
输入命令,tomcat:run
控制台日志输出
访问
项目下载链接
链接:https://pan.baidu.com/s/1PMW_b7TszulnTTD0dR_afw
提取码:x6n0