SSM整合配置文件详解
Posted mojito_zhang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SSM整合配置文件详解相关的知识,希望对你有一定的参考价值。
一、文件内容列表
1.1 mybatis
核心配置文件(可省略)
-
别名配置<typeAliases>
可以配置实体类的别名
-
设置配置<settings>
可以对mybatis进行相关设置
映射配置文件
- 常规映射配置文件
1.2 spring
配置文件
- spring相关
- 加载数据库配置文件
- 配置数据源 dataSource
- 配置 SqlSession 工厂类 【可以指定 Mybatis 核心配置文件 和映射配置文件路径、指定别名】
- 开启 dao 层的mapper接口扫描【配置一个扫描的类】
- mybatis整合相关
- 开启Ioc注解扫描,扫描除控制层外的类【需要配置扫描包】
- 开启Aop注解扫面
- 开启事务注解扫描
- 配置 spring 平台事务管理器【需要注入数据源】
1.3 springmvc
配置文件
- 启用注解扫描器, 扫描被控制层的类【配置扫描的包】
- 加载映射注解驱动
- 配置处理静态资源的驱动
- 配置拦截器
- 配置文件上传解析器
- 配置视图解析器
- 配置视图控制器 <mvc: view-controller>
1.4 其它配置文件
数据库连接配置文件
- 数据库连接的基本配置【驱动、url、用户名、密码】
web项目配置文件
- 配置首页【欢迎页面】
- 开启 Spring <context-param> 【加载spring配置文件】
- 配置加载Spring文件的监听器
- 开启SpringMVC 【配置DispatcherServlet】
- 配置SpringMVC 字符编码过滤器 【要在所有过滤器的最前面】
- 配置请求方式过滤器 【RESTful风格使用】
二、实例
web.xml
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd" >
<web-app>
<display-name>Archetype Created Web Application</display-name>
<description>a simple student management system,created by SSM framework ~</description>
<!-- 启动Spring -->
<context-param>
<!-- 启动Spring: 加载Spring核心配置 -->
<param-name>contextConfigLocation</param-name>
<!-- 注意: 使用classpath:path(防止异常:FileNotFoundException) -->
<param-value>classpath:spring-conf/applicationContext.xml</param-value>
</context-param>
<!-- 启动Spring: 配置加载Spring文件的监听器 -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- 配置Spring MVC编码过滤器 -->
<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>
<init-param>
<param-name>forceRequestEncoding</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>forceResponseEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- 启动Spring MVC -->
<servlet>
<!-- 配置Spring MVC的前端核心控制器 -->
<servlet-name>spring_mvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- 加载Spring MVC配置文件 -->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring-conf/springmvc-config.xml</param-value>
</init-param>
<!-- 服务器启动后立即加载Spring MVC配置文件 -->
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>spring_mvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<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>forceResponseEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>characterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
applicationContext.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
https://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd
http://www.springframework.org/schema/aop
https://www.springframework.org/schema/aop/spring-aop.xsd">
<description>Spring configuration file</description>
<!-- 读取c3p0.properties中的数据库配置信息 -->
<context:property-placeholder location="classpath:database-conf/c3p0.properties"/>
<!-- 配置数据源 -->
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<!-- 数据库驱动 -->
<property name="driverClass" value="${c3p0.driverClass}"/>
<!-- 连接数据库的url -->
<property name="jdbcUrl" value="${c3p0.jdbcUrl}"/>
<!-- 连接数据库的用户名 -->
<property name="user" value="${c3p0.user}"/>
<!-- 连接数据库的密码 -->
<property name="password" value="${c3p0.password}"/>
<!-- 初始化连接数 -->
<property name="initialPoolSize" value="${c3p0.initialPoolSize}"/>
<!-- 最大连接数 -->
<property name="maxPoolSize" value="${c3p0.maxPoolSize}"/>
<!-- 最小连接数 -->
<property name="minPoolSize" value="${c3p0.minPoolSize}"/>
<!-- 连接的生存时间 -->
<property name="maxIdleTime" value="${c3p0.maxIdleTime}"/>
</bean>
<!-- 配置Spring事务管理器 -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<!-- 原理:控制数据源 -->
<property name="dataSource" ref="dataSource"/>
</bean>
<!-- 开启事务注解扫描 -->
<tx:annotation-driven transaction-manager="transactionManager"/>
<!-- MyBatis与Spring整合 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<!-- 注入数据源 -->
<property name="dataSource" ref="dataSource"/>
<!-- 指定Mapper映射文件位置 -->
<property name="mapperLocations" value="classpath:mapper/*.xml"/>
<!-- 指定MyBatis核心配置文件位置 -->
<property name="configLocation" value="classpath:/mybatis-conf/mybatis-config.xml"/>
<!-- 引入插件 -->
<property name="plugins">
<array>
<!-- 引入MyBaits分页插件 -->
<bean class="com.github.pagehelper.PageInterceptor">
<property name="properties">
<!-- 指定数据库类型 -->
<value>helperDialct=mysql</value>
</property>
</bean>
</array>
</property>
</bean>
<!-- 开启Mapper接口扫描器: 扫描Dao层 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="pers.sms.dao"/>
</bean>
<!-- 开启Spring IOC注解扫描器: 扫描Servie层-->
<context:component-scan base-package="pers.sms.service"/>
<!-- 开启Spring AOP注解扫描器 -->
<aop:aspectj-autoproxy />
</beans>
spring-mvc.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
https://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/mvc
https://www.springframework.org/schema/mvc/spring-mvc.xsd">
<description>Spring-MVC configuration file</description>
<!-- 启用注解扫描器: 扫描被@Controller注解的类 -->
<context:component-scan base-package="pers.sms.controller"/>
<!-- 加载注解驱动 -->
<mvc:annotation-driven/>
<!-- 处理静态资源 -->
<mvc:default-servlet-handler/>
<!-- 配置拦截器 -->
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/**"/>
<mvc:exclude-mapping path="/static/h-ui/**"/>
<mvc:exclude-mapping path="/static/easyui/**"/>
<mvc:exclude-mapping path="/system/login"/>
<mvc:exclude-mapping path="/system/getVerifiCodeImage"/>
<bean class="pers.sms.interceptor.LoginInterceptor"/>
</mvc:interceptor>
</mvc:interceptors>
<!-- 配置文件上传解析器 -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- 指定请求编码格式 -->
<property name="defaultEncoding" value="UTF-8"/>
<!-- 指定指定允许上传文件的最大值(20MB) -->
<property name="maxUploadSize" value="20971520"/>
</bean>
<!-- 配置视图解析器 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/view/"/>
<property name="suffix" value=".jsp"/>
</bean>
</beans>
mybatis-conf.xml
<?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>
<!-- 为sql映射文件中的输入/输出参数设置类型别名 -->
<typeAliases>
<package name="pers.sms.bean"/>
</typeAliases>
<!-- 进行mybatis相关设置-->
<settings>
<!-- 配置日志 -->
<!-- <setting name="logImpl" value="log4j"/>-->
<setting name="logImpl" value="STDOUT_LOGGING"/>
<setting name="cacheEnabled" value="true"/>
</settings>
</configuration>
mapper.xml
<?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="pers.sms.dao.AdminMapper">
<!-- 根据id查询指定管理员信息 -->
<select id="findByName" parameterType="String" resultType="pers.sms.bean.Admin">
SELECT id,
name,
gender,
password,
email,
telephone,
address,
portrait_path
FROM tb_admin
WHERE name = #{name}
</select>
<!-- 根据姓名模糊查询指定/所有管理员信息 列表 -->
<select id="selectList" parameterType="admin" resultType="pers.sms.bean.Admin">
SELECT id, name, gender, password, email, telephone, address, portrait_path
FROM tb_admin
<where>
<!-- name为Admin中的属性名(在Controller层中已将查询的姓名封装到了Admin中的name属性中) -->
<if test="name!=null and name!=\'\'">
AND name LIKE concat(concat(\'%\',#{name}),\'%\')
</if>
</where>
</select>
<!-- 根据id更新指定管理员信息 -->
<update id="update" parameterType="admin">
UPDATE tb_admin
<set>
<if test="name!=null and name!=\'\'">name=#{name},</if>
<if test="gender!=null and gender!=\'\'">gender=#{gender},</if>
<if test="email!=null and email!=\'\'">email=#{email},</if>
<if test="telephone!=null and telephone!=\'\'">telephone=#{telephone},</if>
<if test="address!=null and address!=\'\'">address=#{address},</if>
<if test="portrait_path!=null and portrait_path!=\'\'">portrait_path=#{portrait_path},</if>
</set>
WHERE id = #{id}
</update>
<!-- 根据id批量删除管理员信息 -->
<delete id="deleteById">
DELETE FROM ssm_sms.tb_admin WHERE id IN
<foreach collection="array" item="ids" open="(" separator="," close=")">
#{ids}
</foreach>
</delete>
</mapper>
jdbc.properties
# 数据库连接参数
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/数据库名
jdbc.username=登录名
jdbc.password=密码
# 数据库连接池参数
# 待补充
以上是关于SSM整合配置文件详解的主要内容,如果未能解决你的问题,请参考以下文章
ssm整合为啥要写两个spring配置文件?写在一个里面不行吗?