之前的实例演示,我们已经基本了解了如何使用Struts框架,这次我们主要讲解一下Struts框架是如何具体实现MVC的。

在介绍之前有几个名词需要大家理解一下:

        ActionServlet:充当Struts框架的中央控制器 ,负责截取URL或分发
        ActionForm:用于封装用户的请求参数,而请求参数是通过JSP页面的表单域传递过来的。
        Action:是用户请求和业务逻辑之间的桥梁,每个Action充当客户的一项业务代理
        ActionForward:主要是用于存储转向信息,封装转发路径,即完成页面的跳转和转向
        ActionMapping:存储特定请求映射到特定Action的相关信息

了解上述几个基本概念之后,我们看一下Struts框架的基本流程,如下图所示:

        1、首先客户端发出一个request请求,将其传递到响应的容器中。
        2、容器根据我们配置的Web.xml文件,将其传递给对应的Servlet,这里传递的就是Struts的核心控制类ActionServlet,当然传递的过程中肯定会有request、response对象作为参数。
        3、ActionServlet根据截取URL,根据URL的不同取得相应的配置信息,这些配置信息存储在ActionMapping中(ActionServlet 初始时,完成struts-config.xml文件中的配置信息到ActionMapping对象的转换,并将其存储在内存中)。
        4、ActionServlet 会根据URL取得ActionMapping中的配置信息之后,会创建相应的ActionForm和Action对象,并将页面数据存储到ActionForm对象。
        5、ActionServlet会将request、response、ActionForm、ActionMapping作为参数,执行Action的execute()方法,执行相应的操作(可以调用Model层)。
        6、Action执行完毕之后,根据ActionMapping中的相关信息,完成ActionForward对象的创建并将其返回。
        7、ActionServlet接受到ActionForward对象之后,会根据ActionForward中的path属性,渲染成相应的jsp页面。

        8、浏览器接受相应的jsp页面之后,将其显示出来。

到此为止,Struts的基本实现过程我们已经基本了解,下次我们根据这个流程来自己写一个简单的Struts框架的实例。

转载于:https://www.cnblogs.com/zs234/archive/2013/05/13/3233356.html

分步学习Struts(三) 原理分析相关推荐

  1. 利用计算机语言实现ID3算法,机器学习之决策树学习-id3算法-原理分析及c语言代码实现.pdf...

    机器学习之决策树学习-id3算法-原理分析及c语言代码实现.pdf 还剩 23页未读, 继续阅读 下载文档到电脑,马上远离加班熬夜! 亲,很抱歉,此页已超出免费预览范围啦! 如果喜欢就下载吧,价低环保 ...

  2. C语言C++编程学习:排序原理分析

    C语言是面向过程的,而C++是面向对象的 C和C++的区别: C是一个结构化语言,它的重点在于算法和数据结构.C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现 ...

  3. opencv opencl加速_回放 | OpenCV Webinar 3:OpenCV深度学习应用与原理分析

    OpenCV DNN模块提供了深度学习的推理,支持Caffe.Tensoflow.Torch.Darknet.ONNX等格式的模型,无需用户安装对应的深度学习框架,也无需进行模型格式转换,直接调用DN ...

  4. Linux服务器开发【有用知识】—MySQL事务原理分析

    前言 今天的目标是学习MySQL事务原理分析,但是却似乎总是非常不顺利,概念和实操实在多到令人发指,故干脆轻松学完一节课,等到时机到了再重新刷一遍吧! 一.事务是什么? 将数据库从一致性状态转化成另一 ...

  5. 后门BROOTKIT代码学习和原理分析

    周末闲来无事,想找点东西学习一下,随手翻到了之前看到的一篇关于brootkit的文章,知道它是用Bash写的一个后门程序.刚好最近在做Bash相关的工作,就想着学习一下这方面的知识,稍作整理之后就有了 ...

  6. MyBatis运行原理(三)接口式编程及创建代理对象原理分析

    一.面向接口开发步骤 定义代理接口,将操作数据库的方法定义在代理接口中. 在SQL 映射文件中编写SQL 语句. 将SQL 映射文件注册在MyBatis 的全局配置文件中. 编写测试代码. 二.环境准 ...

  7. simulink电机仿真学习 - SVPWM原理分析及仿真分析

    天上不会掉馅饼,努力奋斗才梦想成真   电机控制算法中,SVPWM是跑不掉的一关,必须将其怼的明明白白,才能实际让电机转起来,这里就作为SVPWM学习的记录.   强烈推荐大家去看qlexcel大佬写 ...

  8. unity物理射线之原理分析(擅码网学习笔记)

    @[TOC]unity物理射线之原理分析(擅码网学习笔记) using System.Collections; using System.Collections.Generic; using Unit ...

  9. 分布式定时任务—xxl-job学习(三)——调度中心(xxl-job-admin)的启动和任务调度过程源码分析

    分布式定时任务-xxl-job学习(三)--调度中心(xxl-job-admin)的启动和任务调度过程源码分析 RabbitsInTheGrass 2020-06-30 10:31:08  813   ...

最新文章

  1. oracle与join相反的函数,ORACLE JOIN 与 +
  2. 5G NR — 射频系统
  3. np.newaxis——np.ndarray增加维数
  4. jest测试ajax,ajax – 如何使用Jest来测试React呈现的异步数据?
  5. eclipse 导入maven项目_手把手的Spring Boot Web 项目教程,Hello Spring Boot
  6. android listview自动加载更多,如何实现 Android ListView『上拉加载更多』?
  7. 重新绘制TabControl的Tabpage标签,添加图片及关闭按钮
  8. mongo快速翻页方法(转载)
  9. 掌握后可为孩子收藏的MySQL入门全套
  10. 昂贵的聘礼(枚举区间+最短路)
  11. 将 PAGE_VERIFY 数据库选项设置为 CHECKSUM
  12. 阐述HTML语言的基本语法规则,HTML基本语法和语义写法规则与实例
  13. *关于C++堆和栈的理解
  14. python入门教程(非常详细)-Python入门教程:超详细1小时学会Python
  15. 用一套键盘鼠标同时控制两台电脑
  16. .net web页面嵌入海康视频(winform)
  17. 单纯形法的四种特殊情形
  18. springboot+责任链模式初体验
  19. 员工绩效考核指标设计主要原则(zt)
  20. 老湿人----山河拱手,为君一笑

热门文章

  1. 互联网与CTI技术结合之商业应用
  2. ASP调用存储过程详解。
  3. 推荐几款软件和几个网站
  4. 深度学习笔记6:Learning color features with Sparse Autoencoders
  5. Java机器学习库ML之十一线性SVM
  6. 机器学习知识点(八)感知机模型Java实现
  7. (转载)Web 开发人员需知的 Web 缓存知识
  8. 小程序如何写tab选项卡
  9. 视图解析自定义视图和自定义视图解析器——未完待续
  10. 单例设计模式八种方式——5) 懒汉式(线程安全,同步代码块) 6) 双重检查 7) 静态内部类 8) 枚举