SSM整合文档 v2

一. 文件说明

文件名 描述
spring-servlet.xml 配置SpringMvc框架相关
applicationContext.xml 配置Spring容器
spring-mybatis.xml 引入并整合mybatis

二.引入Jar包

包名称 描述
spring-web 是webmvc的依赖包,提供很多Servlet的实现
junit 测试包
spring-webmvc Spring提供的MVC , 比较重要的一部分
spring-tx spring 的事务管理器
spring-jdbc spring 对jdbc的封装包
aspectjweaver 切面支持
mybatis mybatis框架
mybatis-spring mybatis和spring整合
jstl jsp的一种表达式
mysql-connector-java mysql连接数据库驱动
log4j 日志包
slf4j-api 日志包,对于log4j的封装
c3p0 数据连接池
junit 单元测试
spring-text 对Junit等测试框架的简单封装

包只有一部分解释,自学者不要带包上面浪费时间

三. 配置步骤

1. web.xml

项目配置从无到有,从外到内

1.1 编码过滤器CharacterEncodingFilder
  1. <display-name>Archetype Created Web Application</display-
  2. <!--配置请求过滤器,设置编码过滤器-->
  3. <filter>
  4. <filter-name>encodingFilter</filter-name>
  5. <filter-class>org.springframework.web.filter.Characte
  6. <!--设置默认编码格式-->
  7. <init-param>
  8. <param-name>encoding</param-name>
  9. <param-value>utf-8</param-value>
  10. </init-param>
  11. <!--强制将请求编码格式转为encoding,无论它原本是不是encoding的格式-->
  12. <init-param>
  13. <param-name>forceEncoding</param-name>
  14. <param-value>true</param-value>
  15. </init-param>
  16. </filter>
  17. <filter-mapping>
  18. <filter-name>encodingFilter</filter-name>
  19. <url-pattern>*.do</url-pattern>
  20. </filter-mapping>
1.2 Mvc核心控制器DispatcherServlet
  1. <!--配置SpringMvc的核心控制器-->
  2. <servlet>
  3. <servlet-name>dispatcherServlet</servlet-name>
  4. <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  5. <!--指定spring-mvc的配置文件-->
  6. <init-param>
  7. <param-name>contextConfigLocation</param-name>
  8. <param-value>
  9. classpath:spring/需要一个专门配置mvc的配置文件,该配置文件存放初始DispatcherServlet 的信息参数
  10. </param-value>
  11. </init-param>
  12. <!--加载级别-->
  13. <load-on-startup>1</load-on-startup>
  14. </servlet>
  15. <servlet-mapping>
  16. <servlet-name>dispatcherServlet</servlet-name>
  17. <url-pattern>*.do</url-pattern>
  18. </servlet-mapping>

这个地方url-pattern 表示拦截的请求获取,*.do表明获取所有,do结尾的请求,这些请求被拦截进入DispatcherServlet中

1.3 初始化Spring容器 配置监听ContextLoaderListener
  • 引入配置Spring配置文件路径
  1. <!--配置Spring监听器-->
  2. <context-param>
  3. <param-name>contextConfigLocation</param-name>
  4. <param-value>classpath:spring/spring-*.xml</param-value>
  5. </context-param>
  6. <listener>
  7. <listener-class>
  8. org.springframework.web.context.ContextLoaderListener
  9. </listener-class>
  10. </listener>

2.applicationContext.xml

该配置文件用于初始化Sprng容器

2.1扫描service层,用于处理业务,装配业务bean
  1. <context:component-scan base-package="com.lh.service.impl"/>
2.2配置全局数据源

Spring容器中配置数据源

  1. <context:property-placeholder location="classpath:jdbc.properties"/>
  2. <bean id="druidDataSource" class="com.alibaba.druid.pool.DruidDataSource">
  3. <property name="driverClassName" value="${jdbc.driverClass}"/>
  4. <property name="url" value="${jdbc.jdbcUrl}"/>
  5. <property name="username" value="${jdbc.username}"/>
  6. <property name="password" value="${jdbc.password}"/>
  7. </bean>

3. spring-mybatis.xml 整合

