上篇中,用jsp+servlet演示了一下Struts的基本原理,这一篇我们介绍一下Struts执行的基本流程。

假设现在有以下情景:

用户正在浏览一个用STRUTS的技术构建的网站主页,主页上有个登陆表单,用户填好登陆名和密码,单击“登陆”按钮,就激活了以下一系列过程:

(1)用户的请求以HTTP方式传输到服务器上,接受请求的是ActionServlet.

(2)ActionServlet接收到请求后,会查找Struts-config.xml文件来确定服务器上是否有用户请求的操作,此处用户请求操作应为登陆操作。如果没有,则返回一个用户请求无效的出错信息。

(3)当ActionServlet请求找到用户请求的Action后,首先将用户输入的表单参数打包成一个ActionFrom对象,这个ActionFrom对象其实也就是一个JavaBean,里面包含两个字段,分别是用户名和密码。接着ActionServlet再根据struts-config.xml中的配置信息决定是否要执行ActionFrom对象中的Validate方法。若Validate方法执行有错,则返回。否则,继续下一步。

(4)系统生成一个用户所请求的Action的实例对象,将前面的ActionFrom对象传递给它,运行它的Execute()方法。这一步其实就是用户登陆的控制器,在执行exectue()方法时,可以调用后台模型验证登陆名和密码是否正确等信息。

(5)execute()执行结束前会生成一个ActionForward类型的对象并将之返回给ActionServlet,该对象的作用是告诉ActionFroward就代表跳转到一个登陆成功的页面。ActionServlet将对之进行分析,其实就相当于接收到一个新的请求,重复(2)~(5)的过程,直到将某个界面返回给用户为止!

以上就是STRUTS的基本工作流程,解释得比较粗,用活动图描述如下:

我们可以设置断点,在myeclipse等环境中跟一下执行执行流程,得到一个更细粒度地执行流程,见时序图:

转载于:https://www.cnblogs.com/huidaoli/articles/3369865.html

一口一口吃掉Struts(二)——STRUTS基本工作流程相关推荐

  1. 服务容错保护断路器Hystrix之二:Hystrix工作流程解析

    一.总运行流程 当你发出请求后,hystrix是这么运行的  详细解释个步骤 1.创建  HystrixCommand or HystrixObservableCommand Object   Hys ...

  2. kafka学习(二)kafka工作流程分析

    本文借鉴:再过半小时,你就能明白kafka的工作原理了(特此感谢!) 一.发送数据 PS:Producer在写入数据的时候永远的找leader,不会直接将数据写入follower 1.follower ...

  3. Git 之二 架构、工作流程、.git 目录文件

    写在前面   Git 的官网上有很详细的使用教程(当然有翻译版本),具体地址是 https://git-scm.com/book/zh/v2.唯一不足就是,很多讲解并没有实机演示.但是,毫无疑问,官网 ...

  4. yocto(二)——bitbake工作流程

    本文参考yocto官方手册,如有理解不当之处,欢迎留言指出. 项目概述和概念手册:https://docs.yoctoproject.org/overview-manual/index.html 项目 ...

  5. Struts 2 的学习笔记(二) struts的配置流程和strut是2的工作原理

    2019独角兽企业重金招聘Python工程师标准>>> 配置及流程 1.       Web.xml中配置 <!-- struts2的核心过滤器  前端控制器 作用:接管请求. ...

  6. android 串口转usb,方口并口打印线

    我们在第一次安装使用打印机时候,可能不清楚打印线怎么使用,下面教大家如何使用方口并口打印线以及USB转9针串口线. 一.方口并口打印线设置教程 1:检测打印线 将打印线先连接好,鼠标右键点击计算机-设 ...

  7. 常见国家S口-O口规范与CID标准一览

    常见国家S口-O口规范与CID标准一览(本文为内部资料,为转载) 目录 1............................................................... ...

  8. 学习Struts框架系列(一):模拟Struts工作流程

    进入j2ee的学习,听到了不少框架,可谓百家争鸣,框架对基本的操作进行了封装,如果不懂得实现原理,尽管可以配配文件,让网站跑起来,但未免有时一头雾水,不知其因,所以想要明白其理,甚至灵活运用,必须对框 ...

  9. POE交换机分类有哪些?4口/8口/16口/24口千兆POE交换机有哪些选择?

    POE交换机分类有哪些?4口/8口/16口/24口千兆POE交换机有哪些选择? POE供电技术凭借简化用电设备的部署,以及节能.安全.可靠等优势,成为安防监控.无线覆盖以及智能电网等场景的宠儿.在安防 ...

  10. SW3518全协议OPPO闪充、支持QC-A+C-PD 口任意口快充输出车充IC

    深圳市展嵘电子有限公司 有需要的上帝可联系小陈:136-6225-3950 : 3412-1522-98 支持 PD 的多快充协议双口充电解决方案 概述 SW3518 是一款高集成度的多快充协议双口充 ...

最新文章

  1. 80客团队博客建设的思路
  2. 【村通网】凭啥说python3.6+字典(dict)是有序的?
  3. QT的QSGGeometry类的使用
  4. 前端基础-html-表格的标题和表头单元格标签
  5. 一种用javascript实现的比较兼容的回到顶部demo + 阻止事件冒泡
  6. 题目1022:游船出租(结构体使用)
  7. 继电反馈法自整定_用STM32F407玩控制—继电反馈法PID参数自动整定
  8. 人生苦短,我用python-- Day6 面向对象
  9. C++编程技术应用有哪些?
  10. 第五章 基于时序差分和Q学习的无模型预测与控制-强化学习理论学习与代码实现(强化学习导论第二版)
  11. gps模拟器 matlab,基于Matlab/Simulink的数字中频GPS信号软件模拟器
  12. c语言中双引号是什么作用,C语言中单引号与双引号的区别
  13. android win7 共享网络打印机,详解win7共享打印机如何设置
  14. matlab中abs函数,matlab 中的abs函数什么意思 编程知识
  15. 【爬虫】网页抓包工具--Fiddler--Request和Response
  16. 拿什么拯救你的硬盘?十大绝招帮你忙
  17. 做个合格的吃货~利用Python爬取美食网站3032个菜谱并分析
  18. 如何解决zt210打印标签机问题,状态灯和耗材灯都变为红色,打印空白 打印不全 且偏了
  19. unity 输入框弹出输入法_国产输入法那么多,我为什么选择了「不接地气」的 Gboard?...
  20. 西门子DR系统怎么进计算机管理器,西门子Select DR操作规程

热门文章

  1. window.location.href的使用方法
  2. java位图去重_Redis系列(3) Bloom/BitMap/Geo
  3. boost::program_options 用法详解
  4. 【备忘录】sublime text的使用
  5. linux cpp建立文件夹,Linux小知识之CMake创建工程的一般流程
  6. linux 查看hive版本号,如何从命令提示符知道Hive和Hadoop版本?
  7. 地面控制点的定义与作用_彩色透水混凝土路面在海绵城市建设中能起多大作用?...
  8. 【渝粤教育】国家开放大学2018年秋季 0579-22T电路及磁路(2)(一) 参考试题
  9. 【渝粤教育】国家开放大学2018年春季 0175-22T社会调查研究与方法 参考试题
  10. 【Python实例第35讲】高斯过程分类:Iris数据集