深入理解什么是MVC
一、理解MVC
MVC是一种软件设计规范,是一种架构模式!
MVC三层架构分别是:
Model:模型,一般都是指数据库,执行一些业务逻辑,持久化数据
View:视图层,一般指前端的jsp页面
Controller:控制层,一般都是Servlet控制请求和响应,以及页面跳转(转发和重定向)
Controller详细职责:(1)取得表单数据(2)调用业务逻辑(3)页面重定向
二、早期的MVC框架
用户可以直接访问控制层,控制层可以直接操作数据库
这种框架存在很大的弊端:
通过在Servlet中直接对数据库进行增删改查
1、程序十分臃肿,不利于维护;
2、Servlet代码中不仅仅要处理请求和响应,还要处理页面跳转、处理JDBC、处理业务代码、处理逻辑代码……
三、现在演进的一些新框架
对于架构师而言: 没有什么事加一层解决不了的,所以在控制层和数据库之间又加了一层业务层
四、深入理解什么是MVC三层架构
1、Model层
(1)做业务的处理:比如用户登陆、用户注销等操作,里面都是一些业务逻辑 (Service层)
(2)做数据的持久层处理:对数据库进行增删改查 (Dao层)
2、View层
(1)展示数据
(2)提供链接发起Servlet请求(通过一些a标签、Form表单、内联的img链接等等)
3、Controller层 (目前来说就是一些Servlet)
1、接收用户的请求(通过request获取用户的请求参数、Session信息等等)
2、交给业务层处理对应的代码(调用Dao层的增删改查)
3、控制视图层的跳转(如果某个判断正确,进行页面的转发或者重定向操作)
举例说明:(正向的处理信息,那么返回来就是将信息返回给用户,经过前端的一些渲染,用户就可以看到登陆成功或者登陆失败的新的界面了)
用户想在JSP视图层登陆某网站–>Servlet中接收用户登陆的请求(获取登陆的参数,username,password等等)–>交给业务层处理登陆的业务
(判断用户名和密码是否正确,甚至是注册的一些功能,涉及到往数据库进行增删改查的操作,以及对数据库事务的处理)–>Dao层查询用户名
和密码是否正确,将查询的结果向上级返回–>数据库
SpringMVC特点、中心控制器DispatcherServlet
一、SpringMVC优势
1、轻量级,简单易学
2、高效,基于请求响应的MVC框架
3、与Spring兼容性好,无缝结合
4、约定大于配置
5、功能强大:RESTful、数据验证、格式化、本地化、主题等
6、简单灵活
二、SpringMVC中心控制器DispatcherServlet
作用:将请求发到不同的处理器上,即处理不同业务的类
HelloSpringMVC
一、新建项目,添加框架支持
二、确定导入了MVC依赖
junitjunit4.12javax.servletservlet-api2.5javax.servlet.jspjsp-api2.2javax.servlet.jsp.jstljstl1.2org.springframeworkspring-webmvc5.1.9.RELEASE
三、配置web.xml,注册DispatcherServlet
springmvcorg.springframework.web.servlet.DispatcherServlet<!--contextConfigLocation是写死的,记住,通过这个name才能获取到SpringMVC的配置文件路径contextConfigLocationclasspath:springmvc-servlet.xml1springmvc/
四、编写springmvc-servlet.xml的配置文件
五、注册映射处理器、处理适配器、视图解析器
六、编写HelloController类
package com.guohui.controller;import org.springframework.web.servlet.ModelAndView;import org.springframework.web.servlet.mvc.Controller;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;//注意:这里我们先实现Controller接口public class HelloController implements Controller {public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {//ModelAndView 创建模型和视图对象ModelAndView mv = new ModelAndView();//封装对象,放在ModelAndView中mv.addObject("msg","HelloSpringMVC!");//封装要跳转的视图,放在ModelAndView中mv.setViewName("hello"); //: /WEB-INF/jsp/hello.jsp //这里面还会有处理业务的代码return mv;}}
七、在springmvc-servlet.xml注册HelloController类
八、部署和发布项目
九、启动服务器
十、页面效果
1、首先跳转到首页
2、地址栏输入hello
十一、总结
现在我们使用SpringMVC来进行页面请求和响应,和以往不同的是现在我们只需要把中心控制器DispatcherServlet在web.xml中进行注册,写好的Ctroller类直接在Springmvc-servlet.xml中注册即可。
我们的DispatcherServlet会对所有的请求进行拦击,拦截后调用Springmvc-servlet.xml中的映射处理器、处理适配器,适配器会安邦我们在Springmvc-servlet.xml中查找有没有对应的类,如果有则进入方法,执行Ctroller方法,然后Ctroller中的方法想要进行请求转发,无需再调用转发的方法,并且路径只写jsp的名称即可,因为这个地方会调用Springmvc-servlet.xml中的视图解析器帮我们把jsp的全路径拼接出来!
至此,你已经掌握了SpringMVC的基础理论以及实现方式,现在的开发项目中,还有不少的项目依旧是MVC的项目,所以很有必要学习和掌握SpringMVC,他对我们将来学习SpringCloud也具有很重要的作用。后续笔者还会持续更新,敬请期待!