3.1 将mybatis的SqlSessionFactory交给Spring管理
  1. <!--SqlSessionFactory交给Spring-->
  2. <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
  3. <property name="dataSource" ref="druidDataSource"/>
  4. <property name="configLocation" value="classpath:mybatis/mybatis-config.xml"/>
  5. <property name="typeAliasesPackage" value="com.lh.entity"/>
  6. <property name="mapperLocations" value="classpath:mybatis/mapper/**/*.xml"/>
  7. </bean>
  • datasource 数据源,引用先前在Spring中配置好的
  • configLocation 配置文件,有一些配置没有完全从mybatis中移植过来,所以需要将那些没有整合到spring中的配置信息通过mybatis-config.xml引入到spring中
3.2 将 做映射,将Java接口代码交给Spring,Spring去做映射
  1. <!--把mapper接口交给spring管理-->
  2. <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer" >
  3. <property name="basePackage" value="com.lh.dao"/>
  4. </bean>

4.spring-servlet.xml 配置DispatcherServlet

4.1 配置扫描Action包
  1. <context:component-scan base-package="com.lh.action"/>
4.2 配置 处理映射器,处理适配器,视图解析器
  1. <!--mvc视图解析器-->
  2. <mvc:annotation-driven/>
  3. <!--mvc注解驱动-->
  4. <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  5. <property name="prefix" value="/WEB-INF/jsp"/>
  6. <property name="suffix" value=".jsp"/>
  7. </bean>

这里视图解析器中的配置,表名Controller层默认请求的资源路径

4.3 静态资源释放器
  1. <mvc:default-servlet-handler/>

只要请求符合在web.xml中配置的过滤选项,该请求就会进入DispatcherServlet中,设置资源释放器,DispatcherSevlet会分辨出 访问静态资源的请求,并寻找指定静态资源进行访问

5. 配置事务管理器

Spring事务笔记

三个大牛逼接口

5.1 配置事务管理器 PlatformTransactionManager
  • DataSourceTransactionManager是事务管理器的一个实现类

将数据源交给事务管理器,这样我们实际获取到的数据源是来自于事务管理器的

  1. <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
  2. <property name="dataSource" ref="druidDataSource"/>
  3. </bean>
5.2 配置事务通知

有的业务需要事务,有的业务不需要事务,但是数据来源都是走的事务管理器

为什么叫做通知呢, 通知是AOP里面的名词, 需要通过切面的方式去装饰那些需要事务管理的业务

  1. <tx:advice transaction-manager="transactionManager" id="txadvice">
  2. <tx:attributes>
  3. <tx:method name="find*" read-only="true"/>
  4. <tx:method name="*"/>
  5. </tx:attributes>
  6. </tx:advice>
5.3 切点通知增强

aop:config :表示定义一个切面

aop:pointcut : 定义一个切点, (也就是要被修饰, 增强的方法)

aop:advisor: 将指定的 增强方法 和 需要被增强的 方法 相关联

  1. <aop:config>
  2. <aop:pointcut id="pt" expression="execution(* com.lh.service.impl.*.*(..))"/>
  3. <!--将其诶单和通知增强关联-->
  4. <aop:advisor advice-ref="txadvice" pointcut-ref="pt"/>
  5. </aop:config>

