戏说 Spring MVC 框架

Spring MVC 是 Spring 框架的一部分,和 Struts 一样都是属于 web 层框架,根据项目分层的思想,一个项目基本可以分为持久层,业务层和 web 层。而 Spring MVC 主要作用在 web 层,也叫表现层。

web 层核心的功能自然是处理用户的请求并返回数据,那我们就要介绍一下 Spring MVC 中是如何处理请求并返回数据的。首先来看一下它的大致流程。

上图是框架中的大致方向,从用户发出请求开始,前端处理器接收请求,但是自己不干活,会把请求发送到不同的处理器,处理器中会调用业务方法进行处理,得到结果返回给前端控制器,控制器再将结果发送给 JSP 来渲染页面,最终将含有结果的 HTML 页面返回给浏览器。

仔细说一下,首先你要告诉我处理什么样的请求,不能来个阿猫阿狗我全接收了,这就需要我们在 web.xml 文件中配置一下什么样的请求才能进入框架。

请求是进来了,但是那是一串 URL 呀,框架需要分析这个请求呀,分析请求这个活前端控制器依旧不干,而是由处理器映射器 HandlerMapping 来处理。这个对象是 Spring MVC 提供好的,我们只需要配置一下就好,不要忘了 Spring 中强大的 IoC 功能。

处理器映射器的作用就在于,你给我一串 URL ,我来分析 URL,然后找到处理这个请求的包名+类名+方法名返回给控制器。找不到就报 404 呗。而这种 URL 和方法的映射关系,我们一般使用注解@RequestMapping 在方法的上面配置。

你以为控制器知道具体的方法以后就会执行嘛,想太多,这时候处理器适配器就出现了,这就是控制器下面的二腿子啊,它也不干活,那谁来处理啊,那肯定是我们牛逼哄哄的程序员了。

你自己配的方法的 URL ,你不写方法你还想飞不成啊!

肯定是需要自己写处理 URL 的逻辑呀,有了包名+类名+方法名之后,前端控制器和处理器适配器说 “去看看这个方法在那里,处理一下”。处理器适配器一看,这不就是隔壁家的二狗子嘛,然后把二狗子叫来了,去处理一下请求吧。

好了,终于到找真正干活的人了,就是我们可爱的程序员啊,然后,不出意外的情况下,方法返回了一个结果给到前端控制器。这时候老大又发话了,“视图解析器你过来一下,给你个结果,去把结果渲染到页面上去。“

视图解析器拿到结果和页面(不一定是 JSP,但是常见的是 JSP)一顿操作,该填充的填充,就得到了一个 HTML 页面,然后这些完美的二进制通过网线就从远方的服务器传到了浏览器中供用户欣赏。

以上说的就是一个请求在 web 层中 Spring MVC 框架处理的逻辑,要注意呦,我们手写的处理器 Controller 中会调用 Service 层的东西,那就是业务层的范畴了。详细的还可以看看下面这张图。

但事情哪有那么顺利呢,总会出现异常啊,什么 404,500,为了使我们的用户大人蒙在鼓里,我们还可以配置一个全局的异常处理类。只需要实现 HandlerExceptionResolver 即可,当然,我们也要在 Spring 中注册一下实现类。

这样在发生异常的时候,我们可以设置跳转到一个卡哇伊的页面,殊不知其实是系统出现问题了……

正常的和不正常的 Spring MVC 都能处理,但你以为这样就够了嘛,不,它还为我们提供了许多其它的功能。

还有什么上传图片啊,简直就是逆天啊,直接把图片当成一个参数传到后台了,当然,肯定需要一定的条件,比方说前台 form 必须有 enctype,后台接收图片的参数时必须使用 MultipartFile 接口且形参名一致,而且实现类还是固定的,我们需要注入一下 CommonsMultipartResolver 类。

还有一个拦截器的概念,这就是 AOP 编程的一个体现呀,一夫当关,万夫莫开。而我们需要做的就是在配置文件中使用 <mvc:interceptor> 标签配置一下拦截器拦截的路径和拦截器类。

在拦截器类中我们就可以处理具体的逻辑了,比方说,验证用户是否登录呀。给用户分类呀,不用的用户跳转的页面不一致。

最后说一下 Spring MVC 和 Struts2 的区别。

1、Spring MVC 的入口是一个 Servlet 即前端控制器,而 Struts2 入口是一个 Filter 过滤器。

2、Spring MVC 是基于方法开发 (一个 url 对应一个方法),请求参数传递到方法的形参,可以设计为单例或多例(建议单例),Struts2 是基于类开发,传递参数是通过类的属性,只能设计为多例。

3、Struts2 采用值栈存储请求和响应的数据,通过 OGNL 存取数据, Spring MVC 通过参数解析器是将 request 请求内容解析,并给方法形参赋值,将数据和视图封装成 ModelAndView 对象,最后又将 ModelAndView 中的模型数据通过 request 域传输到页面。Jsp 视图解析器默认使用 jstl 表达式。

