Spring MVC体系结构和处理请求控制器

一:MVC设计模式:

(1.)数据访问接口:DAO层

(2.)处理业务逻辑层:Service层

(3.)数据实体:POJO

(4.)负责前段请求接受并处理:Service

(5.)负责前端页面展示:JSP

这种构架模式就是MVC设计模式,它是软件工程的一种软件架构模式。它强制性的是软件系统的输入,处理和输出的分开,把软件系统分三个基本部分:模型(Model),视图(View)控制器(Controller)

解析:

视图(View):负责格式化数据并把它们呈现给客户

控制器(Controller):负责接收并转发请求,做出响应返回给客户

模型(Model):模型对象拥有最多的处理任务,是应用程序的主体部分,负责处理和实现数据

二:MVC两种模式:

JSP MODEL1:当业务流程较为简单的时候,可以把控制器的功能交给视图来实现,这种模式统称为 JSP MODEL1

JSP MODEL2:相当于JSP MODEL1 当业务流程复杂的时候,即需要把业务流程交给控制器来实现,JSP专注视图的展现即可

MVC处理过程

(1.)首先视图是提供系统与用户交互界面,并发送用户给控制器。

(2.)控制器接收用户请求,并决定改调用哪个模型来处理

(3.)模型根据用户请求进行相应的业务逻辑处理,并返回处理结果

(4.)控制器根据返回处理结果,调用相应的视图格式化模型返回的数据,并通过视图呈现给客户。

MVC优缺点:

优点:

(1.)多视图共享一个模型,大大提高代码的可用性

(2.)MVC三个模块相互独立,松耦合构架

(3.)控制器提高应用程序和灵活性和可配性

(4.)有利益软件工程化管理

缺点:

(1.)原理复杂

(2.)增加了系统结构和实现的复杂性

(3).视图对模型数据的低效访问

三:Spring MVC框架介绍流程图

1:Spring MVC 环境搭建

(1.)引入jar文件

(2.)在web.xml中配置Servlet

(3.)创建SpringMVC配置文件(springmvc-servlet.xml)(处理请求的控制器)

(4).创建Controller

(5.)创建view

(6.)部署运行

(7.)更改HandlerMapping(处理器映射)

<property name=”suffix”value=”.jsp”/>

</bean>

</beans>

四:

  1. Spring Mvc框架体系结构请求处理流程

(1.)首先用户发送请求到前端控制器(dispatcherServlet)前端控制器根据请求信息,来决定选择哪个控制页面(Controller)进行处理,并把请求委托给他,即service控制器的控制逻辑部分D

(2.)页面控制器接收到请求后,进行业务处理,处理完成返回一个Modelandview(模型数据名和逻辑视图名)

(3.)前端控制器收回控制器,然后根据逻辑视图名,选择相应的正在视图名,并把模型数据传入以便将视图渲染展示

(4.)前端控制器再次收回控制器,将相应结果返回给客户,至此整个流程结束

  1. Spring MVC框架的体系结构

(1.)客户端发出HTTP请求,web应用服务器接收此请求,若匹配DispatcherService的请求映射路径(在web.xml中指定)则web容器将根据请求交给DispatherService处理(dkz)

