structs 基于mvc的web应用框架

structs结构

Model,划分为两个主要子系统(系统的内部数据状态与改变数据状态的逻辑动作),对应Struts里ActionForm与Action,需继承实现超类。

视图(View)端,除使用标准的JavaServer Pages(JSP),还提供了大量的标签库使用tag-lib,同时可与其他表现层组件进行整合,比如Velocity Templates,XSLT等。

控制器Controller由一个名为ActionServlet的Servlet充当,controller功能是 转发视图(View)的请求,组装响应数据模型(Model)。

struts-config.xml的配置文件:描述模型、视图、控制器对应关系。

Struts可以与各种标准的数据访问技术结合在一起,包括Enterprise Java Beans(EJB),JDBC与JNDI。

应用structs框架优缺点
1.通过应用Struts的框架,最终用户可以把大部分的关注点放在自己的业务逻辑(Action)与 映射关系的配置文件(struts-config.xml)。

2.Taglib和页面导航,Taglib是Struts的标记库,大大提高开发效率。

3.开源软件

4.Struts的漏洞处理机制常被诟病,OGNL的功能强大和请求处理机制极易产生远程执行问题。

structs执行流程

1). 读取配置(初始化ModuleConfig对象)
      采用Struts的Web应用,在Web应用启动时就会加载并初始化ActionServlet,在ActionServlet初始化 ModuleConfig的候,调用initModuleConfigFactory()初始化配置工厂,然后由配置工厂通过 initModuleConfig("", config)获得ModuleConfig对象。通过ModuleConfig对象调用下列方法去初始化相关模块。
a.initModuleMessageResources(moduleConfig); b.initModuleDataSources(moduleConfig);  c.initModulePlugIns(moduleConfig) 这些方法的功能就是:容器在加载Struts应用程序时,会先加载web.xml中与Struts相关的一些配置参数,找到struts-config.xml文件,然后通过循环来读取此文件和解析里面的内容,并初始化相关对象。

2). 用户请求
      用户提交或调用url向Web应用程序提交一个请求,请求的数据用HTTP协议上传给Web服务器。

3). 填充FormBean
      填充FormBean的过程包括实例化、复位、填充数据、保存等操作。根据*.do请求从ActionConfig中找出对应该请求的 Action子类,如有对应的Action且这个Action有一个相应的ActionForm,则ActionForm被实例化并用HTTP请求的数据 填充其属性,并保存在ServletContext中,这样它们就可以被其他Action对象或JSP调用。如果没有对应的Action,则直接转 发给JSP或静态页面。

4). 转发请求
      控制器根据配置信息ActionConfig将请求派发到具体的Action,与请求相应的FormBean将一并传给这个Action对象。

5). 处理业务
     Action一般只包含一个execute()方法,它负责执行相应的业务逻辑。执行完毕后返回一个ActionForward对象,控制器通过该ActionForward对象进行转发工作。

6). 返回响应
     Action根据业务处理的不同结果返回一个响应对象给总控制器,该目标响应对象对应一个具体的JSP页面或另一个Action。

7). 查找响应
     总根据业务功能Action返回的目标响应对象找到对应的资源对象,通常是一个具体的JSP页面。

8). 响应用户
      目标响应对象将结果展现给用户目标响应对象,即具体的JSP页面,这样客户就得到响应的结果。

