针对好多同学对ssm框架的整体理解不是特别的透彻,今天我就利用点时间给大家进行详细的讲解,如果有不妥之处请大家指出来,以便今后更好的学习。
我们所说的ssm框架指的是spring ,springmvc以及mybatis的统称。 简称就是ssm。
spring+springmvc+mybatis框架中用到了三个XML配置文件,下面我就大家进行详细的讲解。
用到的三个配置文件分别是web.xml ,spring-mvc.xml ,以及spring-mybatis.xml。
web.xml是关联整个项目的配置文件,是每个web项目都会有的。。
spring-mvc.xml是springmvc的一些相关的配置。
spring-mybatis是spring-mybaits的相关配置。
但是我们在项目中还会用到两个资源属性文件
jdbc.properties以及log4j.properties.
jdbc.properties是关于jdbc的配置
log4j.properties是日志文件的配置
下面我就针对以上的内容进行详细的分析。
一:web.xml
为了方便大家的理解,我进行了中文的注释,以便大家更好的明白。
这个得重点涉及的是<servlet>中的配置。
这里面配置了前段控制器。也就是说在ssm框架中,前段控制器起着最重要的作用。
过滤器——编码过滤器
监听器——spring监听器
servlet——前段控制器
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"></web-app>
1.配置spring容器相关的资源文件和创建容器的监听类
<!--加载spring配置文件-->
配置spring容器<!-- Spring和mybatis的配置文件 -->
<param-name>contextConfigLocation</param-name>
<param-value>classpath: spring-mybatis.xml</param-value>
</context-param>
配置一个监听器:
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
< listener>注意有的配置文件是spring-mybatis.xml 以及applicationContext.xml (里面整合了spring-mvc以及spring-mybaits的配置文件)
2.配置springmvc的核心servlet接管请求
<!-- SpringMVC的前端控制器 -->
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- 加载springmvc配置文件的路径及名称 -->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring-mybatis.xml</param-value>
注意有的配置文件是spring-mybatis.xml 以及applicationContext.xml (里面整合了spring-mvc以及spring-mybaits的配置文件) </init-param>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<!-- 由SpringMVC拦截所有请求 -->
<url-pattern>/</url-pattern>
</servlet-mapping>
1.<!--解决中文乱码问题 -->
<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>
二:spring-mvc.xml
实现基本功能的配置
1、配置映射器与适配器
<!-- 开启SpringMVC注解模式 -->
配置 <mvc:annotation-driven/>
2.自动扫描该包,使SpringMVC认为包下用了@controller注解的类是控制器
配置 <context:component-scan base-package="com.springmvc.controller"/><!--修改成controller文件存放位置-->
特别注意的是这个地方是包名,具体的根据自己建立的包名进行修改。
<context:component-scan base-package="com.bjhst.controller"/>
3.配置视图解析器
<mvc:annotation-driven/>
相当于注册了DefaultAnnotationHandlerMapping(映射器)和AnnotationMethodHandlerAdapter(适配器)两个bean.即解决了@Controller注解的使用前提配置。
context:component-scan 对指定的包进行扫描,实现注释驱动Bean定义,同时将bean自动注入容器中使用。即解决了@Controller标识的类的bean的注入和使用。
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!-- 前缀和后缀 -->
<property name="prefix" value="/"/>
<property name="suffix" value=".jsp"/>
</bean>
三:spring-mybatis.xml
实现基本功能的配置
1.自动扫描,将标注Spring注解的类自动转化Bean,同时完成Bean的注入
配置 <context:component-scan base-package="com.bjhst"/>
2. 加载数据资源属性文件
- <bean id="propertyConfigurer"
- class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
- <property name="location" value="classpath:jdbc.properties" />
- </bean>
3 .配置数据源
三种数据源的配置方式 http://blog.csdn.net/yangyz_love/article/details/8199207
说明:这是一种推荐说明的数据源配置方式,它真正使用了连接池技术
<!-- 配置数据源 dbcp数据库连接池 -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName" value="${driver}" />
<property name="url" value="${url}" />
<property name="username" value="${username}" />
<property name="password" value="${password}" />
<!-- 初始化连接大小 --> <property name="initialSize" value="${initialSize}"></property>
<!-- 连接池最大数量 --> <property name="maxActive" value="${maxActive}"></property>
<!-- 连接池最大空闲 --> <property name="maxIdle" value="${maxIdle}"></property>
<!-- 连接池最小空闲 --> <property name="minIdle" value="${minIdle}"></property>
<!-- 获取连接最大等待时间 --> <property name="maxWait" value="${maxWait}"></property>
</bean>
4. 配置sessionfactory
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
-
<!-- 数据库连接池 -->
-
<property name="dataSource" ref="dataSource" />
-
5.装配Dao接口
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.bjhst.dao" /><!-- DAO接口所在包名,Spring会自动查找其下的类 -->
6. 声明式事务管理
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
7. 注解事务切面
<span style="font-family: Arial, Helvetica, sans-serif;"> 这个没有用
<pre name="code" class="html"> <tx:annotation-driven transaction-manager="transactionManager"/>
四:jdbc.properties
- driver=com.mysql.jdbc.Driver //连接的是mysql数据库
- url=jdbc:mysql://127.0.0.1:3306/gao?characterEncoding=utf-8 //这个是iwo的数据库名称
- username=root //数据库的用户名
- password=123456 //数据库的连接密码
- #定义初始连接数
- initialSize=0
- #定义最大连接数
- maxActive=20
- #定义最大空闲
- maxIdle=20
- #定义最小空闲
- minIdle=1
- #定义最长等待时间
- maxWait=60000
五:log4j.properties
- #定义LOG输出级别
- 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