• Spring MVC


     

     

     

    JavaEE体系结构包含四层,从上到下分别是应用层、Web层、业务层、持久层。我们Spring MVC就是一个Web层框架,Spring就是业务层框架,MyBatis就是持久层框架。

    为什么要使用SpringMVC?

    在我们Servlet当中,程序各层之间的依赖非常强,耦合度高。这严重违背了高内聚低耦合的设计原则,在我们SpringMVC当中就把模型和视图进行了分离,降低耦合度

    Spring MVC是一种基于Java的实现了WEB MVC设计模式的请求驱动类型的轻量级Web框架,即使使用了MVC架构模式的思想,Web层进行职责解耦。基于请求驱动指的就是使用请求-响应模型,框架得目的就是帮助我们简化开发,SpringMvc也就是简化我们得日常Web开发。

    MVC设计模式

    MVC全名称Model View Controller,其中model代表Java BeanView代表视图,比如JSP或者HTML文件,Controller代表控制器,对应组件Servlet

    Model1

    Model1在一定程序上实现了MVC的设计理念,即JSP将控制层表示层合二为一,JavaBean则为模型层。

    优点:建构简单,比较适合小型项目的开发,基本上使用JSP+持久层就可以完成小型项目的开发。

    缺点:JSP页面有控制页面显示的代码又有与后台业务逻辑交互的Java代码,职责不单一,页面负担很重,影响页面运行速度;而且不方便后期的维护。如果不加选择随意的使用Model1,会导致JSP页面内嵌入大量得到脚本片段或Java代码。特别是当需要处理请求量很大时,情况会更加糟糕。

    Model2

     

    Model2则是将控制层(Servlet)单独地划分出来了,专门负责业务流程地控制,响应页面地请求,创建所需的JavaBean实例,并将处理后台数据再返回给JSP页面,这样层次分明,不同开发人员的职责分工明确,所以项目越复杂,使用Model2架构模型的好处就越大。

    优点:清晰地分离了表达式和内容,明确了角色地定义以及开发者与网页设计者地分工,适合大型项目地开发

    缺点:分层过多,不适合小型项目地开发

    MVC

     

    MVC全名是Model View Controller,是模型(model),视图(view),控制器(controller)的缩写,是一种软件设计典范。它使用一种业务逻辑、数据与界面显示分离的方法来组织,将从多的业务逻辑聚集到一个部件里面,在需要改进和个性定制界面及用户交互的同时,不需要重新编写业务逻辑,达到减少编码的时间。

    搭建第一个Spring MVC项目

    01.创建Maven项目

     

    02.引入所需要的jar

     

    03.web.xml文件中添加servlet核心控制器

     

    04.创建springmvc.xml文件

     

    05.创建对应的Controller

    当我们访问HelloController时候,handlerRequest()方法就默认执行,返回一个ModelAndView,

    是由modelview,model底层是一个Map集合,用来保存我们前后台传输的数据,view就是一个视图名称

    06.测试

     

    处理器映射器

    01. BeanNameUrlHandlerMapping

    BeanNameUrlHandlerMappingSpring MVC默认的处理器映射器

    使用默认的处理器映射器,控制器的Bean的名称,必须以“/”开头,否则无法访问

    02. SimpleUrlHandlerMapping

    SimpleUrlHandlerMapping(映射器)Spring MVC中适用最强的handler mapping类,允许明确指定URL模式和handler的映射器关系

     

    另一种写法:

     

     

    一个Controller处理多个方法

    创建Controller

    Spring提供了一个MultiActionController(多动作控制器),用于支持在一个控制器当中添加多种功能的处理方法。

    注意:其余方法同上一样

    方法名称解析器

    001.PropertiesMethodNameResolver

     

    002.ParameterMethodNameResolver

     

     

    注解方式实现

    01.修改springmvc.xml文件

     

    02.创建一个UserController

     

    03.UserController当中添加add方法

     

    请求流程介绍

    01.整体流程

     

    (1) 首先用户发送请求到前端控制器,前端控制器根据请求(如URL)来决定选择哪一个页面页面控制器进行处理并把请求委托给它

    (2) 页面控制器接收到请求后,调用业务对象,进行功能处理,处理完毕后返回一个ModelAndView(模型数据和逻辑视图名)

    (3) 前端控制器收回控制权,然后根据返回的逻辑视图名,选择相应的视图进行渲染,并把模型数据传入一遍视图渲染

    (4) 前端控制器再次收回控制权,将响应返回给用户

    02.核心流程

     

    (1) 用户请求至 前端控制器 DispatcherServlet

    (2) 前端控制器DispatcherServlet 接收到请求后调用处理器映射器HanlderMapping

    (3) 处理器映射器HanlderMapping根据请求的Url找到具体的处理器,生成处理器对象Handler及处理器拦截器HandlerIntercepter(如果有则生成)一并返回给前端控制器DispatcherServlet

    (4) 前端控制chDispatcherServlet调用处理器适配器HandlerAdapter

    (5) 处理器适配器HandlerAdapte根据适配的结果去执行相应的Handler(Controller,也叫做后端控制器)但是在这之前会经过一系列的数据的处理(比如数据的绑定,数据转换、格式化、验证等)

    (6) Handler执行完后,给适配器返回ModelAndView

    (7) 处理器适配器HandlerAdapter向前端控制器返回 ModelAndView

    (8) 前端控制器得到ModelAndView以后会调用视图解析器ViewResolver进行视图解析(根据逻辑视图名解析成真正的视图(jsp))

    (9) 视图解析向前端控制器返回View

    (10) 前端控制器调用真实的JSP进行视图的渲染,最后响应给用户端

  • 相关阅读:
    python操作redis之hash操作
    mongodb数据库分片实现链接
    python连接redis数据库的两种方式
    python操作rabbitmq实现消息过滤接收
    python操作rabbitmq实现广播效果
    关于java和python同时使用rabbitmq时队列同名问题的探讨
    java操作rabbitmq实现简单的消息发送(socket编程的升级)
    python使用rabbitmq实现简单的消息转发
    optiongroup标签选项组
    day05_日常SQL练习(一)
  • 原文地址:https://www.cnblogs.com/SFHa/p/10275160.html
Copyright © 2020-2023  润新知