SSM整合文档的更多相关文章

  1. 【转】odoo学习之:API整合文档

    Odoo8.0新API文档 一.新API概述 在8中,api接口分为traditaional style和record style,traditional style指的就是我们在7中使用的类型,de ...

  2. 怎么把jdk和jRE的Javadoc文档整合到MyEclipse

    有时在写代码时,需要查看javadoc文档,便于编写程序.故如何把Javadoc文档整合到MyEclipse,以便于查看呢? 解决办法: 1.在MyEclipse中菜单栏的“Windows”---&g ...

  3. hbase0.96与hive0.12整合高可靠文档及问题总结

    本文链接:http://www.aboutyun.com/thread-7881-1-1.html 问题导读:1.hive安装是否需要安装mysql?2.hive是否分为客户端和服务器端?3.hive ...

  4. 【Lucene3.6.2入门系列】第14节_SolrJ操作索引和搜索文档以及整合中文分词

    package com.jadyer.solrj; import java.util.ArrayList; import java.util.List; import org.apache.solr. ...

  5. SpringBoot整合Swagger2,再也不用维护接口文档了!

    前后端分离后,维护接口文档基本上是必不可少的工作.一个理想的状态是设计好后,接口文档发给前端和后端,大伙按照既定的规则各自开发,开发好了对接上了就可以上线了.当然这是一种非常理想的状态,实际开发中却很 ...

  6. 整合swagger2生成Restful Api接口文档

    整合swagger2生成Restful Api接口文档 swagger Restful文档生成工具 2017-9-30 官方地址:https://swagger.io/docs/specificati ...

  7. 基于WPF系统框架设计(5)-Ribbon整合Avalondock 2.0实现多文档界面设计(二)

    AvalonDock 是一个.NET库,用于在停靠模式布局(docking)中排列一系列WPF/WinForm控件.最新发布的版本原生支持MVVM框架.Aero Snap特效并具有更好的性能. Ava ...

  8. springboot学习-jdbc操作数据库--yml注意事项--controller接受参数以及参数校验--异常统一管理以及aop的使用---整合mybatis---swagger2构建api文档---jpa访问数据库及page进行分页---整合redis---定时任务

    springboot学习-jdbc操作数据库--yml注意事项--controller接受参数以及参数校验-- 异常统一管理以及aop的使用---整合mybatis---swagger2构建api文档 ...

  9. Spring Boot 项目学习 (四) Spring Boot整合Swagger2自动生成API文档

    0 引言 在做服务端开发的时候,难免会涉及到API 接口文档的编写,可以经历过手写API 文档的过程,就会发现,一个自动生成API文档可以提高多少的效率. 以下列举几个手写API 文档的痛点: 文档需 ...

随机推荐

  1. Python Panda - 学习笔记

    #Group by Function df.groupby('Date')[['Date']].count() df.groupby('Date')[['Date']].sum() # if it c ...

  2. appium-环境搭建(三)

    appium步骤:基本环境1.由于操作手机端操作,需要模拟器或者真机 itools模拟器,真机2.appium操作app,需要知道操作的app是什么?需要知道这个app包名 1.问开发 2.利用adt ...

  3. PHP把时间转换成几分钟前、几小时前、几天前的几个函数、类分享

    这篇文章主要介绍了php计算时间几分钟前.几小时前.几天前的几个函数.类分享,需要的朋友可以参考下一.函数实现实例1: <?php header("Content-type: text ...

  4. BEC listen and translation exercise 35

    高中听力: At five o'clock, we have afternoon tea, but we don't have it in the kitchen. Father's Day is t ...

  5. WingIDE用法笔记

    注释代码块 方法一:  ''' 被注释的代码块 '''   方法二:  选中要注释的代码块后 Ctrl + /,则选中的每一行都被# ,   用这种方法注释的代码,用Shift + Ctrl + / ...

  6. stl_tree.h

    stl_tree.h G++ ,cygnus\cygwin-b20\include\g++\stl_tree.h 完整列表 /* * * Copyright (c) 1996,1997 * Silic ...

  7. 微信非全屏播放设置(仅Iphone)

    由于微信X5内核强制视频全屏,用X5自带内核播放,一般内嵌视频打开播放就会被全屏. ihpone里面可以通过设置 x-webkit-airplay="true" webkit-pl ...

  8. bzoj 4103: 异或运算 可持久化Trie

    题目大意: 给定长度为n的数列X={x1,x2,...,xn}和长度为m的数列Y={y1,y2,...,ym},令矩阵A中第i行第j列的值\(A_{ij} = x_i \text{ xor } y_j ...

  9. 标准模板库(STL)学习指南之set集合

    set是关联容器.其键值就是实值,实值就是键值,不可以有重复,所以我们不能通过set的迭代器来改变set的元素的值,set拥有和list相同的特性:当对他进行插入和删除操作的时候,操作之前的迭代器依然 ...

  10. Oracle 12C 新特性之扩展数据类型(extended data type)

    Oracle 12C 新特性-扩展数据类型,在12c中,与早期版本相比,诸如VARCHAR2, NAVARCHAR2以及 RAW这些数据类型的大小会从4K以及2K字节扩展至32K字节.只要可能,扩展字 ...