springmvc简述

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

另外还有一种基于组件的、事件驱动的 Web 框架在此就不介绍了,如 TapestryJSF 等。

Spring Web MVC 也是服务到工作者模式的实现,但进行可优化。前端控制器是 DispatcherServlet;应用控制器其实拆为处理器映射器(Handler Mapping)进行处理器管理和视图解析器(View Resolver)进行视图管理;页面控制器/动作/

处理器为 Controller 接口(仅包含 ModelAndView handleRequest(request, response) 方法)的实现(也可以是任何的 POJO 类);支持本地化(Locale)解析、主题(Theme)解析及文件上传等;提供了非常灵活的数据验证、格式化和数据绑定机制;提供了强大的约定大于配置(惯例优先原则)的契约式编程支持。

√让我们能非常简单的设计出干净的 Web 层和薄薄的 Web 层;√进行更简洁的 Web 层的开发;√天生与 Spring 框架集成(如 IoC 容器、AOP 等);

√提供强大的约定大于配置的契约式编程支持;√能简单的进行 Web 层的单元测试;√支持灵活的 URL 到页面控制器的映射;

√非常容易与其他视图技术集成,如 VelocityFreeMarker 等等,因为模型数据不放在特定的 API 里,而是放在一个 Model 里(Map 数据结构实现,因此很容易被其他框架使用);√非常灵活的数据验证、格式化和数据绑定机制,能使用任何对象进行数据绑定,不必实现特定框架的 API;√提供一套强大的 JSP 标签库,简化 JSP 开发;√支持灵活的本地化、主题等解析;√更加简单的异常处理;√对静态资源的支持;

Spring Web MVC 处理请求的流程

具体执行步骤如下:

1、 首先用户发送请求————>前端控制器,前端控制器根据请求信息(如 URL)来决定选择哪一个页面控制器进行

处理并把请求委托给它,即以前的控制器的控制逻辑部分;图 2-1 中的 12 步骤;2、 页面控制器接收到请求后,进行功能处理,首先需要收集和绑定请求参数到一个对象,这个对象在 Spring Web MVC

中叫命令对象,并进行验证,然后将命令对象委托给业务对象进行处理;处理完毕后返回一个 ModelAndView(模型数据和逻辑视图名);图 2-1 中的 345 步骤;

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

2-1 中的步骤 674、 前端控制器再次收回控制权,将响应返回给用户,图 2-1 中的步骤 8;至此整个结束。

问题:

1、 请求如何给前端控制器?

2、 前端控制器如何根据请求信息选择页面控制器进行功能处理?

3、 如何支持多种页面控制器呢?

4、 如何页面控制器如何使用业务对象?

5、 页面控制器如何返回模型数据?

6、 前端控制器如何根据页面控制器返回的逻辑视图名选择具体的视图进行渲染?

7、 不同的视图技术如何使用相应的模型数据?

Spring Web MVC 核心架构图

Spring Web MVC 优势

1、清晰的角色划分:前端控制器(DispatcherServlet)、请求到处理器映射(HandlerMapping)、处理器适配器(HandlerAdapter)、视图解析器(ViewResolver)、处理器或页面控制器(Controller)、验证器( Validator)、命令对象(Command 请求参数绑定到的对象就叫命令对象)、表单对象(Form Object 提供给表单展示和提交到的对象就叫表单对象)。

2、分工明确,而且扩展点相当灵活,可以很容易扩展,虽然几乎不需要;

3、由于命令对象就是一个 POJO,无需继承框架特定 API,可以使用命令对象直接作为业务对象;

4、和 Spring 其他框架无缝集成,是其它 Web 框架所不具备的;

5、可适配,通过 HandlerAdapter 可以支持任意的类作为处理器;

6、可定制性,HandlerMappingViewResolver 等能够非常简单的定制;

7、功能强大的数据验证、格式化、绑定机制;8、利用 Spring 提供的 Mock 对象能够非常简单的进行 Web 层单元测试;

8、本地化、主题的解析的支持,使我们更容易进行国际化和主题的切换。

9、强大的 JSP 标签库,使 JSP 编写更容易。

 

时间: 2024-12-06 16:37:14

springmvc简述的相关文章

springmvc请求参数异常处理

接着上一篇<springmvc 通过异常增强返回给客户端统一格式>讲通过spring ControllerAdvice对各种异常进行拦截处理,统一格式返回给客户端. 接下来我们更精细的讲,通过@ExceptionHandler拦截异常,提示参数客户端哪些参数没有传或参数数据类型不一致,方便客户端服务端联调测试. 简述一下上一篇拦截异常主要流程: 1.自定义一个类RestExceptionHandler,并使用@ControllerAdvice注解,表示这个类是控制器增强: 2.在RestExc

