Spring和SpringMVC整合实现增删改查
首先一张图了解Spring MVC的分层方式
SpringMVC引入Spring,将Spring IoC、AOP功能引入了,甚至可以使用Spring管理事务。
将Service与Dao当作Bean,放入IoC容器中,整个Servlet项目就可以实现“松耦合”式的各层级调用。
项目结构如下:
MySQL数据库如下:
其中view层还用到了前端框架Vue.js和Bootstrap
完整案例代码如下:(数据库自己创建)
链接:https://pan.baidu.com/s/12k0dowGgMT4tbpBQVDSgAA
提取码:brhz
一部分具体理解:
- 这个程序中一共存在两个ApplicationContext(两个容器),一个是全局的,一个是Servlet的
- dispatcher-servlet.xml是Servlet级的
- application-context.xml是全局级的
- 由于使用到MVC分层,并且两个“容器”需要加载不同的Bean,按功能分包是很重要的了
- SpringMVC中,将代码分为Controller、Service、Dao三层,其中Service、Dao构成Model层
- Service负责逻辑运算,Dao负责数据访问
- View层由jsp或html页面承担
- ContextLoaderListener是Spring中已经定义好的Web Listener。这是一个ServletContextListener的实现:
- 回忆:ServletContextListener是监听ServletContext的,可以在项目启停时执行一个方法
- ContextLoaderListener中写的是将参数contextConfigLocation的值作为配置文件,创建一个全局的容器
- DispatcherServlet是Spring MVC提供的Servlet,它可以接收任何请求并分类转发出去
- DispatcherServlet也可以根据自己的contextConfigLocation值创建一个属于自己的容器
- DispatcherServlet会解析接收到的请求,按照@RequestMapping配置调用相应的方法
- @RequestMapping("/student")在类上,@RequestMapping("/get")在方法上,两个配置信息拼接在一起生效,所以访问/student/get即可访问到getStudent方法
- @Controller和@Component作用相同,都表示“这是一个Bean”
- @Controller表示:这个Bean是Spring MVC的Bean,这个Bean做C层使用
- DispatcherServlet会找带有@RequestMapping的Bean调用