项目场景:
spring + springmvc + mybatis整合
描述:
这里对ssm框架整合做一个说明:spring管理javaBean(创建对象和使用注解),springmvc管理表现层(主要配置controller层和web.xml)
分析:
在使用spring时,需要spring管理属性文件和连接数库,管理创建对象的会话工厂;对接口类和指定的基础包进行扫描,接下面是代码例子
spring xml文件代码部分:
//在applicationContext.xml中配置spring部分
<!-- 管理属性文件 -->
<context:property-placeholder location="classpath:db.properties" system-properties-mode="NEVER"/>
// 这里的 system-properties-mode="NEVER" 表示可以从属性文件中读取属性
<!-- 配置连接数据库 四大金刚,值使用el表达式动态获取-->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="${driverClassName}"></property>
<property name="url" value="${url}"></property>
<property name="username" value="${username}"></property>
<property name="password" value="${password}"></property>
</bean>
<!-- 管理会话工厂,配置别名 -->
<bean id="SqlSessionFactoryBean" class="org.mybatis.spring.SqlSessionFactoryBean">
<!-- 注入连接池对象 -->
<property name="dataSource" ref="dataSource"></property>
<!-- 配置别名 -->
<property name="typeAliasesPackage" value="cn.itsource.domain"></property>
<!-- 加载映射文件 -->
<property name="mapperLocations" value="classpath:cn/itsource/mapper/*Mapper.xml"></property>
</bean>
// /*Mapper.xml 所有后缀为Mapper.xml都能匹配得上
<!-- 管理Mapper代理对象 mapper接口扫描配置-->
<bean id="mapper" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<!-- base-package 属性指定要扫描的基础包。我们可以在配置中使用匹配符和占位符 扫描包下的所有接口-->
<property name="basePackage" value="cn.itsource.mapper"></property>
</bean>
<!-- 扫描业务层指定的包,使用注解时可以找到 -->
<context:component-scan base-package="cn.itsource.service"></context:component-scan>
springmvc xml文件代码部分:
<!-- 静态资源放行 避免和TomCat中的默认静态资源映射冲突而导致静态资源无法访问的问题-->
<mvc:default-servlet-handler/>
<!-- 开启spring对springmvc的支持 使用注解-->
<mvc:annotation-driven></mvc:annotation-driven>
<!-- 扫描控制层的包 -->
<context:component-scan base-package="cn.itsource.controller"></context:component-scan>
<!-- 视图解析器: 这样在做转发或者重定向时就可以简写成文件名 -->
<bean
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/" />
<property name="suffix" value=".jsp" />
</bean>
web.xml文件代码部分:
<!-- 配置监听器:tomcat一启动就会为当前web项目创建一个唯一的上下文对象 监听器:只要上下文对象一创建,监听器就可以监听到了 监听到之后就自动实例化,初始化
在初始化的时候就会自动的去解析上下文对象的初始化参数:context-param 最终目的:加载Spring的配置文件:applicationContext.xml -->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
<!-- 配置前端控制器 :所有请求从这里分发-->
<servlet>
<servlet-name>DispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- 初始化参数,在加载的时候找到springmvc配置文件 ,请求在 springmvc中分发 -->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext-mvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>DispatcherServlet</servlet-name>
<!-- 此处于TomCat有冲突,需要在springmvc.xml中配置静态资源放行 -->
<url-pattern>/</url-pattern>
</servlet-mapping>
<!-- 设置过滤器,设置特定的字符集过滤 -->
<filter>
<filter-name>CharacterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<!-- 初始化参数 解决psot乱码的问题-->
<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>