Spring+SpringMVC+Hibernate 基本Demo(注解、Maven管理)
介绍
本片博客主要是介绍一下spring+SpringMVC+hibernate框架的大致工作流程和其基本的配置代码,在博客最后提供了一个基本的Demo下载,本Demo采用Maven管理依赖。
环境、工具
Java开发环境、IntelliJ IDEA 或者 MyEclipse
Tomcat服务器(7,8,9均可)
工作流程
Spring容器想必不用多说,大家手头端的参考书写的估计很清楚,百度一下也有很多大神写的也很好,我就不赘述了。在我们实际使用过程中,我们使用Spring来管理事务,Hibernate就全部托管给Spring,而Spring提供的MVC开发模块即SpringMVC当然也是由Spring管理的,其实也不一定要使用SpringMVC,Spring也可以管理Struts2等。Spring的控制反转和依赖注入这里也不再多说,大家可以自己去专门学习了解。这里主要简单说一下SpringMVC的工作流程,因为这与下面的配置有一定的关系。大家结合着工作原理来看配置文件,两相印证之下应该会对SpringMVC工作流程以及配置为何这么配置有一些新的认识。
首先,在说SpringMVC之前,我们先来看一下一张经典的MVC开发模式的图。
所谓MVC开发模式,Model,View和Controller三者分离,三者分离的目的主要是降低耦合程度。从图中可以明显看出,当我们进行Web开发时,我们采用MVC开发模式,应该要有一个清楚的层次认知(“分层”是一个说法,没有太过具体的明确规定,不一定非要奉某种方法为真理,合适有理有据惯用好用即可),在我的理解以及项目中,主要如图中分为了dao层(数据库数据处理层),service层(业务逻辑层),controller层(控制层),前端即view,大家也可以去了解其它分层方法,喜欢就好。
上面那张图就是本Demo项目结构是这样的原因:
了解了项目为何这么分层之后,来看一看SpringMVC的工作流程,这部分的介绍将会结合配置文件一起说,先来看下面一张图:
其实SpringMVC工作流程按照图中的步骤来看就非常清楚啦!如果你是第一次接触可能不太熟悉每个部分的单词,但不用担心时间久了慢慢就记得了,只需要大致有个概念就行了,因为这些都是框架帮助我们在后台完成的,我们只要按照既定模式来配置好就好了。
首先,当收到来自用户的请求时,就像你要去某公司找某人有事,你就是那个请求,DispatcherServlet首先拦截了所有的请求,就像个门卫大爷似的,进门就把你拦住了,不讲清楚你是来干啥的就不放你过去啦。DispatcherServlet然后把请求交给HandleMapping,HandleMapping就做了一件事,我来看看你是找谁的,弄明白你是找谁的我才能派人通知他不是?因为SpringMVC的Controller里面是有很多处理方法的。就像你说你们找谁的,那门卫大叔就要把你交传达室小伙子,查查你要找的人在不在,在哪里。
在HandleMapping找到以后,接下来就到了HandleAdapter,HandleAdapter对Controller中具体的处理进行的封装,可以理解为现在找到你要找的那个人啦,现在去见他把,不过不能直接见,得在我们给你的房间见,这个房间就是HandleAdapter,在这个房间进行py交易之后,你搞不清白你交易的结果是啥,接下来就需要对内容进行解析,viewResolver来对你拿到的内容进行解析,就相当于你对交易的结果搞不懂啊,人家用的人家专用的格式,你得找人家专门的部门帮你翻译一下,最后翻译成功,找到view,一个完整的工作流程结束。
例子不一定恰当,但是能在一定程度上来表明问题。
接下来结合上面了解的工作流程来看看配置文件如何配置的吧。
新建Maven JavaWeb项目
IntelliJ IDEA创建这一点我不打算自己讲,因为其他博主讲的真的是太好了,我不认为自己复述一遍有什么意义,链接如下:
http://www.cnblogs.com/sy270321/p/4723139.html
MyEclipse或者Eclipse请大家自行百度啦,这方面博客很多的!
主要配置代码
先看pom文件,导入的jar包,在这里我声明,和别人乱七八糟的依赖关系不同,在导入之后我花了很长的时间把所有不必要的依赖关系都去掉了,能简单的绝不复杂,这里我所导入的包都是我能找到最简单最方便快捷的导入方式了,导入的依赖看起来不多,但是几乎已经涵盖了所有用到的内容,每一个依赖是有什么作用哪里能用到都有说明,你可以根据自己实际使用情况作出修改。
pom.xml
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
- 99
- 100
- 101
- 102
- 103
- 104
- 105
- 106
- 107
- 108
- 109
- 110
- 111
- 112
- 113
- 114
- 115
- 116
- 117
- 118
- 119
- 120
- 121
- 122
- 123
- 124
- 125
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
- 99
- 100
- 101
- 102
- 103
- 104
- 105
- 106
- 107
- 108
- 109
- 110
- 111
- 112
- 113
- 114
- 115
- 116
- 117
- 118
- 119
- 120
- 121
- 122
- 123
- 124
- 125
看起来很少对吧,实际上你还可以根据自己情况再删去一些自己不需要的!这些包具体干什么的注释里都有介绍,就不再多说了。最后提供下载的文档里注释也有的。
然后是web.xml
web.xml
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
在这里我们看到了DispatcherServlet,他就是图中那个看门大爷!然后我们看一看applicationContext.xml
applicationContext.xml
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
然后是spring-mvc.xml
spring-mvc.xml
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
里面我写的注释挺多了,记得结合上面的工作流程理解配置,两相比对!
资源下载
代码我已经上传到资源啦,传送门如下:
点我下载
http://download.csdn.net/detail/qq_33171970/9800414
OK,好好学习,天天向上,加油!