springmvc与struts2执行流程比较
之前写过一篇struts2的执行流程的文章了,这里对struts2的流程就不做过多的分析,这篇文章主要分析spring-mvc的执行流程以
及struts2与spring-mvc的差别。
1.struts2执行流程图:
上篇文章链接:https://blog.csdn.net/qq_41907991/article/details/81161149
这里大致说一下流程:
1.用户发送请求,经过web.xml文件匹配后,发现是由sturts2框架的strutsPrepareAndExcuteFiter过滤器来处理请求的,进行初始化(读取
配置文件)
2.请求转发给actionMapper
3.actionMapper告诉strutsPrepareAndExcuteFiter需要处理这个请求,建立actionProxy
4.actionProxy对象询问configurationManager对象,找到对应的action,建立actionInvocation对象
5.执行拦截器
6.执行方法,返沪result对象,结合模板跟标签库生成最终页面
7.执行拦截器
8.actionInvocation对象执行完毕,生成httpResponse对象,经过过滤器,返回给客户端
1.spring-mvc执行流程图
流程分析:
- 用户发送请求至前端控制器DispatcherServlet
 - DispatcherServlet收到请求调用HandlerMapping处理器映射器。
 - 处理器映射器根据请求url找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。
 - DispatcherServlet通过HandlerAdapter处理器适配器调用处理器
 - 执行处理器(Controller,也叫后端控制器)。
 - Controller执行完成返回ModelAndView
 - HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet
 - DispatcherServlet将ModelAndView传给ViewReslover视图解析器
 - ViewReslover解析后返回具体View
 - DispatcherServlet对View进行渲染视图(即将模型数据填充至视图中)。
 - DispatcherServlet响应用户
 
组件分析:
DispatcherServlet:前端控制器
用户请求到达前端控制器,它就相当于mvc模式中的c,dispatcherServlet是整个流程控制的中心,由它调用其它组件处理用户的请求,dispatcherServlet的存在降低了组件之间的耦合性。
HandlerMapping:处理器映射器
HandlerMapping负责根据用户请求找到Handler即处理器,springmvc提供了不同的映射器实现不同的映射方式,例如:配置文件方式,实现接口方式,注解方式等。
Handler:处理器
Handler 是继DispatcherServlet前端控制器的后端控制器,在DispatcherServlet的控制下Handler对具体的用户请求进行处理。
由于Handler涉及到具体的用户业务请求,所以一般情况需要程序员根据业务需求开发Handler。
HandlAdapter:处理器适配器
通过HandlerAdapter对处理器进行执行,这是适配器模式的应用,通过扩展适配器可以对更多类型的处理器进行执行。
View Resolver:视图解析器
View Resolver负责将处理结果生成View视图,View Resolver首先根据逻辑视图名解析成物理视图名即具体的页面地址,再生成View视图对象,最后对View进行渲染将处理结果通过页面展示给用户。
View:视图
springmvc框架提供了很多的View视图类型的支持,包括:jstlView、freemarkerView、pdfView等。我们最常用的视图就是jsp。
springmvc与struts2不同
- springmvc的入口是一个servlet即前端控制器,而struts2入口是一个filter过虑器。
 - springmvc是基于方法开发(一个url对应一个方法),请求参数传递到方法的形参,可以设计为单例或多例(建议单例),struts2是基于类开发,传递参数是通过类的属性,只能设计为多例。
 - Struts采用值栈存储请求和响应的数据,通过OGNL存取数据, springmvc通过参数解析器是将request请求内容解析,并给方法形参赋值,将数据和视图封装成ModelAndView对象,最后又将ModelAndView中的模型数据通过reques域传输到页面。Jsp视图解析器默认使用jstl。
 
springmvc与struts2执行流程比较的更多相关文章
- struts2执行流程和架构图
		
一.struts2执行流程 二.架构图 只需要编写黄色部分的代码:
 - struts2  之 【struts2简介,struts2开发步骤,struts2详细配置,struts2执行流程】
		
入门框架学习避免不了的问题: 1. 什么是框架? 简单的说,框架就是模板,模子,模型.就是一个可重用的半成品. 2. 如何学习框架? 学习框架其实就是学习规则,使用框架就是遵循框架的规则,框架是可变的 ...
 - Struts2 执行流程
		