【JavaEE】Springmvc搭建方法及example

现在介绍SSH的文章很多,但是适合自己需求的却经常找不到,这些东西呢,会了之后总会感觉别人的程序哪里哪里别扭,会之前呢就感觉很混乱,而且SSH的官方文档,至少在我看来是“会者勉强能看.不会者一片迷茫”的,最主要的是没有什么demo,也可能因为我太low了,高手勿喷,我的感觉就是根据文档呢很容易明白如果写了A就能怎么样写了B又能怎么样,但是这个A或者B到底写在哪能让程序跑起来呢,更是会者不难.难者不会.我隔了两年没有做这方面的项目,最近重新拾起来,不再用struts,用spring.spring

和大彪一起来学习-SpringMvc之第三回(注解使用详解)

简述: 在上一篇文章中,介绍了适配器和映射器的一些概念,这篇文章主要是介绍SpringMvc注解的使用,下面先从一个最简单注解程序开始,慢慢引入一些常用的注解(@Controller,@Component,@Service,@Repository,@RequestMapping,@InitBinder,@RequestParam,@PathVariable,@RequestBody ,@ResponseBody). 一.第一个注解项目 1.创建项目,加入Jar包,编写web.xml 可以加入第一

基于tomcat+springMVC搭建基本的前后台交互系统

一.摘要 1.所需软件列表: 1) tomcat :  apache-tomcat-7.0.54  服务端容器 2) Intellij: Intellij IDEA 14.0.3         开发工具 3) Syslog:  SQLyog Community      数据库工具 2. 步骤简述: 1) 新建一个 Java 项目,在项目下新建一个文件夹 test(置于tomcat webapps 文件夹目录下) ,然后在该文件夹下新建一个 WEB-INF 文件夹: 2) test文件夹下新建

初学springMVC注解大全

请求路径上有个id的变量值,可以通过@PathVariable来获取 @RequestMapping(value = "/page/{id}", method = RequestMethod.GET) @RequestParam用来获得静态的URL请求入参 spring注解时action里用到. 简介: handler method 参数绑定常用的注解,我们根据他们处理的Request的不同内容部分分为四类:(主要讲解常用类型) A.处理requet uri 部分(这里指uri tem

和大彪一起来学习-SpringMvc之第二回(控制器,适配器说明)

简述: 在上一篇文章中,我们学会了如何搭建一个简单SpringMvc HelloWorld程序,这篇文章主要是介绍一些常用的控制器,适配器学习和作用. 一.HandlerMapping处理器映射器 HandlerMapping 给前端控制器返回一个HandlerExecutionChain 对象(包含一个Handler (后端控制器)对象.多个HandlerInterceptor 拦截器)对象. 1).BeanNameUrlHandlerMapping Bean别名路径映射器 BeanNameU

springmvc 文件下载

1.使用servlet的API实现 参考:http://my.oschina.net/u/1394615/blog/311307 @RequestMapping("/download") public String download(String fileName, HttpServletRequest request, HttpServletResponse response) { response.setCharacterEncoding("utf-8"); r

SpringMVC处理multipart请求.

一.简述 multipart格式的数据会将一个表单拆分为多个部分(part),每个部分对应一个输入域.在一般的表单输入域中,它所对应的部分中会放置文本型数据,但是如果上传文件的话,它所对应的部分可以是二进制.类似这样: 二.配置multipart解析器 尽管multipart请求看起来很复杂,但在Spring MVC中处理它们却很容易.在编写控制器方法处理文件上传之前,我们必须要配置一个multipart解析器,通过它来告诉DispatcherServlet该如何读取multipart请求. S

IntelliJ IDEA下Maven SpringMVC+Mybatis入门搭建例子

很久之前写了一篇SSH搭建例子,由于工作原因已经转到SpringMVC+Mybatis,就以之前SSH实现简单登陆的例子,总结看看SpringMVC+Mybatis怎么实现. Spring一开始是轻量级的框架,在SSH中,处于中间粘合剂的作用,核心作用是IoC(控制反转).DI(依赖注入),IoC和DI是同一个概念,只是以不同角度进行解释.简单的说,就是Spring帮助你管理Bean,只要写好了配置文件或者Spring注解,那么Spring可以自动帮你创建Bean,不需要手动new.经过后来的发