1. web.xml配置文件
1.1配置前端控制器
配置DispatcherServlet,配置这个是拦截所有请求,都交给springmvc转发
拦截所有的请求,并加载所有的ssm配置文件(路径为classpath:---)
contextConfigLocation 不是必须配置的,不配置springmvc的配置文件默认在:WEB-INF/servlet的name+"-servlet.xml"
<!-- 配置前端控制器 -->
<servlet>
<servlet-name>springMVC</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- 添加配置文件 -->
<init-param>
<param-name>contextConfigLocation</param-name>
<!-- 导入springMVC和spring配置文件 -->
<param-value>classpath:/spring/applicationContext*.xml</param-value>
</init-param>
<!-- tomcat启动时加载spring容器和springMVC容器 -->
<load-on-startup>1</load-on-startup>
</servlet>
<!-- 配置post乱码过滤器 -->
<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>
<!--关于路径的写法
前缀型和后缀型
aa.action 全路径
/aa 以aa开头的路径都要拦截
/ 全部路径拦截
*.do 拦截以.do结尾后缀型路径
"/"的说明 拦截全部请求 静态资源(html/js/css) 后期通过配置放行静态资源
写/满足 resultFUl结构
-->
<servlet-mapping>
<servlet-name>springMVC</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
2.applicationContext-mvc.xml配置文件
<!--开启MVC注解形式 -->
<mvc:annotation-driven/>
<!--配置视图解析器 userList -->
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!--使用Set方法进行注入 -->
<property name="prefix" value="/WEB-INF/views/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
<!--配置文件上传视图解析器 暂时没有配置-->
</beans>
3.applicationContext.xml配置文件
<!-- 包扫描com.jt下的全部子孙包 -->
<context:component-scan base-package="com.jt" />
<!-- 扫描外部的配置文件交给spring容器管理 问题:如果出现多个properties文件 如何处理 方案: 1.使用通配符处理*号 *.properties
2.使用bean的方式通过list标签方式进行管理 -->
<!-- <context:property-placeholder location="classpath:/properties/jdbc.properties"/> -->
<bean id="propertyPlaceholder"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath:/properties/jdbc.properties</value>
</list>
</property>
</bean>
<!-- 配置连接池 -->
<bean id="dataSource" class="com.jolbox.bonecp.BoneCPDataSource"
destroy-method="close">
<!-- 数据库驱动 -->
<property name="driverClass" value="${jdbc.driver}" />
<!-- 相应驱动的jdbcUrl -->
<property name="jdbcUrl" value="${jdbc.url}" />
<!-- 数据库的用户名 -->
<property name="username" value="${jdbc.username}" />
<!-- 数据库的密码 -->
<property name="password" value="${jdbc.password}" />
<!-- 检查数据库连接池中空闲连接的间隔时间,单位是分,默认值:240,如果要取消则设置为0 -->
<property name="idleConnectionTestPeriod" value="60" />
<!-- 连接池中未使用的链接最大存活时间,单位是分,默认值:60,如果要永远存活设置为0 -->
<property name="idleMaxAge" value="30" />
<!-- 每个分区最大的连接数 -->
<property name="maxConnectionsPerPartition" value="150" />
<!-- 每个分区最小的连接数 -->
<property name="minConnectionsPerPartition" value="5" />
</bean>
<!-- 开启spring的事务控制 -->
<!-- <tx:annotation-driven/> -->
<!-- 配置声明事务处理 -->
<!-- 3.1配置事务管理器 -->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</bean>
<!--3.2定义事务策略
propagation="REQUIRED" 必须添加事务. 事务传播属性的默认值
propagation="SUPPORTS" 表示事务执行 如果原来有事务则使用原事务,
如果之前没有事务,则吧添加事务
read-only 只读
注意事项:如果使用了声明事务处理则业务方法
必须与方法名匹配,否则将不能正确操作数据库
-->
<tx:advice id="txAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="save*" propagation="REQUIRED"/>
<tx:method name="delete*" propagation="REQUIRED"/>
<tx:method name="update*" propagation="REQUIRED"/>
<tx:method name="*" propagation="SUPPORTS" read-only="true"/>
</tx:attributes>
</tx:advice>
<!-- 配置事务切面 -->
<!-- <aop:scoped-proxy/>
execution(* com.jt.manage.service..*.*(..))"
返回值类型任意的,在service包下的全部任意方法,都要被拦截
-->
<aop:config>
<aop:pointcut expression="execution(* com.jt.manage.service..*.*(..))" id="pc"/>
<aop:advisor advice-ref="txAdvice" pointcut-ref="pc"/>
</aop:config>
</beans>
4.applicationContext-mybatis.xml配置文件
<!-- spring 整合Mybatis
1.管理sqlSessionFactoryBean
1.1添加数据源
1.2整合mybatis核心配置文件
1.3整合映射文件
2.spring为mapper接口生成代理对象
private Resource configLocation;
private Resource[] mapperLocations;
private DataSource dataSource;
-->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"></property>
<property name="configLocation" value="classpath:/mybatis/mybatis-config.xml"/>
<property name="mapperLocations" value="classpath:/mybatis/mappers/*.xml"/>
</bean>
<!-- 为mapper接口生成代理对象
包扫描属性 basePackage
-->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.jt.manage.Mapper"/>
</bean>
</beans>
4.1 mybatis-config.xml配置文件
<!--
Mybatis说明:
特点:实现自动的对象关系映射
pojo实体对象与数据库中表一一对应
使用resultMap可以实现自动的转化
字段 对象
user_id userid
resultType不能自动的映射,
但是如果使用了驼峰规则的配置则可以实现自动映射
在映射时自动的将字段的"_"去掉之后首字母大写
Mybatis中的缓存介绍
1.一级缓存
级别:sqlSession
说明:在sqlSession内实现数据共享
默认:开启的
2.二级缓存
级别:sqlSessionFacotry级别
说明:在同一个sqlSessionFactory中获取sqlSession实现
数据共享.
默认:关闭的
缺点:mybatis二级缓存效率低.一般开发不用,
使用Redis/mamerche
-->
<settings>
<!-- 开启驼峰自动映射 -->
<setting name="mapUnderscoreToCamelCase" value="true" />
<!-- 二级缓存的总开关,被redis替代 -->
<setting name="cacheEnabled" value="false" />
</settings>
</configuration>