struts2执行原理(执行流程) 一个请求在Struts2框架中的处理大概分为以下几个步骤: 1 客户端发送请求:(HttpServletRequest)2 这个请求经过一系列的过滤器(Filter ...
 - Struts2 执行流程 以及 Action与Servlet比较 (个人理解)
		
上图提供了struts2的执行流程.如下: 1:从客户端发出请求(HTTPServletRequest). 2:请求经过各种过滤器(filter),注:一般情况下,如SiteMesh等其他过滤器要放在 ...
 - SpringMVC学习笔记:SpringMVC框架的执行流程
		
一.MVC设计模式 二.SpringMVC框架介绍 三.SpringMVC环境搭建 四.SpringMVC框架的请求处理流程及体系结构
 - SpringMVC启动和执行流程
		
Spring框架大家用得很多,相当熟悉,但是我对里面的运作比较好奇,例如bean的加载和使用,和我们定义的配置文件有什么联系;又例如aop在什么时候起作用,原理又是怎样.经过一个了解后,整理了启动和执 ...
 - SpringMVC拦截器执行流程
		
1:MyInterceptor1.MyInterceptor2这2个拦截器都放行 MyInterceptor1......preHandleMyInterceptor2......preHandle ...
 - SpringMVC架构&组件&执行流程
		
SpringMVC架构: 组件: DIspatcherServlet:前端控制器.相当于mvc模式的c,是整个流程控制的中心,负责调用其他组件处理用户的请求,降低了组件之间的耦合性. HandlerM ...
 - struts2  执行流程及工作原理
		
在Struts2框架中的处理大概分为以下的步骤 1 用户发送请求: 2 这个请求经过一系列的过滤器(Filter)(这些过滤器中有一个叫做ActionContextCleanUp的可选过滤器,这个过 ...
 
随机推荐
- 解决从服务器获取的数组是 __NSCFConstantString以及""没有空格字符串的问题
			
AJ分享,必须精品 问题 项目遇到了个bug,从服务器获取到的数据是这样的 { status = 1, data = [ { uid = 161, type = 2, id = 79, addtime ...
 - 2019CCPC-江西省赛(重现赛)- 感谢南昌大学
			
A题: 题意: 给你两棵树,然后用一条边将这两棵树连接起来,然后计算 每两点之间的距离,然后求和,问这个和的最小值. 思路:根据重心的性质,树上的所有点到重心的距离最短,因此我们找到两棵树的重心,然后 ...
 - mybatis源码配置文件解析之三:解析typeAliases标签
			
在前边的博客在分析了mybatis解析settings标签,<mybatis源码配置文件解析之二:解析settings标签>.下面来看解析typeAliases标签的过程. 一.概述 在m ...
 - .NET Core 3 WPF MVVM框架 Prism系列之对话框服务
			
本文将介绍如何在.NET Core3环境下使用MVVM框架Prism的对话框服务,这也是prism系列的最后一篇完结文章,下面是Prism系列文章的索引: .NET Core 3 WPF MVVM框 ...
 - 如何用TensorFlow实现线性回归
			
环境Anaconda 废话不多说,关键看代码 import tensorflow as tf import os os.environ['TF_CPP_MIN_LOG_LEVEL']='2' tf.a ...
 - es6最 全教程2020年
			
带手机验证码登陆, 带全套购物车系统 带数据库 前后端分离开发 带定位用户功能 数据库代码为本地制作好了 带支付宝支付系统 带django开发服务器接口教程 地址: https://www.dua ...
 - Ubuntu创建WiFi:16.0.4
			
点击编辑链接,点击桌面状态栏的网络图标 点击增加 类型选择WiFi 名称.SSID,均要填写,模式选择:热点 wifi安全性:选择一个安全模式,这里选的是, wpa 及 wpa2个人 必须说的是:选择 ...
 - Python pandas库159个常用方法使用说明
			
Pandas库专为数据分析而设计,它是使Python成为强大而高效的数据分析环境的重要因素. 一.Pandas数据结构 1.import pandas as pd import numpy as np ...
 - DEDE   Fatal error: Maximum execution time of 30 seconds exceeded 致命 错误: 最大的 执行 时间 为 30 秒
			
刚安的DEDE 5.7 -SP1-GBK的 为何一登录后台点任何链接都显示超过30秒 后台假死 网上搜的方法一般都是更改执行时间上限,其目的是为了解决一些大的数据,真的需要30秒以上的执行时 ...
 - Oracle数据库字段保留3位小数,程序读出来显示4位小数
			
需求 项目需求从字段2位小数,改成3位小数,这事儿好办,数据库噼里啪啦敲了一行代码,发现居然报错,原因是不能修改字段精度问题,然后使用了冒泡排序,搞定 --新增临时字段 ,); --将原字段内容拷贝至 ...