WEB三大应用框架之一structs相关推荐

  1. web前端三大主流框架_web前端三大主流框架

    于前端开发工程师来说,组件化模块的框架能够帮助我们更加快速的搭建自己的网站.下面本篇文章和大家介绍一下web前端的三大主流框架:Angular.React.Vue,让大家可以对这三个框架有一定的了解, ...

  2. Web前端三大主流框架是什么?Web前端前景与就业形势

    近十年以来,IT行业发展火热,衍生了很多新职业,例如UI设计师.开发工程师.软件测试工程师等等,在众多备受瞩目的新生职业中,Web前端工程师是其中的一员.那么Web前端三大主流框架是什么呢? 一.We ...

  3. web前端三大主流框架是什么?

    转载自品略图书馆 http://www.pinlue.com/article/2020/07/1217/0311017786310.html web前端三大主流框架是什么?前端开发师的岗位职责有哪些? ...

  4. web前端三大主流框架介绍

    转自:微点阅读  https://www.weidianyuedu.com web前端三大主流框架是什么? 前端开发师的岗位职责有哪些?微点阅读小编整理了相关内容供大家参考了解,请各位小伙伴随小编一起 ...

  5. 浅谈web前端三大主流框架

    转自:微点阅读(www.weidianyuedu.com)http://www.weidianyuedu.com/ web前端三大主流框架是什么?前端开发师的岗位职责有哪些?小编整理了相关内容供大家参 ...

  6. Web前端三大主流框架是什么?它们的优点和缺点试什么?

    一.Web前端三大主流框架是什么 React: 1.声明式设计:React采用声明范式,可以轻松描述应用. 2.高效:React通过对DOM的模拟,最大限度地减少与DOM的交互. 3.灵活:React ...

  7. Web前端三大主流框架是什么?Web前端前景与就业形势分析

    近十年以来,IT行业发展火热,衍生了很多新职业,例如UI设计师.开发工程师.软件测试工程师等等,在众多备受瞩目的新生职业中,Web前端工程师是其中的一员.那么Web前端三大主流框架是什么呢? 一.We ...

  8. 三大缓存框架ehcache、memcache和redis的介绍

    三大缓存框架ehcache.memcache和redis的介绍 2016-04-12 架构说 4964 阅读 最近项目组有用到这三个缓存,去各自的官方看了下,觉得还真的各有千秋!今天特意归纳下各个缓存 ...

  9. java怎么监听多个组件,java web(五):java web三大组件之另外两个和八大监听器

    java的三大组件指Servlet.Filter.Listener.八大监听器指八个接口.前面介绍了Servlet,现在介绍一下Filter拦截器以及拦截地址的设置, Listener监听那些事件. ...

最新文章

  1. AttributeError:module“seaborn” has no attribute “lineplot”
  2. php生成图片表格自动换行_实用的财务做账表格,点击即可一键生成报表,并自动结转...
  3. python pypdf2另存为图片_用Python玩转PDF的各种骚操作
  4. Android开发文章推荐
  5. java学习(111):日期时间格式化
  6. 周鸿祎:比情怀更重要的硬件创业三定律
  7. 10_隐马尔科夫模型HMM1_统计学习方法
  8. [转]SQLite内存数据库
  9. EJB-02:EJB开发流程
  10. 伺服舵机四方运动程序以及角度确定
  11. h2o api java_H2O与Java线程同步
  12. 2019矿大软件工程考试记录
  13. 使用FFMPEG 模仿微信拍视频
  14. Metasploitable渗透测试实战:ms17-010
  15. Python pyglet 自制3D引擎入门(一) -- 绘制几何体、创建3D场景
  16. 细粒度图像分类(FGVC)---综述
  17. Adobe Premiere Pro CC入门到精通教程合集!
  18. 电子元器件贸易如何应用采购管理系统,做好采购订单交期管理?
  19. 医药公司协同电子商务系统
  20. vue项目中elementUI的日期时间选择器的默认修改以及能选择当天的未来时间24点

热门文章

  1. java毕设 springboot公寓宿舍后勤管理系统(含源码+论文)
  2. 计算机wps基础知识试题,计算机一级考试计算机基础及wpsoffice应用试题.doc
  3. 在线电商平台管理系统源码
  4. 四款python中文分词系统简单测试
  5. 【数学建模】2019国赛C
  6. 人脸识别之DeepFace、DeepID以及FaceNet网络的区别
  7. 马云——数学1分的落榜考生
  8. 温故知新:常用的SQL标准有哪些,在SQL92中是 如何使用连接的?
  9. 安装vue脚手架遇到的问题报错‘code EEXIST‘,ERR! path C:\Users\空你吉瓦\AppData\Roaming\npm\node_modules
  10. 淘晶驰串口屏入门(二)文本、字库、滚动文本、滑动文本、数字、变量与虚拟浮点数