原文地址:https://www.cnblogs.com/YJK923/p/10197590.html

时间: 2024-10-10 02:59:47

戏说 Spring MVC 框架的相关文章

搭建基于spring MVC框架 + RESTful架构风格技术总结

实战篇: 在SpringMVC框架中搭建RESTful架构风格来完成客户端与服务器端的低耦合度.可扩展性.高并发与大数据流量的访问. 用RESTful架构的创建步骤: 1.创建一个全新的Web工程 2.导包,导入所需要的所有第三方jar包.(springMVC+Hibernate的基本包是必须的) 3.作配置,针对不同的项目需求和不同的搭建设计,开发人员可以按照自己的编码风格来设计符合项目开发具体 应该用多少篇配置文件.但是这几篇配置文件是必不可少的: 3-1.web.xml配置文件:最基本的配

Spring MVC 框架搭建及详解

一.Spring MVC环境搭建:(Spring 2.5.6 + Hibernate 3.2.0) 1. jar包引入 Spring 2.5.6:spring.jar.spring-webmvc.jar.commons-logging.jar.cglib-nodep-2.1_3.jar Hibernate 3.6.8:hibernate3.jar.hibernate-jpa-2.0-api-1.0.1.Final.jar.antlr-2.7.6.jar.commons-collections-3

Spring MVC 框架搭建及具体解释

如今主流的Web MVC框架除了Struts这个主力 外.其次就是Spring MVC了,因此这也是作为一名程序猿需要掌握的主流框架.框架选择多了.应对多变的需求和业务时,可实行的方案自然就多了. 只是要想灵活运用Spring MVC来应对大多数的Web开发,就必需要掌握它的配置及原理. 一.Spring MVC环境搭建:(Spring 2.5.6 + Hibernate 3.2.0) 1. jar包引入 Spring 2.5.6:spring.jar.spring-webmvc.jar.com

Spring mvc框架 controller间跳转 ,重定向 ,传参

 一.需求背景 1. 需求:spring MVC框架controller间跳转,需重定向.有几种情况:不带参数跳转,带参数拼接url形式跳转,带参数不拼接参数跳转,页面也能显示. @RequestMapping(value = "/activityType", method = RequestMethod.GET) public String activityType(HttpServletRequest request, ModelMap model,RedirectAttribut

Spring MVC框架搭建

Spring MVC篇一.搭建Spring MVC框架 本项目旨在搭建一个简单的Spring MVC框架,了解Spring MVC的基础配置等内容. 一.项目结构 本项目使用idea intellij创建,配合maven管理.整体的目录结构如图: 其中java文件夹是sources文件夹,resources是资源文件夹.spring文件夹里是Spring上下文配置和Spring MVC配置文件. 需要注意的是,项目自动生成以后会有两个web文件目录,一个是web文件夹(我这里已经删除了),另一个

程序员的福音Spring MVC 框架

在 电商软件 shop++ 中采用的是 Spring MVC 框架,此框架的显著特点就是,简化开发的复杂度,快速上手. springMVC是非常优秀的MVC框架,具体用法如下: 一.方法级别上应用@Controller ("adminArticleController")@RequestMapping("/admin/article")public class ArticleController extends BaseController {    @Reques

【WEB】初探Spring MVC框架

Spring MVC框架算是当下比较流行的Java开源框架.但实话实说,做了几年WEB项目,完全没有SpringMVC实战经验,乃至在某些交流场合下被同行严重鄙视“奥特曼”了.“心塞”的同时,只好默默的打开IDE从HelloWorld开始. 初步认识 宏观视野决定微观实现的质量,首先对Spring MVC框架组件及其流程做一个简单的认识.以下是从互联网中某Spring MVC教材扣来一张介绍图(懒得重复造轮子了): 从上图可以看出,Spring MVC框架的核心组件有DispatcherServ

Spring MVC篇一、搭建Spring MVC框架

本项目旨在搭建一个简单的Spring MVC框架,了解Spring MVC的基础配置等内容. 一.项目结构 本项目使用idea intellij创建,配合maven管理.整体的目录结构如图: 其中java文件夹是sources文件夹,resources是资源文件夹.spring文件夹里是Spring上下文配置和Spring MVC配置文件. 需要注意的是,项目自动生成以后会有两个web文件目录,一个是web文件夹(我这里已经删除了),另一个是默认的webapp文件夹.我这里使用默认的目录,也就是

spring MVC 框架的搭建(myeclipse +maven)--(上)

spring mvc 的框架搭建过程如下,这个框架建议新手去看,因为搭建的是一个比较简单的矿建,当然里面涉及到的spring +hibernate相关的知识,是值得学习的. 这个项目是基于maven的主要是maven 能够很好的帮我们管理jar 包. spring mvc 框架搭建过程如下: 第一步:使用maven引入springMVC所需要的jar包 引入与springmvc相关的jar包,在pom.xml的<dependencise>标签下添加以下3个jar包 (1) spring-web