SpringMVC篇—认识MVC底层原理、架构和使用,一篇文章搞定!

深入理解什么是MVC

一、理解MVC
MVC是一种软件设计规范,是一种架构模式!
MVC三层架构分别是:
Model:模型,一般都是指数据库,执行一些业务逻辑,持久化数据
View:视图层,一般指前端的jsp页面
Controller:控制层,一般都是Servlet控制请求和响应,以及页面跳转(转发和重定向)  
Controller详细职责:(1)取得表单数据(2)调用业务逻辑(3)页面重定向

二、早期的MVC框架SpringMVC篇—认识MVC底层原理、架构和使用,一篇文章搞定!_第1张图片

用户可以直接访问控制层,控制层可以直接操作数据库
这种框架存在很大的弊端:
通过在Servlet中直接对数据库进行增删改查
1、程序十分臃肿,不利于维护;
2、Servlet代码中不仅仅要处理请求和响应,还要处理页面跳转、处理JDBC、处理业务代码、处理逻辑代码......        

三、现在演进的一些新框架

对于架构师而言: 没有什么事加一层解决不了的,所以在控制层和数据库之间又加了一层业务层

SpringMVC篇—认识MVC底层原理、架构和使用,一篇文章搞定!_第2张图片

四、深入理解什么是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

一、新建项目,添加框架支持

SpringMVC篇—认识MVC底层原理、架构和使用,一篇文章搞定!_第3张图片

二、确定导入了MVC依赖



    
    
        junit
        junit
        4.12
    
    
    
        javax.servlet
        servlet-api
        2.5
    
    
    
        javax.servlet.jsp
        jsp-api
        2.2
    
    
    
        javax.servlet.jsp.jstl
        jstl
        1.2
    
    
    
        org.springframework
        spring-webmvc
        5.1.9.RELEASE
    

三、配置web.xml,注册DispatcherServlet




    
    
        springmvc
        org.springframework.web.servlet.DispatcherServlet
        
        
        1
    

    
    
    
        springmvc
        /
    

四、编写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类


八、部署和发布项目SpringMVC篇—认识MVC底层原理、架构和使用,一篇文章搞定!_第4张图片

九、启动服务器

SpringMVC篇—认识MVC底层原理、架构和使用,一篇文章搞定!_第5张图片

十、页面效果
1、首先跳转到首页

SpringMVC篇—认识MVC底层原理、架构和使用,一篇文章搞定!_第6张图片

2、地址栏输入hello

SpringMVC篇—认识MVC底层原理、架构和使用,一篇文章搞定!_第7张图片

十一、总结
现在我们使用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也具有很重要的作用。后续笔者还会持续更新,敬请期待!

你可能感兴趣的:(SpringMVC,mvc,架构)