(2.)DispatherService接收到该请求后将根据请求的信息(包括URL,请求参数,http方法等及HandlerMapping配置(在<serviceName>-servlet.xml中配置),找到处理请求的方法K

(3.)当DispatherService根据HandlerMapping找到相应当前请求的Handler之后,通过HandlerAdater对handler进行封装,在以统一的适配器接口调用Handler.HandlerAdapter,可以理解为具体使用Handler来干活的人。三个方法

Supports(Object handler)方法,判断是否可以使用某个Handler

Handle方法:具体使用Handler干活

getLastModified方法,获取资源的Last-Modified

(4.)在请求信息达到真正调用Handler处理方法之前的这段时间内,SpringMvc还完成了很多工作,他会将请求信息以一定的方式转换并绑定到请求方法的入参中,对于入参的对象会进行数据转换,格式化及数据校检等,这些都做完后,最后才真正的调用Handler处理方法进行相应的数据逻辑处理。

(5.)处理器完成业务处理之后将返回一个ModelAndView对象给DispatcherServlet,ModelAndView对象包含了逻辑视图名和模型数据信息。

(6.)ModelAndView对象中包含的是“逻辑视图名”,而非真正的视图对象,DispatherService会通过ViewResolver将逻辑视图名解析为真正的视图对象,View当然负责数据展示的视图可以为jsp,xml,pdf,json等多种数据格式,

(7.)当得到最后的视图对象后View后,DispatherService会使用ModelAndView对象中的模型数据对View进行视图渲染。

(8.)最终客户端获得响应消息,根据配置,可以是普通的HTML页面,也可以是一个xml,或者是json格式数据等。Z

  1. Spring MVC框架的特点

(1.)清晰的角色划分。

(2.)灵活的功能配置

(3.)提供了大量的控制器接口和实现类

(4.)真正做到与View层实现无关(JSP,Velocity,xslt等)

(5.)国际化支持

(6.)面向接口编程

(7.)提供了web应用开发的一整套流程

五:

1.参数传递:最简单的方法就是将Controller方法中参数直接入参

@RequestMapping映射:

(1.)通过请求URL进行映射D

(2.)通过请求参数,请求方法进行映射

2.参数传递(Controller to View)

(1.)ModelAndView常用方法

处理器处理的方法返回值若为ModelAndView,则即包括视图信息,又包括模型数据信息,有了该对象之后,Spring mvc 就可以对视图模型就行数据渲染。

*.添加模型数据

*.设置视图

2.Model

除了可以使用ModelAndView对象来返回模型数据外,我们还可以使用Spring mvc 提供的Model对象来完成模型数据的传递。K

3.Map

通过前面对于Model和ModelAndView对象的学习,我们还能使用Spring MVC 的Model其实就是一个map的数据结构,可以用map作为入参处理

4.@ModelAttribute

若希望将入参的数据对象放入数据模型中去,就需要在相应入参前使用此注解,再此我们只做简单了解。

5.@SessionAttributes

此注解可以模型中属性存入httpSession中,以便在多个请求之间共享该属性,只做简单了解。Z

六:视图解析器

  1. 所有视图解析器都实现了ViewResolver接口如下:

2.Spring mvc通过视图解析器来完成视图解析的工作,把控制器的处理方法返回的逻辑视图名,解析成一个真正的视图对象

Spring MVC体系结构和处理请求控制器的更多相关文章

  1. Spring MVC 原理探秘 - 一个请求的旅行过程

    1.简介 在前面的文章中,我较为详细的分析了 Spring IOC 和 AOP 部分的源码,并写成了文章.为了让我的 Spring 源码分析系列文章更为丰富一些,所以从本篇文章开始,我将来向大家介绍一 ...

  2. Spring MVC的handlermapping之请求分发如何找到正确的Handler(BeanNameUrlHandlerMapping,SimpleUrlHandlerMapping)

    本文讲的是Spring MVC如何找到正确的handler, 前面请求具体怎么进入到下面的方法,不再细说. 大概就是Spring mvc通过servlet拦截请求,实现doService方法,然后进入 ...

  3. spring mvc: 可参数化的视图控制器(在配置中指定jsp文件)MultiActionController/SimpleUrlHandlerMapping/ParameterizableViewController

    spring mvc: 可参数化的视图控制器(在配置中指定jsp文件)MultiActionController/SimpleUrlHandlerMapping/ParameterizableView ...

  4. spring MVC体系结构和请求控制器

    MVC处理过程 spring MVC架构模式都进行了分层设计如下 数据访问接口:DAO层 处理业务逻辑层:service层 数据实体:POJO 负责前端请求的接受并处理:servlet 负责前端页面展 ...

  5. Spring MVC体系结构

    [Spring MVC类图]<Spring实战>中:<Spring3.0就这么简单>中:[http://blog.csdn.net/gstormspire/article/de ...

  6. Ajax+Spring MVC实现跨域请求(JSONP)JSONP 跨域

    JSONP原理及实现 接下来,来实际模拟一个跨域请求的解决方案.后端为Spring MVC架构的,前端则通过Ajax进行跨域访问. 1.首先客户端需要注册一个callback(服务端通过该callba ...

  7. Ajax+Spring MVC实现跨域请求(JSONP)(转)

    背景: AJAX向后台(springmvc)发送请求,报错:已阻止交叉源请求:同源策略不允许读取 http://127.0.0.1:8080/DevInfoWeb/getJsonp 上的远程资源.可 ...

  8. 0057 Spring MVC如何获取HTTP请求头信息--URL中的动态参数--@RequestHeader--@CookieValue--@PathVariable

    获取HTTP请求头信息 一个HTTP请求除了有参数和实体内容外还有HTTP请求头信息,Spring MVC也可以获取这部分信息 @RequestHeader解可以将请求头信息映射到处理方法的形参上 @ ...

  9. Ajax+Spring MVC实现跨域请求(JSONP)

    背景: AJAX向后台(springmvc)发送请求,报错:已阻止交叉源请求:同源策略不允许读取 http://127.0.0.1:8080/DevInfoWeb/getJsonp 上的远程资源.可 ...

随机推荐

  1. jvm内存分配和回收策略

    在上一篇中,已经介绍了内存结构是什么样的. 这篇来介绍一下 内存是怎么分配的,和怎么回收的.(基本取自<深入理解Java虚拟机>一书) java技术体系中所提倡的自动内存管理最终可以归结为 ...

  2. 运行Vue在ASP.NET Core应用程序并部署在IIS上

    前言 项目一直用的ASP.NET Core,但是呢我对ASP.NET Core一些原理也还未开始研究,仅限于会用,不过园子中已有大量文章存在,借着有点空余时间,我们来讲讲如何利用ASP.NET Cor ...

  3. bootstrap 的可编辑下拉框 jquery.editable-select

    搜了半天发现在某处下载jquery.editable-select需要积分,于是整理出来方便 其他人. 先上下载链接:http://pan.baidu.com/s/1kUXvwlL      pass ...

  4. sqlserver 2005连接超时采用bat命令解决

    将以下内容保存为 openSql.bat 双击运行即可 @echo ========= SQL Server Ports =================== @echo Enabling SQLS ...

  5. This application failed to start because it could not find or load the Qt platform plugin "windows" 的问题原因以及解决方案

    1. 问题原因非常简单,经过各种百度,都没有找到解决方案,在此做一个记录备用. 2.原因就在于,项目目录使用了中文路径,然后出现了这个问题. 3.我是在使用 syncfusion 下的HTML 转PD ...

  6. ABAP 数值四舍五入函数

    VALUE '12.5445' , dat1 . VALUE '12.540'. * 方法一 CALL FUNCTION 'HR_NZ_ROUNDING_DECIMALS' EXPORTING val ...

  7. jscodeshift 简易教程

    本文首发于 https://github.com/whxaxes/blog/issues/10 背景 jscodeshift 是 fb 出的一个 codemod toolkit,基于 recast 这 ...

  8. 基于FFMPEG的跨平台播放器实现

    基于FFMPEG的跨平台播放器实现 一.背景介绍 FFmpeg是一款超级强大的开源多媒体编解码框架,提供了录制.转换以及流化音视频的完整解决方案,包含了libavcodec.libavformat等多 ...

  9. Oracle学习笔记之用户自定义函数

    自定义函数语法格式:   用户自定义的函数,可以直接在sql语句中直接调用,并且任何一个funciton都必须有返回值,而且该函数声明后,是保存在数据端的,我们随时可以使用:注意:函数只能有一个返回值 ...

  10. JDBC工具类实例

    本文以讲解用单利模式实现一个简单的JDBC实用工具类JDBC连接的四个基本步骤:1.加载相应数据库驱动2.建立相应数据库连接3.构建Statement语句,即增删改查SQL语句4.执行Statemen ...